1:什么是WCF。
WCF(Windows Communication Foundation)是由微軟開發的一系列支持數據通信的應用程序框架,可以翻譯為Windows 通訊開發平台。整合了原有的windows通訊的 .net Remoting,WebService,Socket的機制,並融合有HTTP和FTP的相關技術。是Windows平台上開發分布式應用最佳的實踐方式。
WCF是.Net框架中的技術,用來創建面向服務的應用程序,交換不同通信方案里的消息,以及執行服務操作生成的工作流。WCF應用程序由三部分組成 - WCF服務,WCF服務主機和WCF服務客戶端。 WCF平台有時也被稱為服務模型。 WCF的基本特征是互操作性。這是微軟用於構建面向服務的應用程序的最新技術之一。根據基於消息的通信的概念中,一個HTTP請求可以被均勻地表示,WCF是一個統一的API而不管不同的傳輸機制。
2:WCF能做什么
WCF 整合ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術,主要用於在分布式系統中提高網絡和服務的支持,寄宿的宿主可以是命令行控制台、IIS、桌面程序等。
3:WCF有什么優勢
1:互操作性。
WCF最基本的通信機制是SOAP(Simple Object Access Protocol 簡易對象訪問協議),這就保證了系統之間的互操作性,即使是運行不同的上下文中。這種通信可以是基於.Net到.Net間的通信,可以跨進程、跨機器甚至於跨平台的通信,只要支持標准的Web Service,例如J2EE應用服務器(如WebSphere,WebLogic)。應用程序可以運行在Windows操作系統下,也可以運行在其他的操作系統,如Sun Solaris,HP Unix,Linux等等。
2:安全性。
WCF服務的提供增強的可靠性和安全性,WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用於用戶認證,數據完整性驗證,數據隱私等多種安全因素,實現了傳輸層次安全性 (Transport-level security) 以及消息層次安全性 (Message-level security) 兩種。在SOAP 的header中增加了WS-ReliableMessaging允許可信賴的端對端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基於SOAP格式交換的信息,則支持兩階段的事務提交(two-phase commit transactions)。上述的多種WS-Policy在WCF中都給與了支持。對於Messaging而言,SOAP是Web Service的基本協議,它包含了消息頭(header)和消息體(body)。在消息頭中,定義了WS-Addressing用於定位SOAP消息的地址信息,同時還包含了MTOM(消息傳輸優化機制,Message Transmission Optimization Mechanism)。
3:統一性。
WCF是對於ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的整合。由於WCF完全是由托管代碼編寫,因此開發WCF的應用程序與開發其它的.Net應用程序沒有太大的區別,我們仍然可以像創建面向對象的應用程序那樣,利用WCF來創建面向服務的應用程序。WCF充分的考慮到了與舊有系統的兼容性。安裝WCF並不會影響原有的技術如ASMX和.Net Remoting。即使對於WCF和ASMX而言,雖然兩者都使用了SOAP,但基於WCF開發的應用程序,仍然可以直接與ASMX進行交互。
4:可擴展性。
WCF提供可擴展性,可以支持出新的web服務標准。
5:支持多種協議。
WCF 支持了HTTP,TCP,Named Pipe,MSMQ,Peer-To-Peer TCP 等協議,而 HTTP 又分為基本 HTTP 支持 (BasicHttpBinding) 以及 WS-HTTP 支持 (WsHttpBinding),而 TCP 亦支持 NetTcpBinding,NetPeerTcpBinding 等通信方式。
4:WCF跟Web服務有什么區別
屬性:WCF服務是通過定義ServiceContract和OperationContract屬性,而在Web服務,WebService和WebMethod屬性用於定義相同。
協議:WCF支持多種協議,即HTTP,命名管道,TCP和MSMQ;而Web服務僅支持HTTP協議。
托管機制:WCF托管不同的激活機制,即IIS(Internet信息服務),WAS(Windows激活服務),自托管和Windows服務,而Web服務則只能由IIS托管。
服務:WCF支持一個強大的安全,值得信賴的消息傳遞,事務性和互操作性,而Web服務只支持保障服務。
序列化:WCF支持DataContract串行采用System.Runtime.Serialization,而Web服務通過使用System.Xml.Serialization支持XML序列化。
工具:ServiceMetadata工具(svcutil.exe)用於客戶機生成的WCF服務而WSDL.EXE工具用來產生相同web服務。
異常處理:在WCF中,未處理的異常都是在一個更好的方式通過使用FaultContract處理,並沒有得到Web服務SOAP(簡單對象訪問協議)故障返回給客戶端等。
有可能要序列哈希Tablein WCF,但這不能在web服務中。
綁定:WCF支持多種類型,如 basicHttpBinding,WSDualHttpBinding,WSHttpBinding等綁定,而Web服務僅支持SOAP或XML。
多線程:WCF支持多線程利用ServiceBehavIor類,而這Web服務不支持。
雙工服務操作:WCF支持雙工服務業務除了支持單向和請求 - 響應服務操作,而Web服務不支持雙工服務操作。