Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么WCF服务创建自己的类型?_.net_Wcf - Fatal编程技术网

.net 为什么WCF服务创建自己的类型?

.net 为什么WCF服务创建自己的类型?,.net,wcf,.net,Wcf,在我的WCF项目中,我有一个来自不同库的类型: LibraryB.SomeClass 在服务的svc.cs文件中,我在参数中使用了上述类型: GetEmployees(LibraryB.SomeClass someClass) 在承载该服务的web应用程序中,将为该服务创建一个类型: MyWebApp.ServiceAReference.ServiceAClient serviceClient = new MyWebApp.ServiceAReference.ServiceAClient()

在我的WCF项目中,我有一个来自不同库的类型:

LibraryB.SomeClass
在服务的svc.cs文件中,我在参数中使用了上述类型:

GetEmployees(LibraryB.SomeClass someClass)
在承载该服务的web应用程序中,将为该服务创建一个类型:

MyWebApp.ServiceAReference.ServiceAClient serviceClient = new MyWebApp.ServiceAReference.ServiceAClient();
但当我引用该方法时:

serviceClient.GetEmployees(someClass);
参数的intellisense类型为:

MyWebApp.ServiceA.SomeClass
在web应用程序中,someClass的类型为LibraryB.someClass,而不是MyWebApp.ServiceA.someClass


有没有办法告诉web服务通过网络发送LibraryB.SomeClass类型?或者我应该做些不同的事情吗?

客户端并不总是能够访问服务器的类型。服务器甚至可能不是您的代码!因此,在客户端创建代理对象来表示服务器的对象

如果服务器端和客户端共享包含通过网络发送的类型的组件,则可以在添加服务引用时通知应用程序重新使用该组件


客户端并不总是能够访问服务器的类型。服务器甚至可能不是您的代码!因此,在客户端创建代理对象来表示服务器的对象

如果服务器端和客户端共享包含通过网络发送的类型的组件,则可以在添加服务引用时通知应用程序重新使用该组件


当我这样做时,它就无法识别ServiceAClient(我已经为此更新了帖子)。您是否在客户端项目中添加了对包含该类型的DLL的引用?是的。该服务和web应用都有对LibraryB的引用。当我这样做时,它将无法识别ServiceAClient(我已为此更新了帖子)。是否添加了对客户端项目中包含该类型的DLL的引用?是。服务和web应用都有对LibraryB的引用。默认情况下,WCF服务本身和客户端只共享合同(例如,定义服务方法及其所涉及的数据类型的接口)。客户端完全独立于服务器。基于数据协定,客户端将重新创建跨连接序列化的类型,以便能够在客户端使用它们-但这些类型在客户端范围内是独立的、不同的类型,只是在连接上序列化为相同的XML消息格式。默认情况下,WCF服务本身和客户机只共享合同(例如,定义服务方法及其所涉及的数据类型的接口)。客户端完全独立于服务器。基于数据契约,客户机将重新创建跨线路序列化的类型,以便能够在客户机端使用它们——但这些类型在客户机范围内是独立的、不同的类型,只是在线路上序列化为相同的XML消息格式。