WCF - 跨平台问题

时间:2010-06-06 09:02:23

标签: wcf wcf-client

我有一个简单的WCF服务,自托管和.net客户端。我正在使用svcutil生成代理。当我将代理添加到客户端时,它要求我添加System.ServiceModel.dll。好吧,我可以添加它,因为它是一个测试场景,我在.Net平台上工作。

但是,假设我使用的是不支持.Net的机器,该平台将如何补偿System.ServiceModel?

请你点亮一下吗?

编辑:我有点想法。如果我正在创建WCF客户端,我需要添加ServiceModel。为了测试它,我添加了一个ASMX客户端(添加Web引用)。我的服务方法不接受任何参数。但是我在客户端中遇到错误,要求我输入结果,输出bool ResultSpecified。你能解释为什么?

编辑:能否请您指出一个例子 - 如何以及在“DataContractSerializer”上设置的内容

由于

Lijo

5 个答案:

答案 0 :(得分:2)

奇怪的问题。如果客户端不是.NET应用程序,则显然不需要System.ServiceModel。可以使用应用程序使用的任何语言使用任何其他SOAP库来编写客户端。

答案 1 :(得分:1)

它会通过抛出异常来弥补。您需要安装.NET框架来运行.NET应用程序。对于跨平台,您可以查看Mono


抱歉,我误解了你的问题。如果使用basicHttpBinding公开端点,任何符合WS-I Basic Profile 1.1的客户端都可以毫无问题地使用Web服务。这是最具互操作性的绑定。

答案 2 :(得分:1)

答案 3 :(得分:1)

我认为这里有两个问题:

  1. 如果您是自托管服务,但是您希望不使用.NET构建的客户端可以访问它,那么您可能应该考虑在IIS中托管它。或者,您需要确保您的托管应用程序还包含元数据绑定(MEX),以便非.NET平台可以访问WSDL。

  2. 如果您正在构建非.NET客户端,那么您将使用一组工具或该平台的框架。在这种情况下,您可以使用不同的工具从WSDL为您的服务创建代理。

  3. 希望有所帮助。

答案 4 :(得分:1)

要消除对Web服务代理中生成的两个输出参数的需要,请使用操作合同中的[XmlSerializerFormat]属性。重新生成代理后,方法签名应与您的定义匹配,而不是将返回类型转换为数据类型“Result”和“ResultSpecified”,指示返回变量是否存在。