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
多个端点的WCF服务_Wcf_.net 4.0 - Fatal编程技术网

多个端点的WCF服务

多个端点的WCF服务,wcf,.net-4.0,Wcf,.net 4.0,如何确保我的WCF服务可以从任何其他语言(Java、PHP、iOS使用的任何语言等)访问 我将所有内容保留为httpbinding plus,没有为客户端使用任何.net角色/成员身份验证。但有些事情我不确定。例如,我可以返回一个其他语言可读的通用列表吗?如果您无法控制用于使用您的服务的客户端技术,则无法100%确定。但是,如果您的web服务(WSDL)符合v1.1,您可以非常自信。该标准得到了广泛的支持和成熟。您可以使用优秀的测试工具来测试WSDL的一致性。任何不以net开头的WCF绑定(ne

如何确保我的WCF服务可以从任何其他语言(Java、PHP、iOS使用的任何语言等)访问


我将所有内容保留为httpbinding plus,没有为客户端使用任何.net角色/成员身份验证。但有些事情我不确定。例如,我可以返回一个其他语言可读的通用列表吗?

如果您无法控制用于使用您的服务的客户端技术,则无法100%确定。但是,如果您的web服务(WSDL)符合v1.1,您可以非常自信。该标准得到了广泛的支持和成熟。您可以使用优秀的测试工具来测试WSDL的一致性。

任何不以
net
开头的WCF绑定(netTcp、netMsmq等)都应该是良好的—它们被设计为可互操作的

最基本的一个是
basicHttpBinding
,它是非常简单的HTTP——没有什么可以添加到它。您应该能够从任何脚本语言(PHP等)调用它

更高级的绑定是
wsHttpBinding
,它实现了许多WS-*标准,可以从网络堆栈可以处理WS-*内容(如Java等)的其他语言调用

还有
webHttpBinding
,它不是通过SOAP而是通过REST端点公开您的服务。这应该可以从任何语言、任何设备、任何地方调用

当然,如果您从服务中公开多个端点,为任何试图呼叫您的人提供多种选择,您将获得最佳覆盖率。所有这些都只需在配置中完成—无需更改代码即可支持多个端点、多个绑定等

至于列表和内容:WCF交换序列化消息——基本上是XML——由XML模式管理。WSDL和XSD的组合是完全可互操作的,并且可以被多种其他语言理解

NET中的
列表
将转换为XML结构中的数组,这是完全可互操作的,不用担心。客户端可能只是返回一个数组而不是一个列表,但这不是问题


唯一的问题是,您无法真正为泛型列表建模,因为XML模式不支持泛型-您需要明确地知道要返回的内容。
列表
不起作用-列表会起作用(如果您的
客户
对象是您的数据合同的一部分,并且标记为该对象)

谢谢:)。如何将对象标记为数据协定的一部分?@Matt:在类上放置一个
[DataContract]
属性,并用
[DataMember]
装饰所有应序列化(包括在WCF消息中)的成员