Позвоните в службу .Net 3.5 WCF из клиента веб-службы .Net 2.0 Standard ASMX - PullRequest
5 голосов
/ 31 марта 2009

Я создал службу, которая размещена на сервере, на котором установлен .Net 3.5, и мне нужно вызвать эту службу с клиента, на котором установлена ​​только .Net 2.0.

Есть ли способ, которым я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 31 марта 2009

Если ваша служба WCF предоставляет конечную точку с помощью basicHttpBinding, то клиент .NET 2.0 должен иметь возможность ее использовать. Как сказал Марк, «без проблем».

3 голосов
/ 31 марта 2009

Да, вы можете сделать это. Однако есть несколько предостережений:

Вы должны использовать соответствующие протоколы. Стандартные библиотеки .NET 2.0 не поддерживают многие функции защищенных веб-сервисов; на самом деле, вы в значительной степени застряли с использованием только basicHttpBinding в службе WCF, если хотите использовать установку по умолчанию .NET 2.0. Это серьезное ограничение во многих корпоративных сценариях. Тем не менее, это может быть все, что вам нужно.

Если вам нужна дополнительная безопасность, но вы все еще используете .NET 2.0, есть альтернативы. Опять же, ваша служба WCF должна соответствовать вашему клиенту .NET 2.0, но ваш клиент .NET 2.0 также должен будет использовать преимущества внешней библиотеки. В частности, вам понадобится Улучшения веб-службы , выпущенные Microsoft. Имейте в виду, однако, что эти библиотеки реализуют бета версию некоторых протоколов SOAP, в то время как WCF (преемник WSE во многих отношениях) реализует стандарты по умолчанию. Поскольку в протоколах произошли некоторые существенные изменения (в частности, WS-Addressing), вам придется предложить конечную точку customBinding в службе WCF.

К сожалению, я не могу сказать вам, какой вы будете использовать, поскольку это будет зависеть от того, какой протокол вы хотите использовать в службе, но большинство ваших проблем будет решено путем изменения версии сообщения textMessageEncoding для пользовательской привязки. Это не лучший сценарий, но он может что-то купить, если вы пытаетесь интегрировать клиента.

Суть в том, что есть много работы, чтобы заставить клиента .NET 2.0 общаться с сервисом WCF для чего угодно, кроме basicHttpBinding. Во многих случаях может быть достаточно basicHttpBinding. Для многих корпоративных сценариев этого не произойдет. Я не могу сказать, что вам поможет или нет, но можно заставить его работать - я сделал это успешно.

Но это большая боль. Ищите альтернативу, если можете.

2 голосов
/ 31 марта 2009

Да, конечно - служба, размещаемая в .NET 3.5, не требует той же версии .NET Framework на клиенте. Черт возьми - вы даже можете вызвать такой сервис из Java или PHP! Вот и вся ТОЧКА сервис-ориентированной архитектуры! : -)

Вам необходимо определить свой контракт на обслуживание (как называется служба; какие методы доступны для вызова по ней), и вам необходимо решить, как ее разместить, например, по какому адресу вы можете позвонить в эту службу и какие параметры требуются (например, HTTP или TCP, защищенный или незащищенный и т. д.) - это большая работа, даже в WCF.

Вот три вступительных статьи для WCF - зацените их!

Но вызывать эту службу из клиента .NET 2.0 АБСОЛЮТНО не проблема!

Марк

...