2008-11-21 2 views
117

В чем разница между ссылкой в ​​Интернете и ссылкой на службы в WCF? Что предпочтительнее в WCF?Разница между веб-ссылкой и ссылкой на обслуживание?

+0

Также взгляните на Канальные заводы - http://stackoverflow.com/questions/1698275/wcf-channelfactory-vs-generating-proxy –

+1

Хм, возможно, выберите ответ? Хороший вопрос, кстати –

ответ

14

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

Вы можете получить доступ к ссылкам в Интернете с помощью дополнительных опций в добавить ссылку на службу (если я правильно помню).

Я бы использовал служебную ссылку, потому что, насколько я понимаю, это новый механизм этих двух.

+8

Добавить Service Reference -> Дополнительно -> Добавить веб-ссылку ...ничего похожего на неинтуитивные решения. – Jagd

6

Сервисные ссылки касаются конечных точек и привязок, которые полностью настраиваются. Они позволяют указывать ваш клиентский прокси на WCF через любой транспортный протокол (HTTP, TCP, Shared Memory и т. Д.)

Они предназначены для работы с WCF.

Если вы используете WebProxy, вы в значительной степени связывания себя с помощью WCF через HTTP

5

Еще один момент, чтобы принять во внимание, что новый пользовательский интерфейс для интерфейса службы даст вам гораздо больше гибкости в том, как вы хотите создайте свой прокси-класс. Например, это позволит вам сопоставлять контракты данных с существующими dll, если они совпадают (на самом деле это поведение по умолчанию).

88

Низкоуровневый ответ здесь заключается в том, что веб-ссылка создаст прокси-класс клиента, который позволяет вашему коду разговаривать с веб-службой, которая описывается через WSDL и обменивается данными через SOAP или HTTP GET (другие плакаты показывают, что это только ASMX, но веб-ссылки также могут разговаривать с веб-службами на базе Java или с Python или Ruby, если они все говорят WSDL и соответствуют стандарту совместимости WS-I).

Ссылка на службу создаст клиентский прокси-класс, который связывается с сервисом на основе WCF: независимо от того, является ли эта служба WCF веб-службой или нет.

+1

+1 для добавления того, что любой стандартный веб-сервис с правильно отформатированным WSDL отвечает критериям –

+0

. Можно ли добавить ссылку на службу на веб-службу на основе Java? Было бы все-таки иметь смысл? поскольку Java ничего не знает о стеке wcf ... – user20358

+0

Да, вы можете добавить ссылку на службу в веб-службу java и т. д., если она имеет wsdl. В этом случае ссылка на службу будет рассматриваться как «классическая» веб-ссылка. –

57

Веб-ссылка позволяет вам связываться с любой услугой на основе любой технологии, которая реализует базовый профиль WS-I 1.1, и предоставляет соответствующие метаданные в виде WSDL. Внутри он использует стек связи ASMX со стороны клиента.

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

Обратите внимание, что оба этих определения довольно широки, и оба включают службы, не написанные в .NET.

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

Также возможно добавить ссылку на службу, которая указывает на службу ASMX. При написании нового кода, , вы всегда должны использовать сервисную ссылку просто потому, что она более гибкая и надежная в будущем.

+0

Может ли кто-нибудь начать меня с того, как использовать услугу через Service Reference? С помощью Web Reference я всегда могу найти основные функции в каком-то сервисном объекте. С ссылкой на службу, не так много. Например, я пытаюсь использовать службу курсов FedEx для получения цен на различные варианты доставки FedEx. Я знаю, что есть где-то звонок getRates(), но я не могу найти его с помощью Service Reference. –

+0

@BenMills: Ищите класс с суффиксом 'Клиент'. –

Смежные вопросы