天天看點

什麼是wcf

Wcf是分布式、可擴充、可配置、統一的程式設計模型,是多種既有技術的綜合。在wcf身上,你可以找到ASP.NET Web Service、WSE、.Net Remoting、COM/DCOM、MSMQ等技術的身影。

ASP.NET Web Service

跨平台,基于開放的标準,包括XML、XSD、SOAP和WSDL等。

WSE(Enhancement)

對ASP.NET Web Service的增強,使ASP.NET Web Service正式成為一個适合企業級應用的通信架構。MS推出了WSE1.0、2.0和3.0,分别實作對不同的WS-*标準的支援,如WS-Security、WS-Routing、WS-Addressing、WS-MTOM等。

.Net Remoting

第一個基于.NET的分布式通信技術。Wcf和.Net Remoting最為類似。兩者都采用基于信道棧的“管道式”消息處理機制,且可擴充。兩者還都使用相同的服務寄宿和調用方式。.Net Remoting最大的不足在于無法跨平台。

COM/DCOM

COM元件基于相同的規範進行互相通信。一個元件包含一個接口和一個唯一辨別(GUID)對外提供服務。COM的優點是支援不同語言編寫的元件的互操作。DCOM是實作了分布式遠端調用的COM技術,支援可靠、安全傳輸。

MSMQ

MSMQ的優點:異步消息發送、離線通信的支援、消息發送方和接收方完全解耦、支援可靠傳輸、支援事務。

要是沒有wcf,開發人員必須學習不同的通信技術,還需要使用不同的開發模型,學習成本和開發成本都很高。使用wcf,開發人員便可以隻需要掌握一種技術就可以完成Web Service、.Net Remoting、COM/DCOM、MSMQ等技術具有的全部功能。

Wcf與asp.net web service的差別

首先,單純的web service隻是一個行業标準,它使用xml來表示資料,這是跨平台和跨語言的基礎,web service的核心是soap、wsdl和uddi。而asp.net web service是它的一種實作。Wcf一定程度上就是asp.net web service,因為它支援web service的标準WS-*。asp.net web service和wse能完成的事情,wcf也能完成。除此之外,wcf還是ms其他通信技術的集大成者,它可以跨程序、跨機器、跨子網、企業網乃至于 Internet來進行通信,是ms提供的用于通信的“瑞士軍刀”。相較于asp.net web service,wcf有以下不同。

  • WCF 支援多種通信協定 Http/Https 、TCP/UDP、MSMQ、命名管道、對等網、消息可達性、事務流等。
  • WCF可以與ASP.NET 內建、共享一個上下文(HttpContext)。
  • WCF 支援多種消息傳輸格式:text,binary,mtom,Json 等。
  • WCF 安全性要強:支援對稱安全、非對稱安全、消息安全、傳輸安全、SSL流安全、Windows 流安全等。
  • WCF 支援REST 。
  • WCF支援多種格式化方式。DataContractSerializer、XmlSerializer、DataContractJsonSerializer等。
  • WCF 支援 WAS Hosting、Windows Hosting、Self-Hosting、IIS Hosting等。
  • WCF支援多種并發模式:單例、單調、會話。

繼續閱讀