WCFのWeb参照とサービス参照の違いは何ですか?WCFではどちらが望ましいですか?
5 に答える
ここでの低レベルの答えは、Web 参照がクライアント プロキシ クラスを作成し、コードが WSDL を介して記述され、SOAP または HTTP GET を介して通信する Web サービスと通信できるようにすることです (他のポスターは、それが ASMX のみであることを示していますが、 Web 参照は、Java ベースの Web サービス、Python ベース、または Ruby とも対話できますが、それらがすべて WSDL と対話し、WS-I 相互運用性標準に準拠している場合に限ります)。
サービス参照は、WCF ベースのサービスと通信するクライアント プロキシ クラスを作成します。その WCF サービスが Web サービスであるかどうかは関係ありません。
Webリファレンスを使用すると、WS-I Basic Profile 1.1を実装するテクノロジーに基づくサービスと通信し、関連するメタデータをWSDLとして公開できます。内部的には、クライアント側でASMX通信スタックを使用します。
サービスリファレンスを使用すると、WCFでサポートされている多くのプロトコル(WS-I基本プロファイルを含むがこれに限定されない)のいずれかを実装するテクノロジに基づいて、任意のサービスと通信できます。内部的には、クライアント側でWCF通信スタックを使用します。
これらの定義はどちらも非常に広く、.NETで記述されていないサービスが含まれていることに注意してください。
basicHttpBinding
WCFエンドポイントが使用するか、互換性のあるカスタムバリアントである限り、WCFサービスを指すWeb参照を追加することは完全に可能です(推奨されませんが) 。
ASMXサービスを指すサービス参照を追加することもできます。新しいコードを作成するときは、柔軟性が高く将来性があるという理由だけで 、常にサービスリファレンスを使用する必要があります。
サービス参照は、あらゆる種類の WCF サービス (Web サービスではない場合があります) への参照を追加するための新しいインターフェイスですが、Web 参照は特に ASMX Web 参照に関連しています。
サービス参照の追加の詳細オプションを介して Web 参照にアクセスできます (私の記憶が正しければ)。
私が理解しているように、それは2つの新しいメカニズムであるため、サービス参照を使用します。
サービス参照は、完全に構成可能なエンドポイントとバインディングを扱います。任意のトランスポート プロトコル (HTTP、TCP、共有メモリなど) を介してクライアント プロキシを WCF にポイントできます。
これらは、WCF で動作するように設計されています。
WebProxy を使用している場合は、WCF over HTTP を使用する必要があります。
考慮すべきもう 1 つのポイントは、Service Interface の新しい UI により、プロキシ クラスの作成方法がより柔軟になることです。たとえば、データ コントラクトが一致する場合は、データ コントラクトを既存の dll にマップできます (実際には、これが既定の動作です)。