介紹一下C# WCF服務


  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而不管不同的傳輸機制。

  是以契約(Contract) 來定義雙方溝通的協議,契約必須要以接口的方式來體現,而實際的服務代碼必須要由這些契約接口派生並實現。契約分成了四種:

  數據契約(Data Contract),訂定雙方溝通時的數據格式。服務契約(Service Contract),訂定服務的定義。操作契約(Operation Contract),訂定服務提供的方法。消息契約(Message Contract),訂定在通信期間改寫消息內容的規范。

  WCF 實現上已經支持了傳輸層次安全性 (Transport-level security) 以及消息層次安全性 (Message-level security) 兩種。

  傳輸層次安全性:在數據傳輸時期加密,例如 SSL。

  消息層次安全性:在數據處理時就加密,例如使用數字簽名,散列或是使用**加密法等。

  2:WCF能做什么

  WCF 整合ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術,主要用於在分布式系統中提高網絡和服務的支持,寄宿的宿主可以是命令行控制台、IIS、桌面程序等。

  整合了原有的windows通訊的 .net Remoting,WebService,Socket的機制,並融合有HTTP和FTP的相關技術。

  簡單的歸結為四大部分

  網絡服務的協議,即用什么網絡協議開放客戶端接入。業務服務的協議,即聲明服務提供哪些業務。數據類型聲明,即對客戶端與服務器端通信的數據部分進行一致化。傳輸安全性相關的定義。

  通信雙方的溝通方式,由合約來訂定。通信雙方所遵循的通信方法,由協議綁定來訂定。通信期間的安全性,由雙方約定的安全性層次來訂定。

  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串行采用

  Systemtime.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服務不支持雙工服務操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM