可以将数据协定序列化程序用于任何第三方 Web 服务



我有一个大型的第三方网络服务;参考.cs是33 MB。使用 Visual Studio 2017,代理使用 XML 序列化程序,这会导致创建通道时出现 5 秒延迟。我在Microsoft打开了一个案例,他们部分地向我展示了如何修改引用.cs以使用数据合同序列化程序。在同一台机器上,通道在 20 毫秒内创建,这将完全符合我的需求。

不幸的是,消息失败了,差异

很小,Microsoft支持无济于事。

是否有已知的限制?我应该寻找任何模式,以确保它根本不起作用,我应该开始使用HTTP请求重写所有内容?

导致整体延迟的实际方法:

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请求重写所有内容?

我已经完成了艾玛迪斯的集成。不幸的是,发送HTTP请求对我来说也是唯一的解决方案。我正在撰写信封并"注入"数据并将其发送到网络服务,然后通过XDocument填充响应。

我多次遇到这个问题。该问题是由于您从 Amadeus 获得的 WSDL 的大小造成的。服务数量越多,执行速度越慢。如果您为航空、酒店和汽车产品创建软件,您最终会获得大量服务。

在这方面,您有两种选择;

  1. 请艾玛迪斯针对特定项目所需的服务减小 WSDL 的大小。有点痛。
  2. 根据您的要求将 WSDL 自行编辑为较小的大小。例如,要进行酒店搜索,只需自己为这几个服务创建一个 WSDL 包,然后自己为酒店预订部分创建另一个 WSDL 包。性能提升是可观的。

我选择选项 2,因为让艾玛迪斯实施选项 1 很痛苦,不值得麻烦。

相关内容

  • 没有找到相关文章

最新更新