1

[WCF初心者]
基本的なクライアントサーバーWCFプロジェクトがあります。
私のサービスは「GUI」のないアプリケーションです。つまり、winformアプリケーションを作成し、Form1.csとGUIを開始する行を削除しました。
サービスは正常に実行されています。servicehost.openを使用しています。
私の問題は、「シリアル」(同期)であるため、1秒後にアプリケーションが存在することです。
アプリケーションを存続させ、ホストをリッスンするにはどうすればよいですか?
プロセスを停止してから、終了するときにhost.closeを実行する必要があります。ありがとう

これはサービスのコードです:

class Program
{
    public static Uri BaseAddress;
    [STAThread]
    static void Main(string[] args)
    {

        string baseAddressStr = "http://localhost:7000/someservice";
        BaseAddress = new Uri(baseAddressStr);
        using (ServiceHost host = new ServiceHost(typeof(MyClass)BaseAddress))
        {
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
            host.Description.Behaviors.Add(smb);

            host.Open();
            host.Close();
        }
    }
}
4

1 に答える 1

2

ウィンドウのない WinForms アプリで WCF サービスをホストする必要はないと思います。無期限に開いたままにしたい場合は、Windows サービスで WCF サービスをホストする方法があります。ここに基本的なサンプルがあります。

メリットは明らかです。

  1. ユーザーがログインしていなくても実行できます。
  2. アプリケーションを開いたままにするための回避策は必要ありません。

さらに、WCF 構成 (ベース アドレス、サービス動作など) をアプリケーション構成ファイルに外部化することを検討する必要があります。開発、テスト、受け入れ、および運用環境によって異なる可能性がある構成で何か (何か) が変更されるたびに、サービスを再構築して再デプロイする必要はありません。

于 2013-03-17T13:31:06.257 に答える