C# 数据协定序列化程序能否用于任何第三方Web服务
我有一个大型的第三方Web服务;reference.cs是33兆字节。使用Visual Studio 2017,代理使用XML序列化程序,这会在创建频道时导致5秒延迟。我在Microsoft打开了一个案例,他们向我展示了部分如何修改reference.cs以使用Datacontract序列化程序。在同一台机器上,通道在20毫秒内创建,这将完全符合我的需要 不幸的是,这些消息会出现微小的差异,Microsoft支持部门也无能为力 有已知的限制吗?我应该寻找哪些模式来确保它根本不起作用,并且我应该开始使用HTTP请求重写所有内容 导致整体延迟的实际方法:C# 数据协定序列化程序能否用于任何第三方Web服务,c#,wcf,datacontractserializer,C#,Wcf,Datacontractserializer,我有一个大型的第三方Web服务;reference.cs是33兆字节。使用Visual Studio 2017,代理使用XML序列化程序,这会在创建频道时导致5秒延迟。我在Microsoft打开了一个案例,他们向我展示了部分如何修改reference.cs以使用Datacontract序列化程序。在同一台机器上,通道在20毫秒内创建,这将完全符合我的需要 不幸的是,这些消息会出现微小的差异,Microsoft支持部门也无能为力 有已知的限制吗?我应该寻找哪些模式来确保它根本不起作用,并且我应该开
public XmlMembersMapping ImportMembersMapping(string elementName, string ns,
XmlReflectionMember[] members, bool hasWrapperElement, bool writeAccessors,
bool validate, XmlMappingAccess access) {
ElementAccessor element = new ElementAccessor();
element.IsSoap = true;
element.Name = elementName == null || elementName.Length == 0 ? elementName :
XmlConvert.EncodeLocalName(elementName);
}
我应该寻找哪些模式来确保它根本不起作用,并且我应该开始使用HTTP请求重写所有内容
我已经完成了Amadeus集成。不幸的是,发送HTTP请求也是我唯一的解决方案。我正在编写信封,“注入”数据并将其发送到webservice,然后通过XDocument填写回复。我已经多次遇到这个问题。问题在于您从Amadeus获得的WSDL的大小。服务的数量越多,它执行的速度就越慢。如果你为航空、酒店和汽车产品开发软件,你最终会得到大量的服务 在这方面你有两个选择
我选择选项2,因为让Amadeus实施选项1是痛苦的,不值得这么麻烦。问题:为什么WCF客户端不能使用高效的–DataContractSerializer?答:简言之,WSDL和XSD之间的一些映射不正确,默认情况下,svcutil.exe最终将拒绝并回退到XML序列化程序。这应该由提供这些文件的合作伙伴团队进行审查和修复。这是MS支持团队今天的新反馈。我发现这可以解释为什么在创建代理而不是默认datacontract序列化程序时选择XMLSerializer。问题可能出在第三方。“当使用Svcutil.exe或Visual Studio中的“添加服务引用”功能为第三方服务生成客户端代码或访问第三方架构时,会自动为您选择适当的序列化程序。如果架构与DataContractSerializer不兼容,则会选择XmlSerializer”“Ernesto:没错。”。Microsoft支持人员试图为我修复WSDL,但这似乎很困难。到目前为止,我学到的是,WCF应该是100%WS-*兼容的。也许有一个不是微软的ws*lint工具可以用来向我的Web服务提供商证明(顺便说一句,是Amadeus.com)。最有可能来自W3C?