Różnica między odniesieniem do strony internetowej a odniesieniem do usługi?

134

Jaka jest różnica między odwołaniem do sieci Web a odwołaniem do usługi w programie WCF? Co jest lepsze w WCF?

John Saunders
źródło
Spójrz także na Channel Factories - stackoverflow.com/questions/1698275/…
Manish Jain
1
hmm, może wybierz odpowiedź? przy okazji dobre pytanie
Daniël Tulp

Odpowiedzi:

102

Odpowiedź niskiego poziomu jest taka, że ​​odniesienie do sieci WWW utworzy klasę proxy klienta, która pozwoli Twojemu kodowi komunikować się z usługą sieciową opisaną przez WSDL i komunikującą się za pośrednictwem protokołu SOAP lub HTTP GET (inne plakaty wskazują, że jest to tylko ASMX, ale Odnośniki internetowe mogą również komunikować się z usługami sieciowymi opartymi na języku Java lub opartymi na języku Python lub Ruby, o ile wszystkie mówią w języku WSDL i są zgodne ze standardem interoperacyjności WS-I).

Odwołanie do usługi utworzy klasę proxy klienta, która komunikuje się z usługą opartą na WCF: niezależnie od tego, czy ta usługa WCF jest usługą sieci Web, czy nie.

Kevin Hoffman
źródło
1
+1 za dodanie, że każda standardowa usługa sieciowa z odpowiednio sformatowanym WSDL spełnia kryteria
sidney.andrews
Czy mogę więc dodać odwołanie do usługi internetowej opartej na Javie? Czy nadal miałoby to sens? ponieważ Java nic nie wie o stosie wcf ...
user20358
tak, możesz dodać odwołanie do usługi do usługi sieciowej Java itp., jeśli ma ona plik wsdl. Odniesienie do usługi będzie w tym przypadku traktowane jak „klasyczne” odniesienie do strony internetowej.
Brady Moritz
+1 za stwierdzenie, że usługa sieciowa może wykorzystywać usługi sieciowe opisane w języku WSDL, a także ASMX. W rzeczywistości mam warstwę biznesową, która zawiera odniesienie do sieci i odniesienie do usługi. Odwołanie do sieci WWW używa usługi WWW WSDL, podczas gdy odwołanie do usługi używa usługi ASMX.
Jagd
67

Odsyłacz WWW umożliwia komunikację z dowolną usługą opartą na dowolnej technologii, która implementuje WS-I Basic Profile 1.1 i udostępnia odpowiednie metadane jako WSDL. Wewnętrznie używa stosu komunikacyjnego ASMX po stronie klienta.

Odwołanie do usługi umożliwia komunikowanie się z dowolną usługą opartą na dowolnej technologii, która implementuje dowolny z wielu protokołów obsługiwanych przez WCF (w tym między innymi WS-I Basic Profile). Wewnętrznie używa stosu komunikacji WCF po stronie klienta.

Zauważ, że obie te definicje są dość szerokie i obie obejmują usługi, które nie są napisane w .NET.

Jest całkowicie możliwe (choć nie jest to zalecane), aby dodać odwołanie do sieci Web, które wskazuje na usługę WCF, o ile punkt końcowy WCF używa basicHttpBindinglub jakiegoś zgodnego wariantu niestandardowego.

Możliwe jest również dodanie odwołania do usługi, które wskazuje na usługę ASMX. Podczas pisania nowego kodu należy zawsze używać odwołania do usługi tylko dlatego, że jest on bardziej elastyczny i przyszłościowy.

Christian Hayter
źródło
1
Czy ktoś może mi pomóc w korzystaniu z usługi za pośrednictwem odniesienia do usługi? Wydaje mi się, że dzięki odnośnikom internetowym zawsze potrafię znaleźć podstawowe funkcje w jakimś obiekcie usługi. W przypadku numeru referencyjnego nie tak bardzo. Jako przykład próbuję skorzystać z usługi stawek FedEx, aby uzyskać ceny dla różnych opcji wysyłki FedEx. Wiem, że gdzieś tam jest wywołanie getRates (), ale nie mogę go znaleźć za pomocą odwołania do usługi.
Ben Mills,
@BenMills: Poszukaj klasy z Clientsufiksem.
Christian Hayter
17

Dokumentacja usługi to nowszy interfejs służący do dodawania odwołań do wszystkich rodzajów usług WCF (mogą nie być usługami sieci Web), podczas gdy odwołanie do sieci Web dotyczy w szczególności odwołań do sieci Web ASMX.

Możesz uzyskać dostęp do odwołań internetowych za pomocą zaawansowanych opcji w dodawaniu odwołania do usługi (jeśli dobrze pamiętam).

Użyłbym odwołania do usługi, ponieważ, jak rozumiem, jest to nowszy mechanizm dwóch.

DavidWhitney
źródło
8
Dodaj informacje o usługach -> Zaawansowane -> Dodaj odwołanie do sieci WWW ... nic nie przypomina nieintuicyjnych rozwiązań.
Jagd
7

Odwołania do usług dotyczą punktów końcowych i powiązań, które są w pełni konfigurowalne. Pozwalają wskazać serwerowi proxy klienta do WCF za pośrednictwem dowolnego protokołu transportowego (HTTP, TCP, pamięć współdzielona itp.)

Są przeznaczone do pracy z WCF.

Jeśli używasz WebProxy, prawie wiążesz się z użyciem WCF przez HTTP

Brian Genisio
źródło
5

Inną kwestią, którą należy wziąć pod uwagę, jest to, że nowy interfejs użytkownika dla interfejsu usługi zapewni znacznie większą elastyczność w zakresie tworzenia klasy proxy. Na przykład pozwoli ci mapować kontrakty danych na istniejące biblioteki DLL, jeśli pasują (w rzeczywistości jest to zachowanie domyślne).

Wagner Silveira
źródło