C# 是否可以仅基于ServiceContract生成WCF客户端?

C# 是否可以仅基于ServiceContract生成WCF客户端?,c#,visual-studio-2010,wcf,soap,C#,Visual Studio 2010,Wcf,Soap,我有一个包含WCF服务器的VisualStudio解决方案;服务被定义为使用ServiceContract属性的接口。服务最终通过使用HttpBinding的ServiceHost实例托管,这是预期的行为 在同一个解决方案中,有一个客户机;当前,托管服务是通过手动启动服务器并使用“添加服务引用”生成代理类来使用的,该类可以在服务器运行时立即更新 虽然这在结果符合预期的意义上起作用,但我想知道是否可以删除服务器的手动启动来更新客户端中的服务引用。是否可以通过在服务器和客户端之间共享DataCont

我有一个包含WCF服务器的VisualStudio解决方案;服务被定义为使用
ServiceContract
属性的接口。服务最终通过使用
HttpBinding
ServiceHost
实例托管,这是预期的行为

在同一个解决方案中,有一个客户机;当前,托管服务是通过手动启动服务器并使用“添加服务引用”生成代理类来使用的,该类可以在服务器运行时立即更新


虽然这在结果符合预期的意义上起作用,但我想知道是否可以删除服务器的手动启动来更新客户端中的服务引用。是否可以通过在服务器和客户端之间共享
DataContract
属性化接口来构建客户端,而不实际运行服务器并在客户端中手动导入服务定义?如果是,怎么做?

是的,您可以使用客户端和主机之间共享的公共数据契约来维护双方之间的接口。这就是我对这个基于BasicHttpBinding的大数据同步WS所做的

简而言之,我有一个宿主项目,带有服务契约和功能/处理代码,引用了一个非常小的项目(和DLL),其中只包含数据契约类定义;只需类、构造函数、变量和输入/输出参数

包含数据契约的同一个小项目也被一个客户端项目引用,该项目处理我们的客户端程序和syncws之间的所有交互。实际上,我们的每个web服务调用(从最简单的Ping()函数到最复杂的RetryFileUpload()函数)都是通过数据契约运行的。所有基于字符串的参数和二进制数据都通过数据协定类传递,然后在接收端序列化或反序列化


话虽如此,这种方法只有在客户端和主机上都有.NET代码时才有效。我们还有Android和iOS客户端被迫模仿这种行为。。。显然,这没什么大不了的。但是这就是我们采取的方法。

是的,您可以使用一个在客户端和主机之间共享的公共数据契约来维护双方之间的接口。这就是我对这个基于BasicHttpBinding的大数据同步WS所做的

简而言之,我有一个宿主项目,带有服务契约和功能/处理代码,引用了一个非常小的项目(和DLL),其中只包含数据契约类定义;只需类、构造函数、变量和输入/输出参数

包含数据契约的同一个小项目也被一个客户端项目引用,该项目处理我们的客户端程序和syncws之间的所有交互。实际上,我们的每个web服务调用(从最简单的Ping()函数到最复杂的RetryFileUpload()函数)都是通过数据契约运行的。所有基于字符串的参数和二进制数据都通过数据协定类传递,然后在接收端序列化或反序列化


话虽如此,这种方法只有在客户端和主机上都有.NET代码时才有效。我们还有Android和iOS客户端被迫模仿这种行为。。。显然,这没什么大不了的。但是这就是我们采取的方法。

是的,您可以使用一个在客户端和主机之间共享的公共数据契约来维护双方之间的接口。这就是我对这个基于BasicHttpBinding的大数据同步WS所做的

简而言之,我有一个宿主项目,带有服务契约和功能/处理代码,引用了一个非常小的项目(和DLL),其中只包含数据契约类定义;只需类、构造函数、变量和输入/输出参数

包含数据契约的同一个小项目也被一个客户端项目引用,该项目处理我们的客户端程序和syncws之间的所有交互。实际上,我们的每个web服务调用(从最简单的Ping()函数到最复杂的RetryFileUpload()函数)都是通过数据契约运行的。所有基于字符串的参数和二进制数据都通过数据协定类传递,然后在接收端序列化或反序列化


话虽如此,这种方法只有在客户端和主机上都有.NET代码时才有效。我们还有Android和iOS客户端被迫模仿这种行为。。。显然,这没什么大不了的。但是这就是我们采取的方法。

是的,您可以使用一个在客户端和主机之间共享的公共数据契约来维护双方之间的接口。这就是我对这个基于BasicHttpBinding的大数据同步WS所做的

简而言之,我有一个宿主项目,带有服务契约和功能/处理代码,引用了一个非常小的项目(和DLL),其中只包含数据契约类定义;只需类、构造函数、变量和输入/输出参数

包含数据契约的同一个小项目也被一个客户端项目引用,该项目处理我们的客户端程序和syncws之间的所有交互。实际上,我们的每个web服务调用(从最简单的Ping()函数到最复杂的RetryFileUpload()函数)都是通过数据契约运行的。所有基于字符串的参数和二进制数据都通过数据协定类传递,然后在接收端序列化或反序列化


话虽如此,这种方法只有在客户端和主机上都有.NET代码时才有效。我们还有Android和iOS客户端被迫模仿这种行为。。。显然,这没什么大不了的。但这就是我们所采用的方法。

另一种方法是使用svcutil生成代理,但即使这样,也需要WSDL元数据来生成代理和