2012-02-17 15 views
0

いくつかのエンドポイント(mexエンドポイントを持つ)を持つWCFサービスを作成しました。 私は今、例えばコンソールのホストを作成し、私のメインでこれを置く場合:サービス参照の追加によるWCFホストアプリケーション?

ServiceHost host = new ServiceHost(typeof(HelloWorld)); 

host.Open(); 

Console.WriteLine("The service is ready at!"); 
foreach (ServiceEndpoint se in host.Description.Endpoints) 
      Console.WriteLine(se.Address.ToString()); 
     Console.WriteLine("Press <Enter> to stop the service."); 
Console.ReadLine(); 

// Close the ServiceHost. 
host.Close(); 

は、サービス参照を追加することにより、ホスト側ではapp.configを生成することが可能であり、または私はアプリを作成する必要があります私の自己を設定し、それをwcfサービスのエンドポイントに似ていますか?

次に、LAN上の他のコンピュータがこのホストにアクセスする可能性はありますか?

(PSはサービスのABCを取得してWSDLを返すmexエンドポイントをサービスすることがあります)(現時点では理解できない部分です)WSDLが取得された後、2つの成果物が生成されます:プロジェクトの言語でのプロキシクラスとapp.configファイルプロキシクラスは、エンドポイント操作のシグネチャをミラーリングし、クライアントコードが単にエンドポイントを「呼び出し」できるようにします。サービスの署名ではありますが、プロキシはサービスに送信されたメッセージがサービス契約によって正確に記述されていることを確認する必要があります(OK WHAT?)

答えて

0

1)エンドポイント(A- Binding、C-contract)をapp.configに入れ、このapp.configはあなたのホストapp(あなたのco一部のクライアントは、Visual Studioのコマンドプロンプトを実行し、this-

SvcUtil http://localhost/MyService/MyService.svc /out:c:\Proxy.cs(サンプル・コマンドの変更さまざまな値を実行している場合、この場合はnsoleアプリ) 2)このサービスは、LANで認識することができますあなたのケースごとに...)

ここでProxy.csにはProxyクラスが含まれています。クライアントはこれをソリューションに追加し、このProxy.csが存在するのと同じディレクトリにあるプロキシクラスのメソッドを呼び出します。 1 .configファイルを開き、このファイルの内容をクライアントのapp.configに貼り付けます。 3)メタ情報を交換するには、MEXエンドポイントが必要です。

+0

設定する必要がありますかサービスapp.configとホストapp.config? – skyyyy

+0

上記のポイント1で述べたようにホストアプリケーション用に2つの.config、1を設定する必要があります.svcutilで取得する2番目のものはクライアントで設定する必要があります。 – sanguine

0

あなたの最初の質問では、あなたが "ホスト"と言ったときに "クライアント"を意味すると思います。このためには、コード内にServiceHostのコンストラクタにUriを置く必要があります。 など。

ServiceHost host = new ServiceHost(typeof(HelloWorld), new Uri("http://localhost:1234/helloworld", UriKind.Absolute)); 

プロジェクトを右クリックし、[デバッグ/新しいインスタンスの開始]に進みます。あなたのサービスは、指定されたウリの下で稼働しています。 Visual Studioで、上部にある[デバッグ]メニューに移動し、[すべてをデタッチ]を選択します。これで、サービスを使用するアプリケーションはまだ実行されています。これで、クライアントプロジェクトに行って、以前使っていたようなサービス参照を追加することができます。 [サービス参照の追加]ダイアログでUriを入力してください。

最後の質問です。ビジュアルスタジオがサービス参照用のローカルファイルを作成することを意味します。デベロッパーとして、そのクライアントクラスをサービスそのものと同じように使用する必要があります:-)

関連する問題