我有一个大型的第三方网络服务; reference.cs 是 33 MB。使用 Visual Studio 2017,代理使用 XML Serializer,这会在创建 channel 时造成 5 秒的延迟。我在 Microsoft 开了一个案例,他们部分地向我展示了如何修改 reference.cs 以使用 Datacontract 序列化程序。在同一台机器上, channel 创建时间为 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);
}
最佳答案
Any patterns I should look for which makes it for sure it will not work at all and I should start rewriting everything using HTTP Requests?
我已经集成了 Amadeus。不幸的是,发送 HTTP 请求也是我唯一的解决方案。我正在编写信封并“注入(inject)”数据并将其发送到网络服务,然后通过 XDocument 填充响应。
关于c# - 数据契约(Contract)序列化器可以用于任何第三方网络服务吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44637243/