0

winform UI で実行時に wcf サービスを追加するにはどうすればよいですか。ホストされたマシンの実行中のプロセスを返す wcf サービスを作成しました。winform アプリケーションにホステッド マシン サービスを追加したいと考えています。

4

3 に答える 3

2

実行時にエンドポイントを動的に変更する必要があるため、WCFディスカバリーが必要です。

構造 :

WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)

実装 :

  1. 方法:検出プロキシを実装する
  2. 方法:DiscoveryProxyに登録するDiscoverableサービスを実装する
  3. 方法:DiscoveryProxyを使用してサービスを検索するクライアントアプリケーションを実装する

トポロジー:

  • DiscoveryServiceを開始します[StructureBackBone]
  • サービスの開始[すべてのサービスは、DiscoveryServiceの起動をアナウンスします]
  • クライアントを開始します[すべてのクライアントは、Discovery ServiceからサービスのエンドポイントをDiscover (FindRESOLVE )します]

ノート :

  • 検出プロセスはUDPを使用します(ファイアウォールを確認してください。接続をブロックする可能性があります)
  • サービスは起動をアナウンスする必要があるため、セルフホストサービスは問題ありませんが、IISホストの5/6サービスは、最初の呼び出しが発生したときに自動的に開始されるため、そうではありません。

IISがホストする5/6の問題の解決:

初めて呼び出されることなく、IISがホストする5/6サービスを手動で開始できるようにします


WCFルーティングサービスを使用することもできます。

兄弟のヒント:
サーバーレス(No-BackBone、No-BootleNeck、Fully-Distributedなど)の理想的なトポロジを求めてはいけません。これは頭を爆破し、夢中になります:D

初心者には、このチュートリアル[ WCFチュートリアル]をお勧めします

于 2012-06-04T00:55:21.253 に答える
1

ここで何をしようとしているのかわからない。ただし、WCFサービスを呼び出すには2つのことを知っておく必要があります。1)サービス契約2)エンドポイント。これで、消費できるすべての操作を知る必要があるため、サービス契約から逃れることはできません。ただし、WCF 4には、エンドポイントを動的に(つまりRunTimeで)決定するのに役立つWCFディスカバリーと呼ばれる新機能があります。次のリンクを参照してくださいhttp://msdn.microsoft.com/en-us/library/dd456791.aspx

于 2012-06-03T22:26:57.857 に答える
0

私があなたの質問を正しく理解している場合は、*。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

それはあなたが尋ねたことですか?

于 2012-06-04T01:17:48.610 に答える