[英]WCF; what's the big deal?
您已經迷上了“僅與Web服務有關”的Microsoft陷阱:-)
實際上還有很多 :
當然-這些工作大部分可以在ASMX或.NET遠程處理中完成-但請嘗試使用TCP / IP和傳輸安全性將ASMX Web服務轉換為可在您的Intranet中調用的...許多“較舊”的技術都有與它們的使用方式非常復雜且直接的鏈接-如果不更改整個服務代碼,就無法輕松地更改它們。
WCF將所有這些“管道詳細信息”(例如,要調用的端點,用於調用該協議的協議,如何處理安全性等)分離為可配置和可組合的“ WCF堆棧”,因此您可以輕松地切換服務XYZ以使用HTTP允許匿名用戶調用它,使用需要Windows憑據的TCP / IP-您的服務代碼不會有任何變化-這只是管道的配置。
對我來說,這是WCF最令人信服的原因-我可以完全專注於我的實際服務代碼,而不用大量繁瑣的工作來污染它-如何處理傳輸和文本編碼等等。 而且,我可以輕松更改它並適應部署中的新要求和需求,而無需觸碰實際的服務代碼。
另外,第二個要點是可擴展性-大多數較舊的技術只有一種,即固定的工作方式,而許多則不適合擴展。 您要么適應於以他們的方式使用它,要么就忘了它。 WCF有一個廣泛而復雜的系統,可以擴展幾乎所有內容-您可以創建自己的傳輸協議(人們已經創建了基於UDP或SMTP的綁定),可以創建自己的消息編碼器(就像我不得不與Web交談一樣)服務,它只能理解ISO-8859-1編碼的消息),並且您可以在WCF中擴展幾乎所有其他內容-所有這些都以有組織,有據可查,非常穩定和安全的方式進行。
因此,這兩件事-將管道分離成可配置的層,以及最大程度地擴展-是我使用WCF的最令人信服的理由。
編輯:上面的Kobi 鏈接比我的答案好得多。
WCF基本上是支持通信的更好的體系結構。 它打破了許多依賴關系,例如托管(不依賴iis),傳輸,安全性,尋址插件組件,並允許高度定制。
是的,您可以使用傳統技術做很多事情,但是可以使用WCF做更多的事情。 如果您現在不需要功能,那么您當然可以繼續使用舊技術,但是如果您願意,可以現在就着眼於未來,選擇更好的體系結構,但這是以必須立即轉換技術為代價的。
舉這個例子。 如果您有舊版的Asmx Web服務,那么如何通過MSMQed端點輕松提供相同的服務? 使用WCF,就像添加新的配置設置一樣簡單。
我假設您不是在問“為什么不只堅持使用SOAP / HTTP”。 WSF允許您選擇多種不同的傳輸方式,而不僅僅是簡單的HTTP,但是隨着您觀察到WS- *技術,您可以選擇所有傳輸方式。 因此,我想您想問的是,當原始技術並非不可能復雜時,為什么要使用功能強大但復雜的框架?
您可以對任何框架都問同樣的問題。 您可以只使用基本技術,而不必采用該框架的學習曲線。
WCF之類的框架確實具有學習曲線,但是請考慮如果不使用它們,會發生什么:
您發現您為每個服務調用編寫了樣板代碼。 然后,您要么接受復制,要么開始重構並構建自己的庫。 不久之后,您就開發了自己的框架,但是它與其他人的框架並不相同。 因此,任何新的團隊成員都必須學習您的本地框架,認真學習。
另請注意,WCF解決了諸如監視已部署解決方案的問題。
對我最大的吸引力是可測試性 。 服務由CLR接口定義,在測試工具中很容易模擬。 但是,有些警告。 具有極大的靈活性會給配置過程帶來一些麻煩,並帶來一些“陷阱”。 一個陷阱的一個例子是,WCF(嚴格遵循“最佳實踐”)需要一個活動的SSL連接,以便通過HTTP傳遞SOAP身份驗證憑據。 這在很大程度上阻礙了測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.