你愛上的微軟陷阱「它只是網絡服務」 :-)
它實際上很多更:
- 它是關於面向服務的編程一般(不只是網絡服務 - 你也可以編寫基於TCP/IP的服務,MSMQ基於隊列的消息傳遞等等)
- 這是關於統一到目前爲止存在的所有不同的編程模型(ASMX,企業服務,DCOM,.NET遠程處理)
- 它是關於提供大量現成的和即用型管道系統它可以處理可靠的消息傳遞,事務支持,任何形狀或任何形式的安全,服務發現,以及更多
- 它是關於將服務實現與客戶端將如何調用它的細節分開,並使其成爲一個可配置的協議棧,編碼等
當然 - 這些東西大部分可以在ASMX或.NET遠程處理 - 但嘗試將ASMX Web服務轉換爲可調用在您的Intranet中使用TCP/IP和傳輸安全性......許多這些「舊」技術與他們如何使用它們有着非常複雜和直接的聯繫 - 在不更改整個服務代碼的情況下,您不能輕易更改。
WCF將所有這些「管道細節」分離出來,例如要調用哪個端點,使用什麼協議調用它,如何處理安全等,然後將其配置爲可組合的「WCF堆棧」,以便您輕鬆切換服務XYZ使用允許匿名用戶調用它的HTTP,使用需要Windows憑據的TCP/IP - 您的服務代碼不會改變 - 它只是管道配置。
這對我來說是WCF最引人注目的原因 - 我完全可以專注於我的實際服務代碼,並且不會污染大量管道工具 - 如何處理傳輸和文本編碼等等。而且,我可以輕鬆更改並適應部署中的新需求和需求,而無需觸摸我的實際服務代碼。
另外,第二個重點是可擴展性 - 大多數舊技術只有他們自己的一種設置方式,許多都不適用於擴展。你必須要麼按照他們的方式來使用它,要麼就忘了它。 WCF有一個龐大而複雜的系統來擴展幾乎任何東西 - 你可以創建自己的傳輸協議(人們已經創建了基於UDP或SMTP的綁定),你可以創建自己的消息編碼器(就像我必須做的與網絡交談服務只能理解ISO-8859-1編碼的消息),並且您可以擴展WCF中的其他任何內容 - 所有這些都是以有組織,記錄完備,非常穩定和安全的方式進行的。
因此,這兩件事情 - 將管道分解爲可配置的層,並且最大限度地擴展 - 是我使用WCF的最有說服力的理由。
http://stackoverflow.com/questions/924756/what-am-i-missing-about-wcf – Kobi 2009-09-06 07:06:20