winform UI で実行時に wcf サービスを追加するにはどうすればよいですか。ホストされたマシンの実行中のプロセスを返す wcf サービスを作成しました。winform アプリケーションにホステッド マシン サービスを追加したいと考えています。
3 に答える
実行時にエンドポイントを動的に変更する必要があるため、WCFディスカバリーが必要です。
構造 :
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
実装 :
- 方法:検出プロキシを実装する
- 方法:DiscoveryProxyに登録するDiscoverableサービスを実装する
- 方法:DiscoveryProxyを使用してサービスを検索するクライアントアプリケーションを実装する
トポロジー:
- DiscoveryServiceを開始します[StructureBackBone]
- サービスの開始[すべてのサービスは、DiscoveryServiceの起動をアナウンスします]
- クライアントを開始します[すべてのクライアントは、Discovery ServiceからサービスのエンドポイントをDiscover (Find&RESOLVE )します]
ノート :
- 検出プロセスはUDPを使用します(ファイアウォールを確認してください。接続をブロックする可能性があります)
- サービスは起動をアナウンスする必要があるため、セルフホストサービスは問題ありませんが、IISホストの5/6サービスは、最初の呼び出しが発生したときに自動的に開始されるため、そうではありません。
IISがホストする5/6の問題の解決:
初めて呼び出されることなく、IISがホストする5/6サービスを手動で開始できるようにします
WCFルーティングサービスを使用することもできます。
兄弟のヒント:
サーバーレス(No-BackBone、No-BootleNeck、Fully-Distributedなど)の理想的なトポロジを求めてはいけません。これは頭を爆破し、夢中になります:D
初心者には、このチュートリアル[ WCFチュートリアル]をお勧めします
ここで何をしようとしているのかわからない。ただし、WCFサービスを呼び出すには2つのことを知っておく必要があります。1)サービス契約2)エンドポイント。これで、消費できるすべての操作を知る必要があるため、サービス契約から逃れることはできません。ただし、WCF 4には、エンドポイントを動的に(つまりRunTimeで)決定するのに役立つWCFディスカバリーと呼ばれる新機能があります。次のリンクを参照してくださいhttp://msdn.microsoft.com/en-us/library/dd456791.aspx
私があなたの質問を正しく理解している場合は、*。configファイルと*.svcファイルの構成を使用せずに実行時にサービスを追加するコードが必要です。
そのサンプルを参照してください:
Uri baseAddress = new Uri("http://localhost:8080/hello");
// Create the ServiceHost.
using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
{
// Enable metadata publishing.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
// Open the ServiceHost to start listening for messages. Since
// no endpoints are explicitly configured, the runtime will create
// one endpoint per base address for each service contract implemented
// by the service.
host.Open();
Console.WriteLine("The service is ready at {0}", baseAddress);
Console.WriteLine("Press <Enter> to stop the service.");
Console.ReadLine();
// Close the ServiceHost.
host.Close();
}
コンソールアプリでセルフホストサービスを作成します。
http://msdn.microsoft.com/en-us/library/ms731758.aspx
それはあなたが尋ねたことですか?