C # Перенаправить SOAP-запрос на другие веб-сервисы? - PullRequest
1 голос
/ 26 января 2011

возможно ли создать веб-сервисы (назовем это A), которые могут взаимодействовать с одним или несколькими веб-сервисами?

тип прокси-сервера SOAP?

веб-сервис A создаст егофункции, основанные на других веб-сервисах на сервере B и C

, поэтому клиенты просто отправят запрос A, и A узнает здесь, чтобы отправить запрос (B или C)

, возможно лисоздать такое приложение?

Ответы [ 3 ]

1 голос
/ 26 января 2011

Если я правильно понимаю, в вашем приложении есть 3 компонента:

  • Клиентское приложение
  • Веб-служба "веб-интерфейса" "WS A"
  • два других «серверных» веб-сервиса, «WS B» и «WS C»

от frontend, я имею в виду, что веб-сервис является единственным, доступным для клиента, другими словами, «фасад».

Если это правильно, вы можете ссылаться на "WS B" и "WS C" из проекта "WS A".Код в «WS A» может выступать в роли клиента для этих веб-сервисов.Это часто называют архитектурой SOA (сервис-ориентированная архитектура), где каждый сервис предоставляет функциональность и может взаимодействовать друг с другом.

Считается, что становится немного сложнее, когда у вас есть требования к инфраструктуре (например, делегирование клиента).учетные данные), но я думаю, что это самый чистый способ достичь того, что вы хотите.

1 голос
/ 26 января 2011

Это определенно возможно, и это не то, что живет или связано с веб-службами SOAP, так как это проблема реализации приложения.Что вас должно больше беспокоить, так это то, как вы собираетесь это делать.

Использование объектов передачи данных

Потратив много лет на разработку веб-сервисов, я считаю, что лучший подход в дизайне ваших веб-сервисов - следовать Мартин Фаулер по DTOшаблон , где вы обмениваетесь данными, используя DTO, специфичные для удаленной службы, используя клиентский прокси (он же Service Gateway) к веб-службе (он же Service Interface).Этот «стиль сообщений» веб-сервисов великолепен с точки зрения производительности, SOA и возможности повторного использования.Что лежит в основе того, как была построена моя структура веб-сервисов ServiceStack .

Подход RPC WCF

К сожалению, это соглашение о передовых практиках эффективно не поощряется платформой Microsoft WCF SOAP Web Services, поскольку они поощряют вас разрабатывать API-специфичныеМетод RPC вызывает , настаивая на том, чтобы вы использовали сигнатуры методов для определения ваших веб-сервисов.Конечно, вы все еще можете разработать apis «на основе сообщений», однако это требует больше усилий для этого и редко демонстрируется в их онлайн-учебниках.По моему мнению, это приводит к специфичному для клиента API, который поощряет более удаленные вызовы методов, которые в результате менее производительны.Временами мне бы очень хотелось, чтобы Microsoft следовала устоявшимся практикам, опубликованным отраслевыми экспертами, вместо того, чтобы часто приводить их в движение для разработчиков, занимающихся перетаскиванием.

Асинхронный вызов нескольких веб-служб

Возвращаясь к исходному вопросу, вы определите веб-сервис, который принимает запрос, и если вам повезет, что все ваши прокси-веб-сервисы имеют одинаковый интерфейс, вы сможете использовать один и тот же клиентский прокси в цикле путем изменения URL для каждой конечной точки службы.Обычно я рекомендую запускать каждый запрос с асинхронно (и присоединяться в конце) до , чтобы ускорить время выполнения вашей «главной веб-службы».

1 голос
/ 26 января 2011

Не знаю, понимаю ли я ваш вопрос так, как он задумывался, но возможно добавить ссылку на службу в ваш веб-сервис.В какой веб-сервис отправлять запрос, вам, вероятно, придется кодировать; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...