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