Źródła informacji w sieci Web a odniesienia do usług

110

Właśnie uderzyłem w wielką ceglaną ścianę z Paypal. Stworzyłem zwykły projekt C #, aby utworzyć kilka klas opakowujących przy użyciu ich WSDL.

Jeśli tworzysz projekt inny niż internetowy, jedyną opcją dodania wsdl jest odwołanie do usługi sieci Web. A to tworzy taki sam zestaw klas proxy, jak w przypadku referencji WWW, ale nie do końca… dodaje więcej, czego nawet ludzie z PayPal nie są świadomi.

Więc przez cały ten czas szukałem odpowiedniego interfejsu na tej liście klas proxy do użycia jako usługa (SoapBinding), a PayPalAPIAASoapBindingnie było go, o czym informowałem nasz punkt PayPal w kontakcie.

Widziałem tylko następujące 2 interfejsy, które wydawały mi się tym, czego potrzebowałem, ponieważ nie widziałem takiego, PayPalAPIAASoapBindingktórego MOŻESZ zobaczyć w odwołaniu do usługi opartej na sieci Web:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Tak więc doszedłem do wniosku, że prawdopodobnie stworzyłem odniesienie do usługi kontra odniesienie do sieci, które jest opcją w projekcie sieci Web. Ale nie chcę, aby moje odwołanie do usługi było ściśle powiązane z moim projektem sieci Web. Dlatego właśnie stworzyłem projekt C #.

Więc co to jest, do cholery, odwołanie do usługi a co w sieci? I jak mam oddzielić to na inny projekt, jeśli odniesienie do usługi ma rzucić mi pętlę i dać mi zestaw różnych interfejsów niż odniesienie do sieci Web?

Ponadto, aby jeszcze bardziej zagmatwać, VS 2008 ma projekt aplikacji usługi sieci Web.

Więc czego używam? Używamy .NET 3.5 Framework i jesteśmy nie gotowy, aby przejść do WCF . Czy mogę więc nadal używać nowego odwołania do usługi, nawet jeśli nie korzystam z WCF, czy co? Jeśli używasz platformy .NET 3.5, a nie programu WCF, i nadal chcesz korzystać z podstawowych usług sieci Web, czy nadal korzystasz z trasy odwołania do usługi i po prostu nie używasz struktury WCF? Czy to znaczy, czy może być nadal używany jako odwołanie do sieci .NET 2.0, tylko że otrzymasz całkowicie inną generację WSDL?

PositiveGuy
źródło
2
8 lat później i nadal aktualne.
Mike Devenney

Odpowiedzi:

213

Add Web Reference to przestarzała technologia ASP.NET webservices (ASMX) (używająca tylko XmlSerializer do swoich rzeczy) - jeśli to zrobisz, otrzymasz klienta ASMX dla usługi sieciowej ASMX. Możesz to zrobić w prawie każdym projekcie (aplikacja internetowa, witryna internetowa, aplikacja konsolowa, Winforms - możesz to nazwać).

Dodaj odwołanie do usługi to nowy sposób robienia tego, dodając odwołanie do usługi WCF, które zapewnia znacznie bardziej zaawansowany, znacznie bardziej elastyczny model usługi niż zwykłe stare elementy ASMX.

Ponieważ nie jesteś jeszcze gotowy do przejścia do WCF, możesz również dodać odwołanie do sieci Web w starym stylu, jeśli naprawdę musisz: kiedy wykonujesz „Dodaj odwołanie do usługi”, w wyświetlonym oknie dialogowym kliknij przycisk [Zaawansowane ] w lewym rogu przycisku:

tekst alternatywny

iw następnym oknie dialogowym, które się pojawi, wybierz przycisk [Dodaj odniesienie do sieci] u dołu.

