我正在編寫利用WCF和NetTCP服務的企業級應用程序。我最初出於好奇而選擇了NetTCP,但後來確定它是我的最佳選擇,因爲我可以使用稱爲服務的服務,因爲所涉及的數據處理量大,需要5個多小時才能返回結果。WCF自我託管性能
我目前產生我的服務的方式是一個多步驟的過程。我有一個配置部分(使用System.Configuration),它指定了一些默認的東西(端口號,連接客戶端的服務器名稱,是否啓用HTTP以及NetTCP等),並且具有下面的「服務」集合它。例如,這裏有一個基本的樣子:
<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部分,以便將其降低到該值(每次服務按順序打開時用於佔用一分鐘),但在我看來,這實際上可能會快得多。
任何人有任何建議嗎? Google Bing有大量的託管一個服務的例子,但我沒有找到真正的應用程序(遺憾的是「Hello World」只是不吸引最終用戶)。如果您目前通過Windows服務和NetTCP託管多項服務,那麼您最近怎麼做?
它需要比這更快嗎?如果它每天只啓動一次,那麼這是每天20秒。這不是很長時間。 – 2009-06-20 20:58:07
這主要是在調試過程中,它比較慢,所以這是我試圖擠出性能的主要區域。服務本身將無限期地運行(減去重啓等等)。 – RubyHaus 2009-06-21 21:50:57