Может ли сериализатор данных использовать любой сторонний веб-сервис

У меня есть большой сторонний веб-сервис; reference.cs - 33 Мбайт. Используя Visual Studio 2017, прокси использует XML-сериализатор, что вызывает 5-секундную задержку при создании канала. Я открыл дело в Microsoft, и они частично показали мне, как изменить 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);
}

Ответ 1

Любые шаблоны, которые я должен искать, что делает его уверенным, что он вообще не работает, и я должен начать переписывать все, используя HTTP-запросы?

Я сделал интеграцию Amadeus. К сожалению, отправкой HTTP-запросов было единственное решение для меня. Я составляю конверты и "вставляю" данные и отправляю их в webservice, а затем заполняю ответы XDocument.

Ответ 2

У меня была эта проблема много раз. Проблема связана с размером WSDL, который у вас есть у Amadeus. Чем больше количество услуг, тем медленнее он выполняется. Если вы создаете программное обеспечение для авиационных, гостиничных и автомобильных продуктов, вы получаете большое количество услуг.

В этом отношении у вас есть два варианта:

  • Попросите Amadeus уменьшить размер WSDL для тех услуг, которые вам нужны для конкретных проектов. Немного больно.
  • Измените сам WSDL на меньший размер, исходя из ваших требований. Например, чтобы сделать поиск в отеле, просто создайте пакет WSDL самостоятельно для этих нескольких сервисов, а затем создайте еще один пакет WSDL для части бронирования отеля. Производительность значительно.

Я иду с вариантом 2, так как получение Amadeus для реализации варианта 1 является болезненным и не стоит хлопот.