一、WCF簡介 1、什麼是WCF? WCF的全稱是:Windows Communication Foundation。從本質上來說,它是一套軟體開發包,是微軟公司推出的符合SOA思想的技術框架。 2、WCF中包括哪些東西? WCF為程式員提供了豐富的功能,其中包括:托管、服務實例管理、非同步、安全、事 ...
一、WCF簡介
1、什麼是WCF?
WCF的全稱是:Windows Communication Foundation。從本質上來說,它是一套軟體開發包,是微軟公司推出的符合SOA思想的技術框架。
2、WCF中包括哪些東西?
WCF為程式員提供了豐富的功能,其中包括:托管、服務實例管理、非同步、安全、事務管理、離線隊列等。並且WCF對產業中的標準協議進行了封裝和定義, 它把程式員從繁瑣的通信、格式編碼中解放出來,使得程式員能夠專註於業務邏輯的實現。同時,WCF統一了微軟公司之前推出的多種分散式技術,其中包 括:
1. Web服務和WSE。
2. .Net Remoting。
3. .Net 企業服務。
4. 微軟消息隊列(MSMQ)。
3、WCF用來做什麼?
主要是用來做松耦合的分散式通訊的,它還有另外一個名字叫Indigo,是微軟邁向SOA一個重要的標誌。WCF是.Net Framework的一個子集。
4、WCF體系框架
WCF的體系基本包含了4個方面,分別為契約、服務運行時、消息和寄宿。
1 契約(能幹什麼)
從SOA的概念上來看,契約屬於一個服務公開介面的一部分。一個服務的契約,定義了服務端公開的服務方法、使用的傳輸協議、可訪問的地址、傳輸 的消息格式等內容。基本上,契約的定義描述了該服務的功能和作用,它告訴SOA系統中的其它節點這個服務是“乾什麼”的。
2 服務運行時(怎麼乾)
服務運行時定義了服務在運行時的具體行為。如果說契約描述了服務是“乾什麼”的,那麼服務運行時就在一定程度上描述了服務是“怎麼乾”的。
3 消息
消息方麵包含了消息的傳輸方式、消息的編碼與解碼。消息方面的內容基本屬於服務邊界以內的具體實現。具體的傳遞時限,必須符合在契約中定義的 綁定協議。
4 激活和宿主(在哪乾)
激活和宿主屬於WCF程式的部署方式。一個WCF服務需要在一個可運行的程式中寄宿,我們可以把宿主理解為WCF運行的容器。常用的寄宿方式包括 自寄宿、IIS寄宿、Windows激活服務、Windows服務、Com+組件等。根據SOA的原則,激活和宿主類型的變化不會影響服務本身的特性和外部對該服 務的訪問,而WCF在這一方面也確實做的非常出色。
5.WCF體繫結構
6、WCF、WEB API、WEB SERVICE的異同
Web Service
1、它是基於SOAP協議的,數據格式是XML
2、只支持HTTP協議
3、它不是開源的,但可以被任意一個瞭解XML的人使用
4、它只能部署在IIS上
WCF
1、這個也是基於SOAP的,數據格式是XML
2、這個是Web Service(ASMX)的進化版,可以支持各種各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.
3、WCF的主要問題是,它配置起來特別的繁瑣
4、它不是開源的,但可以被任意一個瞭解XML的人使用
5、它可以部署應用程式中或者IIS上或者Windows服務中
Web API
1、這是一個簡單的構建HTTP服務的新框架
2、在.net平臺上Web API 是一個開源的、理想的、構建REST-ful 服務的技術
3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,緩存,版本控制,多種內容格式)
4、它也支持MVC的特征,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴註入(DI),單元測試。這些可以使程式更簡單、更健壯
5、它可以部署在應用程式和IIS上
6、這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好
7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
技術這麼多,我該選誰?
1、當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇WCF
2、當你想創建一個服務,可以用更快速的傳輸通道時,像TCP、NamedPipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支持HTTP。
3、當你想創建一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特征時(比如URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇WebAPI
4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API
7、WCF的優勢
WCF性能優勢之統一性:
WCF是對於ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的整合。
WCF性能優勢之互操作性:
於WCF最基本的通信機制是SOAP,這就保證了系統之間的互操作性,即使是運行不同的上下文中。
可以跨進程、跨機器甚至於跨平臺的通信,只要支持標準的Web Service,例如J2EE應用伺服器(如WebSphere,WebLogic)。應用程式可以運行在
Windows操作系統下,也可以運行在其他的操作系統,如Sun Solaris,HP Unix,Linux等等。
WCF性能優勢之安全與可信賴:
WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用於用戶認證,數據完整性驗證,數據隱私等多種安全因素。
WCF性能優勢之相容性:
WCF充分的考慮到了與舊有系統的相容性。安裝WCF並不會影響原有的技術如ASMX和.Net Remoting。