我有一个庞大的第三方网络服务; reference.cs是33 MB。使用Visual Studio 2017,代理使用XML Serializer,在创建通道时会导致5秒的延迟。我在微软开了一个案例,他们向我展示了如何修改reference.cs以使用Datacontract序列化器。在同一台机器上,通道创建时间为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);
}
答案 0 :(得分:1)
我应该寻找的任何模式确保它根本不起作用我应该开始使用HTTP请求重写所有内容吗?
我做了Amadeus整合。不幸的是,发送HTTP请求对我来说也是唯一的解决方案。我正在编写信封并“注入”数据并将其发送到Web服务,然后通过XDocument填充响应。
答案 1 :(得分:1)
我曾多次遇到过这个问题。问题是由于您从Amadeus获得的WSDL的大小。服务数量越大,执行速度越慢。如果您为航空,酒店和汽车产品创建软件,最终会获得大量服务。
在这方面你有两个选择;
我选择2,因为让Amadeus实施选项1是痛苦的,不值得麻烦。