marc_s
źródło
6
Jak głupie jest to, że MS ukrywa to w oknie dialogowym WCF! To nawet nie ma sensu z umieszczeniem tutaj
PositiveGuy
9
@coffeeaddict: cóż, myślę, że MS próbuje subtelnie skłonić cię do używania WCF domyślnie - i tylko w starym stylu ASMX, jeśli naprawdę jesteś zdeterminowany :-)
marc_s
27
Jeśli użyjesz Alt + PrtScn, możesz zrobić migawkę tylko bieżącego aktywnego okna, w ten sposób nie będziesz musiał ręcznie wycinać tego, co chcesz pokazać: o)
Ernest
Czy będzie to wymagało .NET 2.0 również na komputerze? A może .NET 4.0 będzie w stanie obsłużyć technologię „Web Reference” opartą na platformie .NET 2.0? Chcę wiedzieć, ponieważ wdrażam usługę sieciową SOAP jako „Odnośnik sieciowy” w aplikacji .NET 4.0.
Użytkownik komputera
1
@sparkyShorts: tak.
marc_s
9

Jeśli dobrze rozumiem twoje pytanie:

Aby dodać odwołanie do usługi sieci Web .net 2.0 zamiast odwołania do usługi WCF, kliknij prawym przyciskiem myszy projekt i kliknij opcję „Dodaj odwołanie do usługi”.

Następnie kliknij „Zaawansowane…” w lewym dolnym rogu okna dialogowego.

Następnie kliknij „Dodaj odwołanie do sieci…” w lewym dolnym rogu następnego okna dialogowego.

Teraz możesz dodać zwykłe odwołanie do sieci SOAP, jakiego szukasz.

Łoś
źródło
Czy będzie to wymagało .NET 2.0 również na komputerze? A może .NET 4.0 będzie w stanie obsłużyć technologię „Web Reference” opartą na platformie .NET 2.0? Chcę wiedzieć, ponieważ wdrażam usługę sieciową SOAP jako „Odnośnik sieciowy” w aplikacji .NET 4.0.
Użytkownik komputera
4

Dodanie odwołania do usługi umożliwia utworzenie klienta WCF, którego można używać do komunikowania się ze zwykłą usługą sieci Web, pod warunkiem, że używasz odpowiedniego powiązania. Dodanie odsyłacza internetowego pozwoli na utworzenie tylko odwołania do usługi sieciowej (tj. SOAP).

Jeśli masz absolutną pewność, że nie jesteś gotowy na WCF (naprawdę nie wiesz, dlaczego), powinieneś utworzyć zwykłe odwołanie do usługi sieci Web.

Otávio Décio
źródło
3
Ponieważ WCF NIE jest łatwe dla początkujących. Co więcej, mój szef nie pozwala mi się tam przenieść, to prawdziwy powód. To kod i uruchom tutaj. Kiedy masz taką sytuację, nic nie mogę na to poradzić.
PositiveGuy
7
@coffeeaddict Myślę, że ty i twój szef jesteście źle poinformowani. Oba typy odwołań utworzą klasę, która udostępnia metody wywoływania operacji usługi. Jak to ma znaczenie, że klasa utworzona przez odwołanie do „usługi” dziedziczy po klasie bazowej znajdującej się w bibliotece, którą Microsoft uważa za część technologii, którą nazywa WCF?
Daniel Pratt
1
Czy będzie to wymagało .NET 2.0 również na komputerze? A może .NET 4.0 będzie w stanie obsłużyć technologię „Web Reference” opartą na platformie .NET 2.0? Chcę wiedzieć, ponieważ wdrażam usługę sieciową SOAP jako „Odnośnik sieciowy” w aplikacji .NET 4.0.
Użytkownik komputera
3

W końcu obaj robią to samo. Istnieją pewne różnice w kodzie: usługi sieci Web nie dodają głównej przestrzeni nazw projektu, ale odwołanie do usługi dodaje klasy usług do przestrzeni nazw projektu. ServiceSoapClientKlasa dostaje innego nazewnictwa, co nie jest ważne. Podczas pracy z TFS wolę używać odwołania do usługi, ponieważ działa lepiej z kontrolą źródła. Oba działają z protokołami SOAP.

Uważam, że lepiej jest korzystać z odniesienia do usługi, ponieważ jest on nowy i dzięki temu będzie lepiej utrzymywany.

user3628475
źródło