Веб-посилання проти посилання на сервіс


110

Я просто потрапив у величезну цегляну стіну з Paypal. Я створив звичайний проект C # для створення декількох класів обгортки, використовуючи їх WSDL.

Якщо ви створюєте не веб-проект, єдиний варіант, який ви можете додати wsdl, - це довідник веб-служб. І це створює такий самий набір проксі-класів, що і веб-довідник, але насправді .. це додає більше, про що навіть хлопці з PayPal не знають.

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

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

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Тому я зрозумів, о, я, мабуть, створив Довідку про службу проти Веб-довідки, яка Веб-довідка є опцією у веб-проекті. Але я не хочу, щоб моя посилання на сервіс була щільно поєднана з моїм веб-проектом. Тому я створив проект C #.

Отже, що за чорта - це Посилання на службу порівняно з веб-посиланням? І як я повинен відокремити це в проект антре, якщо Service Reference збирається кинути мені цикл і надати мені набір інших інтерфейсів, ніж Web Reference?

Крім того, щоб зробити БІЛЬШЕ заплутаним, VS 2008 має проект Web Service Application.

Отже, що я використовую? Ми використовуємо рамку .NET 3.5 і ми не готові переходити до WCF . Тож чи можу я все-таки використовувати нову довідку служби, навіть якщо не використовую WCF чи що? Якщо ви використовуєте .NET 3.5, а ще не WCF, і все ще хочете робити основні веб-сервіси, ви все ще ходите по Службовому маршруту та просто не використовуєте рамку WCF? Значить, чи можна його використовувати як веб-довідник .NET 2.0, тільки що ви отримаєте зовсім інше покоління WSDL?



2
Через 8 років і досі актуально.
Майк Девенні

Відповіді:


213

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

Додати довідковий сервіс - це новий спосіб зробити це, додавши посилання на службу WCF, яка дає вам набагато більш досконалу, набагато більш гнучку модель обслуговування, ніж просто старі речі ASMX.

Оскільки ви не готові перейти на WCF, ви також можете додати старі посилання на веб-сторінку, якщо це дійсно потрібно: коли ви робите "Додати службну довідку", у діалоговому вікні, що з'явиться, натисніть на [Додатково ] кнопка в лівому куті кнопки:

alt текст

а в наступному діалоговому вікні виберіть кнопку [Додати веб-довідку] внизу.


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.
Користувач комп’ютера

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.
Користувач комп’ютера

3

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

Я вважаю, що краще скористатися довідковою службою, оскільки вона нова і тому буде краще підтримуватися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.