Веб-ссылка против справки по сервису


110

Я просто ударил огромную кирпичную стену с помощью Paypal. Я создал обычный проект C # для создания классов-оболочек с использованием их WSDL.

Если вы создаете не веб-проект, единственный способ добавить wsdl - это ссылка на веб-службу. И это создает примерно тот же набор прокси-классов, что и веб-ссылка, но не совсем… он добавляет больше, о чем даже ребята из PayPal не знают.

Итак, я все это время искал правильный интерфейс в этом списке прокси-классов для использования в качестве службы (SoapBinding), и PayPalAPIAASoapBindingя все время говорил нашему контактному лицу PayPal.

Я мог видеть только следующие 2 интерфейса, которые мне показались необходимыми, так как я не видел, PayPalAPIAASoapBindingкоторый вы МОЖЕТЕ увидеть в справочнике службы на основе веб-ссылки:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Итак, я понял, о, я, вероятно, создал ссылку на службу вместо веб-ссылки, которая является опцией в веб-проекте. Но я не хочу, чтобы моя ссылка на службу была тесно связана с моим веб-проектом. Вот почему я создал проект C #.

Так что, черт возьми, справочник по сервису или веб-ссылка? И как я должен выделить это в другой проект, если Service Reference вызовет у меня цикл и даст мне набор интерфейсов, отличных от веб-ссылки?

Кроме того, чтобы еще больше запутать, VS 2008 имеет проект приложения веб-службы.

Так что я использую? Мы используем платформу .NET 3.5 и не готовы переходить на WCF . Могу ли я использовать новую ссылку на службу, даже если не использую WCF или что? ЕСЛИ вы используете .NET 3.5, а не WCF, и по-прежнему хотите использовать базовые веб-службы, вы по-прежнему используете маршрут Service Reference и просто не используете платформу WCF? Значит, можно ли его использовать как веб-справочник .NET 2.0, просто вы получите WSDL совершенно другого поколения?



2
Спустя 8 лет и до сих пор актуален.
Майк Девенни

Ответы:


213

Добавить веб-ссылку - это устаревшая, устаревшая технология веб-служб ASP.NET (ASMX) (с использованием только XmlSerializer для ваших материалов) - если вы сделаете это, вы получите клиент ASMX для веб-службы ASMX. Вы можете сделать это практически в любом проекте (веб-приложение, веб-сайт, консольное приложение, Winforms - вы называете это).

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

Поскольку вы не готовы к переходу на WCF, вы также можете добавить веб-ссылку в старом стиле, если вам действительно необходимо: когда вы выполняете «Добавить ссылку на службу», в появившемся диалоговом окне нажмите [Дополнительно ] в левом углу кнопки:

альтернативный текст

и в следующем появившемся диалоговом окне нажмите кнопку [Добавить веб-ссылку] внизу.


6
Как глупо со стороны MS скрывать это в диалоговом окне WCF! Даже не имеет никакого смысла с размещением здесь
PositiveGuy

9
@coffeeaddict: ну, я думаю, MS пытается тонко склонить вас к использованию WCF по умолчанию - и только ASMX старого стиля, если вы действительно настроены :-)
marc_s

27
Если вы используете Alt + PrtScn, вы можете сделать снимок только текущего активного окна, таким образом вам не придется вручную вырезать только то, что вы хотите показать: o)
Эрнест

Потребуется ли для этого .NET 2.0 на компьютере? Или .NET 4.0 сможет обрабатывать технологию "Web Reference" на основе .NET 2.0? Я хочу знать, потому что я развертываю веб-сервис SOAP как «Веб-ссылку» в приложении .NET 4.0.
Компьютерный пользователь

1
@sparkyShorts: да.
marc_s

9

Если я правильно понимаю ваш вопрос:

Чтобы добавить ссылку на веб-службу .net 2.0 вместо ссылки на службу WCF, щелкните свой проект правой кнопкой мыши и выберите «Добавить ссылку на службу».

Затем нажмите «Дополнительно ..» в нижнем левом углу диалогового окна.

Затем нажмите «Добавить веб-ссылку ..» в нижнем левом углу следующего диалогового окна.

Теперь вы можете добавить обычную веб-ссылку на SOAP, как вы ищете.


Потребуется ли для этого .NET 2.0 на компьютере? Или .NET 4.0 сможет обрабатывать технологию "Web Reference" на основе .NET 2.0? Я хочу знать, потому что я развертываю веб-сервис SOAP как «Веб-ссылку» в приложении .NET 4.0.
Computer User

4

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

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


3
Потому что WCF - это НЕ просто для новичков. Более того, мой босс не дает мне переехать, это настоящая причина. Это код и запуск здесь. Когда у тебя такая ситуация, я ничего не могу с этим поделать.
PositiveGuy

7
@coffeeaddict Я думаю, что вы и ваш босс неправильно информированы. Оба типа ссылок создадут класс, который предоставляет методы для вызова операций службы. Насколько уместно, чтобы класс, созданный ссылкой на «службу», наследовал от базового класса, который находится в библиотеке, которую Microsoft считает частью какой-то технологии, которую она называет WCF?
Дэниел Пратт

1
Потребуется ли для этого .NET 2.0 на компьютере? Или .NET 4.0 сможет обрабатывать технологию "Web Reference" на основе .NET 2.0? Я хочу знать, потому что я развертываю веб-сервис SOAP как «Веб-ссылку» в приложении .NET 4.0.
Computer User

3

В конце концов, оба делают одно и то же. В коде есть некоторые различия: веб-службы не добавляют корневое пространство имен проекта, но справочник служб добавляет классы служб в пространство имен проекта. ServiceSoapClientКласс получает другое именование, которое не важно. При работе с TFS я бы предпочел использовать Service Reference, потому что он лучше работает с системой управления версиями. Оба работают с протоколами SOAP.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.