2011-01-13 105 views
3

看來MS是搬起石頭砸自己的腿允許IIS以外的WCF服務託管。從我的角度來看,IIS相對比較簡單,但對於服務來說卻是冗餘層。 WCF的引入極大地簡化了使IIS陷入萎縮的服務託管。所以你怎麼看?我錯過了什麼?爲什麼我會使用IIS進行WCF服務?因爲我沒有看到一個理由。WCF:服務託管IIS以外使IIS的萎縮

+1

IIS是微軟手頭上唯一的通用主機 - 但我認識的大多數WCF專家(例如Juval Lowy)都認爲**永遠不會**使用IIS來託管生產級WCF服務。我總是把我的生產WCF服務放入自託管的NT服務中。 – 2011-01-13 07:34:15

+1

@marc_s:+10如果我可以的話。 – Schultz9999 2011-01-13 07:40:39

+0

@marc_s:無法編輯我以前的帖子。只是想提一下,NT服務是在崩潰情況下自動啓動和重新啓動的好方法。它完全解決了泡利的公告2。 – Schultz9999 2011-01-13 08:09:28

回答

6

內IIS託管,如果你想,即有它的優勢。使用底層的asp.net框架進行認證和授權。請記住,這要求AspNetCompatibilityRequirementsMode屬性設置爲必需。這也使您可以訪問HttpContext.Current,以便輕鬆檢索後值,Cookie等。

http://msdn.microsoft.com/en-us/library/ms734710.aspx

  • 在IIS託管WCF服務的部署,就像任何其他類型的IIS應用程序,包括ASP.NET應用程序和ASMX管理。
  • IIS提供進程激活,健康管理和回收功能,以提高託管應用程序的可靠性。訪問Health Monitoring Features可讓您監視Web應用程序的狀態。
  • 像ASP.NET,ASP.NET中的託管可以利用ASP.NET的WCF服務共享主機多個應用程序駐留在爲提高服務器的密度和可擴展性普通工人的過程模型。
  • 在IIS託管WCF服務使用相同的動態編譯模型ASP.NET 2.0,它簡化了開發和託管服務的部署。
3

我同意有些。儘管有許多優點聖保利提到了他的崗位(+1爲),我看到幾個理由不選擇IIS的WCF:

  • 淨*綁定: IIS本身不支持非HTTP/S綁定諸如(非常有用的)NetTcpBinding,NetNamedPipeBindingNetMsmqBinding。你可以使用Windows Process Activation,但那不再是真正的IIS了。此外,舊版本的IIS沒有WAS,因此根本不支持非HTTP/S綁定。
  • 配置&部署: IIS(和WAS)的配置開銷很大,考慮到服務的部署方案,這可能不合理。
  • 依賴關係&測試:使用IIS(或WAS)會在這些組件上創建額外的依賴關係。 IIS僅支持每個Windows版本的特定版本而臭名昭着,並且使用許多不同版本測試您的服務很容易成爲一種負擔。 .NET Framework的確切版本可以部署在一臺機器上,而自託管功能可以確保最少數量的變量。
  • 易於使用:上述配置,部署和依賴性的問題可能被證明是一個重大的,有時甚至多餘的學習曲線,尤其是對非HTTP/S服務。
  • 靈活性:如果您已經有一個作爲Windows服務運行的.NET應用程序,那麼您可以在其中託管WCF而無需額外的管理工作 - 如果某人已經保留了您的服務,那麼WCF將隨之啓動。
1

我不同意到現在,即Windows Server 2008/2008R2中的IIS 7/7.5。是的,在IIS 6中,您有正當的理由來託管IIS以外(例如,如果您使用net.tcp綁定)。但IIS爲您提供了更好的身份驗證,負載平衡,容錯,監控等方面的可能性,而不像自己託管那樣簡單例如我從來沒有設法使用客戶端證書與自我託管服務正常工作的SSL。或者嘗試根據IP地址進行限制等。以.svc結尾的服務的URL在WCF 4.0中也是無效的。另一個優點是大多數系統管理員都熟悉IIS管理員管理器,並且可以通過GUI輕鬆更改web.config中的所有設置以獲得操作支持。部署已經變得更容易了,你基本上可以從一個IIS站點克隆到生產環境。使用IIS的Appfabric擴展,您可以獲得非常詳細的服務調用監視和控制面板(如調用/秒,失敗調用/秒,平均調用持續時間等),用於工作流託管服務的服務調用持久性等。您還可以監控所有IIS和站點爲整個公司從一箇中央控制檯我覺得這是即使SCOM

一個集成的AppFabric的概括地說,我相信企業級託管IIS &應的AppFabric託管WCF服務進行選擇。