2014-01-21 37 views
2

在Windows服務中自託管WCF服務是否有任何限制(性能,內存,線程等)而不是使用IIS?有大量的文章顯示如何做到這一點,但很少討論如果你應該這樣做。我構建的一個相當複雜的應用程序需要我自行託管WCF服務以進行點對點通信。在服務器上使用與全局用戶必須訪問的「主」服務相同的自託管模式是非常誘人的。自託管的WCF服務以任何方式受到限制嗎?

+1

任何理論問題應該添加在http://meta.stackoverflow.com/,stackoverflow是爲任何編碼\邏輯相關的問題 – dreamweiver

+3

meta.stackoverflow.com是關於主站點的問題,而不是有關編程的理論問題。 –

+2

您可能想要閱讀[此MSDN頁面](http://msdn.microsoft.com/zh-cn/library/bb332338.aspx)它將WCF託管與IIS進行比較,並顯示每個的優點和缺點。 –

回答

0

我幫助架構兩個利用WCF自託管的系統,它工作得非常好(我們使用NetTCP作爲底層通信協議)。這主要是一個概念證明,看看我能否做到這一點,並且最終運行得非常好,儘管有一些性能方面需要考慮。首先,根據服務數量的不同,你的內存佔用量可能會變大一些 - 我所構建的服務有40個獨立服務,但接下來的支持團隊不斷增加新服務,最後我聽到了92。這開始引入一些緩慢的啓動時間,除非你在自己的AppDomain下打開每個進程的初始化過程(你肯定會想做的事情)有一些額外的開銷。我不能說是否性能比IIS託管更好/更差,但總體而言,它的確運行良好 - 只是準備好了解關於後臺線程和AppDomain的相當數量作爲過程的一部分。

4

要考慮的要點是:

  • Port Sharing:IIS給你端口共享是免費的。要在自己託管的環境中使用端口共享,您需要自己處理此問題
  • 有限的可用性:只有在應用程序正在運行時才能訪問該服務。
  • 有限功能:自託管應用程序對高可用性,易管理性,健壯性,可恢復性,版本控制和部署方案的支持有限。至少,開箱即用的WCF不提供這些功能,因此在自主託管的場景中,您必須自己實現這些功能;例如,IIS在默認情況下提供了其中一些功能。

查看the MSDN docs以瞭解您需要考慮的權衡概述。