15

URL を介して、サービスで公開されているすべてのメソッドにアクセスしたいと考えています。URLが次のようになるとします。

http://localhost/MyService/MyService.svc

メソッドにアクセスするにはどうすればよいですか:

  1. ServiceReference があるとします
  2. サービス参照がない場合はどうすればよいですか。
4

5 に答える 5

21

WCF サービスを使用するには、WCF クライアント プロキシを作成する必要があります。

Visual Studio では、プロジェクトを右クリックし、コンテキスト メニューから [サービス参照の追加] を選択します。接続先の URL を入力します。そのサービスが実行されている場合は、クライアント プロキシ ファイルが生成されます。

通常、このファイルには MyService Clientというクラスが含まれます。このクラスをインスタンス化すると、そのクライアント クラスで使用可能なすべてのメソッドが自由に表示されます。

Visual Studio でサービス参照を追加したくない場合は、svcutil.exeコマンド ライン ツールを実行して同じ結果を得ることができます。これにより、クライアント プロキシ クラスに必要なすべてのファイルも生成されます。

マルク

更新:
実行時にクライアント プロキシを初期化する場合は、間違いなくそれを行うことができます。使用するバインディング (トランスポート プロトコル) と接続するアドレスを決定する必要があります。

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService");

MyServiceClient serviceClient = new MyServiceClient(binding, address);

ただし、この場合でも、「サービス参照の追加」ツールまたは svcutil.exe ツールを使用して、最初にプロキシ クライアントをインポートして作成する必要があります。

于 2009-07-28T10:02:49.917 に答える
8

サービス参照なしでそれを行う方法に答える。こちらをご覧ください (オプション #a):

初めての WCF クライアントの作成

いくつかの参照 (つまり、コントラクト/インターフェイスを含むアセンブリへの参照) が必要ですが、サービス参照は作成しません。

編集: 上記は可能ですが、お勧めしません。このようなプロキシを生成する必要がある場合、パフォーマンスはそれほど良くありません。通常、svcutil.exe を使用してクライアントを含むアセンブリを作成し、そのアセンブリへの参照を作成します。このようにして、プロキシがどのように見えるかを制御するためのオプションが増えます。

于 2009-07-28T13:45:03.347 に答える
2

WebClientクラスを利用して、サービス プロキシを必要とせずに WCF サービスを呼び出すこともできます。事実上、文字列とバイナリ データを送受信し、POST をシミュレートすることもできます。

私は、開発者が必要なプロキシ メソッドを作成しない可能性がある再利用可能なコンポーネントに広く使用しています。POST を実行する方法の適切な比較については、こちらを参照してください。

于 2009-07-28T15:34:04.987 に答える
0

サービスの wsdl を提供するだけです: http://localhost/MyService/MyService.svc?wsdl

wsdl からプロキシ クラスを生成し、クライアントで使用できます。

于 2011-02-12T18:04:33.670 に答える