web-dev-qa-db-ja.com

Webリファレンスとサービスリファレンス

Paypalで巨大なレンガの壁にぶつかりました。 WSDLを使用していくつかのラッパークラスを作成するために、通常のC#プロジェクトを作成しました。

非Webプロジェクトを作成する場合、wsdlを追加する唯一のオプションはWebサービス参照です。これにより、Webリファレンスと同じプロキシクラスのセットが作成されますが、実際にはそうではありません。Paypalの人たちも気づいていないことをさらに追加します。

このため、このプロキシクラスのリストでサービスとして使用する適切なインターフェイス(SoapBinding)を探していましたが、PayPalAPIAASoapBindingがなかったため、Paypalの連絡先を伝え続けました。

Webリファレンスベースのサービスリファレンスに表示されるPayPalAPIAASoapBindingが表示されなかったため、使用する必要があるものとして表示された次の2つのインターフェイスしか表示できませんでした。

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

それで、私はおそらく、WebリファレンスがWebプロジェクトのオプションであるWebリファレンスに対して、サービスリファレンスを作成していたと思いました。ただし、サービス参照をWebプロジェクトと密結合させたくありません。そのため、C#プロジェクトを作成しました。

それでは、サービスリファレンスとWebリファレンスとは一体何でしょうか?また、Service Referenceがループをスローし、Web Referenceとは異なるインターフェイスのセットを提供する場合、これを別のプロジェクトにどのように分離するのですか?

また、物事をさらに混乱させるために、VS 2008にはWebサービスアプリケーションプロジェクトがあります。

だから私は何を使うのですか? 。NET 3.5フレームワークを使用しており、notWCFに移行する準備ができています。 WCFを使用していない場合でも、新しいサービスリファレンスを使用できますか?まだWCFではなく.NET 3.5を使用していて、基本的なWebサービスを実行したい場合は、WCFフレームワークを使用せずに、サービスリファレンスルートに移動しますか?つまり、まったく異なる世代のWSDLを取得するということだけで、.NET 2.0 Webリファレンスのように使用できますか?

107
PositiveGuy

Web参照の追加は、古いスタイルの非推奨のASP.NET Webサービス(ASMX)テクノロジーです(ユーザーのXmlSerializerのみを使用)-これを行うと、ASMX WebサービスのASMXクライアントが取得されます。これは、ほぼすべてのプロジェクト(Webアプリ、Webサイト、コンソールアプリ、Winforms-名前を付けます)で実行できます。

サービス参照の追加は、WCFサービス参照を追加する新しい方法です。これにより、単純な古いASMXのものよりもはるかに高度で柔軟なサービスモデルが提供されます。

WCFに移行する準備ができていないため、本当に必要な場合は、古いスタイルのWeb参照を追加することもできます。「サービス参照の追加」を行うとき、表示されるダイアログで[詳細設定] ]ボタン左隅の[]ボタン:

alt text

次に表示されるダイアログで、下部の[Web参照の追加]ボタンを選択します。

207
marc_s

あなたの質問を正しく理解した場合:

WCFサービス参照の代わりに.net 2.0 Webサービス参照を追加するには、プロジェクトを右クリックして、[サービス参照の追加]をクリックします。

次に、ダイアログの左下にある「詳細設定」をクリックします。

次に、次のダイアログの左下にある[Web参照の追加...]をクリックします。

これで、探しているように通常のSOAP Web参照を追加できます。

8
Moose

サービス参照を追加すると、WCFクライアントを作成できます。これを使用して、適切なバインディングを使用すれば、通常のWebサービスと通信できます。 Web参照を追加すると、only Webサービス(つまり、SOAP)参照を作成できます。

WCFの準備ができていない(本当に理由がわからない)と確信している場合は、通常のWebサービス参照を作成する必要があります。

4
Otávio Décio

最終的には、両方が同じことをします。コードにはいくつかの違いがあります。Webサービスはプロジェクトのルート名前空間を追加しませんが、サービスリファレンスはサービスクラスをプロジェクトの名前空間に追加します。 ServiceSoapClientクラスには別の名前が付けられますが、これは重要ではありません。 TFSを使用する場合は、ソース管理でより適切に機能するため、サービスリファレンスを使用します。どちらもSOAPプロトコルで機能します。

サービスリファレンスは新しいものであり、メンテナンスが容易なので、サービスリファレンスを使用する方が良いと思います。

3
user3628475