私は、WCFおよびNetTCPサービスを利用するエンタープライズレベルのアプリケーションを作成中です。私は最初は好奇心からNetTCPを選択しましたが、データ処理の量が多いために結果を返すのに5時間以上かかると呼ばれるサービスを利用できるため、後でそれが最善の選択肢であると判断しました。
私が現在サービスを生み出す方法は、複数のステップからなるプロセスです。いくつかのデフォルトのもの(ポート番号、接続しているクライアントのサーバー名、HTTPとNetTCPを有効にするかどうかなど)を指定し、その下に「サービス」のコレクションがある構成ピース(System.Configurationを使用)がありますそれ。たとえば、基本的なものは次のようになります。
<serverConfiguration tcpListenerPortNumber="60000" httpGetEnabled="true" httpListenerPortNumber="6000" serverName="localhost" retryEnabled="true" retryInterval="5" maxRetryAttempts="3">
<services>
<add virtualDirectory="Service1" applicationName="Service1" assembly="SampleService" type="SampleService.Service1" />
</services>
</serverConfiguration>
基本的に、ここで起こっていることは、私のWindowsサービスが開始され、<services />コレクション内のすべてを調べて、サービスごとにスレッドを生成し、起動時間を短縮します。各スレッドには、サービスが実際に存在するAppDomainが含まれているため、サービスに何らかの種類がある場合障害が発生しても、システムはダウンしません。
私が直面している「問題」は、このアプリケーションが約20のサービスをホストしており、すべてのサービスが稼働するまでに15〜20秒かかることです。スレッド化とAppDomainの部分を実行して、その値に下げました(各サービスが順番に開かれるため、1分以上かかりました)が、実際にははるかに高速になる可能性があります。
誰か提案がありますか?Google Bingには、1つのサービスをホストするための例がたくさんありますが、実際のアプリケーションについてはあまりわかりません(残念ながら、「HelloWorld」はエンドユーザーにとって魅力的ではありません)。現在、WindowsサービスとNetTCPを介して複数のサービスをホストしている場合、どのように行っていますか?