Web参照とサービス参照の違いは何ですか?


回答:


102

ここでの低レベルの答えは、WSDLを介して記述され、SOAPまたはHTTP GETを介して通信するWebサービスとコードが通信できるようにするクライアントプロキシクラスをWebリファレンスが作成することです(他のポスターは、それがASMXのみであることを示していますが、 Webリファレンスは、すべてがWSDLを処理し、WS-I相互運用性標準に準拠している限り、JavaベースのWebサービス、Pythonベース、またはRubyと通信することもできます。

サービスリファレンスは、WCFサービスがWebサービスであるかどうかに関係なく、WCFベースのサービスと通信するクライアントプロキシクラスを作成します。


1
適切にフォーマットされたWSDLを備えた標準のWebサービスが基準を満たしていることを追加するための+1
sidney.andrews

それで、JavaベースのWebサービスにサービス参照を追加できますか?それでも理にかなっていますか?Javaはwcfスタックについて何も知らないので...
user20358

はい、wsdlがある場合は、JavaなどのWebサービスにサービス参照を追加できます。この場合、サービス参照は「クラシック」Web参照のように扱います。
ブレイディモリッツ

+1は、WebサービスがWSDLで記述されたWebサービスとASMXを使用できることを示します。実際には、Web参照とサービス参照を持つビジネスレイヤーがあります。Web参照はWSDL Webサービスを使用し、サービス参照はASMXサービスを使用します。
2010年

67

Webリファレンスを使用すると、WS-I Basic Profile 1.1を実装する任意のテクノロジーに基づくサービスと通信し、関連するメタデータをWSDLとして公開できます。内部的には、クライアント側でASMX通信スタックを使用します。

サービスリファレンスを使用すると、WCFでサポートされている多くのプロトコル(WS-I Basic Profileを含むがこれに限定されません)を実装するテクノロジに基づくサービスと通信できます。内部的には、クライアント側のWCF通信スタックを使用します。

これらの定義はどちらも非常に広く、どちらも.NETで記述されていないサービスを含んでいることに注意してください。

WCFエンドポイントが使用する限り、WCFサービスを指すWeb参照を追加することは完全に可能です(推奨されません)。 basicHttpBindingまたは互換性のあるカスタムバリアントが。

ASMXサービスを指すサービス参照を追加することもできます。新しいコードを書くときは、より柔軟で将来性があるという理由だけで、常にサービス参照を使用する必要があります


1
誰かがサービスリファレンスを介してサービスを利用する方法を教えてもらえますか?Web参照を使用すると、常に、ある種のサービスオブジェクトのコア機能を見つけることができるようです。サービス参照があれば、それほどではありません。例として、FedEx料金サービスを使用して、さまざまなFedEx配送オプションの価格を取得しようとしています。どこかにgetRates()呼び出しがあることは知っていますが、サービス参照でそれを見つけることができません。
ベン・ミルズ

@BenMills:Clientサフィックスのあるクラスを探します。
クリスチャンヘイター

17

サービス参照は、あらゆる種類のWCFサービス(Webサービスではない場合があります)への参照を追加するための新しいインターフェイスですが、Web参照は特にASMX Web参照に関係しています。

add service referenceの詳細オプションを使用してWeb参照にアクセスできます(正しく思い出せば)。

私が理解しているように、それは2つの新しいメカニズムなので、サービス参照を使用します。


8
サービス参照の追加->詳細設定-> Web参照の追加...直感的でないソリューションとは異なります。
2010年

7

サービス参照は、完全に構成可能なエンドポイントとバインディングを扱います。トランスポートプロトコル(HTTP、TCP、共有メモリなど)を介してクライアントプロキシをWCFにポイントできます。

これらはWCFで動作するように設計されています。

WebProxyを使用する場合は、HTTP経由のWCFの使用にかなり拘束されます。


5

考慮すべきもう1つのポイントは、Service Interfaceの新しいUIを使用すると、プロキシクラスを作成する方法をはるかに柔軟にできることです。たとえば、データコントラクトが一致する場合、既存のdllにマップすることができます(実際には、これがデフォルトの動作です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.