私はWCFとNetTCPサービスを利用してエンタープライズレベルのアプリケーションを作成しています。最初は好奇心からNetTCPを選択しましたが、後でそれが私にとって最良の選択肢であると判断しました。これは、関連するデータ処理のために結果を返すために5時間以上かかるサービスを呼び出すことができるからです。WCFセルフホスティングのパフォーマンス
私の現在のサービスを呼び出す方法は、複数のステップからなるプロセスです。私は、いくつかのデフォルトのもの(ポート番号、接続するクライアントのサーバー名、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サービスがキックオフされ、<サービス/ >コレクションにすべてのものを見て、起動時間を高速化するサービスごとにスレッドをオフに生成します各スレッドにサービスが本当に存在するAppDomainが含まれています。サービスに何らかの障害があると、システムが停止しません。
私が実行している「問題」は、このアプリケーションが約20のサービスをホストしていることと、すべてのサービスが起動して実行されるのに15-20秒かかることです。私はスレッディングとAppDomainの部分を(各サービスが順番に開かれるにつれて1分以上かかっていた)その値にまで落としましたが、これは実際にはもっと速く進むかもしれません。
誰もが何か提案がありますか? Google Bingには1つのサービスをホスティングするための例がたくさんありますが、現実のアプリケーションではそれほど多くは見つけられません(悲しいことに、「Hello World」はエンドユーザーにとって魅力的ではありません)。現在、WindowsサービスとNetTCPを介して複数のサービスをホストしている場合、どうしていますか?
これより速くする必要がありますか? 1日に1回しか起動しない場合は、1日20秒です。それは長い時間ではありません。 –
これは主にデバッグ中に遅くなるため、パフォーマンスを圧迫しようとしている主な領域です。サービス自体は無期限に実行されます(リブートなどを除いて)。 – RubyHaus