簡體   English   中英

WCF; 有什么大不了的?

[英]WCF; what's the big deal?

我只是想參加WCF 但是到目前為止,我所讀到的內容,例如我在MSDN和其他一些站點上發現的示例場景,都可以使用Web服務和調用這些Web服務的應用程序來完成。 那么,為什么需要像WCF這樣的精細層呢?

我搜索過的大多數比較都從編程的角度進行了解釋。 仍在嘗試尋找答案,但是與傳統的應用到Web服務模型相反,使用WCF層使業務變得有意義,當然還有編程意義。

任何在這方面都有經驗的人都可以就如何選擇Web服務或采用WCF方式提出建議嗎? 僅由應用程序調用的簡單的舊Web服務不能完全完成那些事情,而WCF層將節省很多時間。

您已經迷上了“僅與Web服務有關”的Microsoft陷阱:-)

實際上還有很多

  • 一般而言,這是關於面向服務的編程的(不僅僅是Web服務-您還可以編寫基於TCP / IP的服務,基於MSMQ隊列的消息傳遞等等)
  • 這是關於統一迄今為止存在的所有各種編程模型(ASMX,企業服務,DCOM,.NET遠程處理)
  • 這是關於提供大量現成的和可使用的管道 ,這些管道可以處理諸如可靠的消息傳遞,事務支持,任何您想要的形狀或形式的安全性,服務發現等工作。
  • 這是關於將服務實現與客戶端調用方法的細節分開,並使之成為協議,編碼等可配置的堆棧。

當然-這些工作大部分可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM