URL を介して、サービスで公開されているすべてのメソッドにアクセスしたいと考えています。URLが次のようになるとします。
http://localhost/MyService/MyService.svc
メソッドにアクセスするにはどうすればよいですか:
- ServiceReference があるとします
- サービス参照がない場合はどうすればよいですか。
URL を介して、サービスで公開されているすべてのメソッドにアクセスしたいと考えています。URLが次のようになるとします。
http://localhost/MyService/MyService.svc
メソッドにアクセスするにはどうすればよいですか:
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 ツールを使用して、最初にプロキシ クライアントをインポートして作成する必要があります。
サービス参照なしでそれを行う方法に答える。こちらをご覧ください (オプション #a):
いくつかの参照 (つまり、コントラクト/インターフェイスを含むアセンブリへの参照) が必要ですが、サービス参照は作成しません。
編集: 上記は可能ですが、お勧めしません。このようなプロキシを生成する必要がある場合、パフォーマンスはそれほど良くありません。通常、svcutil.exe を使用してクライアントを含むアセンブリを作成し、そのアセンブリへの参照を作成します。このようにして、プロキシがどのように見えるかを制御するためのオプションが増えます。
サービスの wsdl を提供するだけです: http://localhost/MyService/MyService.svc?wsdl。
wsdl からプロキシ クラスを生成し、クライアントで使用できます。