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_Interop_Datacontract_Contract - Fatal编程技术网

.net 可移植/可互操作的WCF合同

.net 可移植/可互操作的WCF合同,.net,wcf,interop,datacontract,contract,.net,Wcf,Interop,Datacontract,Contract,我想知道是否有人在设计WCF合同时有一些好的提示/注意事项,同时考虑到web服务的互操作性,无论是旧的Microsoft web服务技术(如WSE)还是非Microsoft技术(如Java调用WCF web服务) 例如:在合同中将DateTime作为一种类型公开时,有没有需要考虑的特殊规则?字典和哈希表怎么样?使用各种可用的绑定可能会遇到哪些问题 因此,如果您想与非microsoft服务进行互操作,可能需要避开任何非基本类型。WCF使用序列化对数据进行编码以进行传输,例如Java将无法对哈希表进

我想知道是否有人在设计WCF合同时有一些好的提示/注意事项,同时考虑到web服务的互操作性,无论是旧的Microsoft web服务技术(如WSE)还是非Microsoft技术(如Java调用WCF web服务)


例如:在合同中将DateTime作为一种类型公开时,有没有需要考虑的特殊规则?字典和哈希表怎么样?使用各种可用的绑定可能会遇到哪些问题

因此,如果您想与非microsoft服务进行互操作,可能需要避开任何非基本类型。WCF使用序列化对数据进行编码以进行传输,例如Java将无法对哈希表进行反序列化。然而,WCF是在SOAP之上构建的,所以只要稍加努力,您就应该能够在JAVA客户机和WCF服务之间或相反地获得任何SOAP特性

只要记住编写原语的契约,就可以了。

WCF DateTime悲哀 关于DateTime的问题,您应该关注通过WCF传递DateTime。这只是许多人抱怨困难的一个环节。。。

关于类型等价 根据Juval Lowy的书《编程WCF服务》第二版第3.1.3节

WCF为客户提供隐式数据契约 基本类型,因为存在 模式的行业标准 那些类型的

他还指出,在使用自定义类型作为操作契约方法的参数方面。我认为这也适用于方法返回类型

能够将自定义类型用作 操作参数有两种 要求:首先,类型必须为 可序列化,其次,两个 客户端和服务需要有一个 该类型的本地定义 结果在相同的数据架构中

您可能还想查看第F.4节。数据契约,这是他的WCF编码标准的一部分。子弹9适用于你的问题

不要传递.NET特定类型,例如 作为类型,作为操作参数

绑定建立期望 基于WSHttpBindingBase(在Reflector.NET中搜索其四个派生)的绑定将是最具互操作性的,因为它们是为互操作性而设计的

推荐书 我强烈推荐朱瓦尔的书: