2009-07-28 23 views
13

サービスで公開されているすべてのメソッドにURLを介してアクセスしたいです。 URLがされると仮定した場合:実行時にURL経由でWCF Webサービスを使用するにはどうすればよいですか?

http://localhost/MyService/MyService.svc 

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

  • を持っており、サービス参照を持っていない場合、私は何をすべきと仮定した場合

    1. を。
  • +0

    あなたの質問を明確にしてください。私はあなたが何を達成したいかを伝えることはできません。メソッドを呼び出せるようにしたいのですか、それらのリストが必要ですか? –

    +0

    ジョン私はメソッドにアクセスしたいです。私はURLを使ってWebサービスを消費したいと考えています。 –

    +0

    サービス参照を使用してみませんか? –

    答えて

    18

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

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

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

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

    マルク・

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

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

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

    +0

    こんにちはマーク、 お返事ありがとうございます。私は同じことをしており、アクセスすることができます。しかし私の要件は、彼がURLを見ることができるクライアントに同じインタフェースを提供すること(私たちがサービス参照を追加するために右クリックするときに得られるように)であり、サービス参照は選択されたURLに従って更新される。 –

    +0

    実行時にこれをどのように習得できますか?選択したURLを使用して実行時にサービスを構築する方法。 –

    +0

    OK、クライアントに実行時にサービス参照を追加させたいのですか?彼は彼らと何をするつもりですか?つまり、実行時にプロキシを作成できますが、どうやってメソッドを呼び出すのでしょうか? –

    7

    サービスリファレンスを持たずに行う方法をお答えください。こちらをご覧(オプション#A)を持っている:

    Writing your first WCF client

    あなたはまだいくつかの基準(契約/インターフェースを含むアセンブリへの参照すなわち)が必要ですが、あなたはサービス参照をすることはありません。

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

    1

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

    開発者が必要なプロキシメソッドを作成することができない再利用可能なコンポーネントに幅広く使用します。 POSTを行う方法の良い比較はhereです。

    関連する問題