WCF學習——WCF簡介(三)
引用網址:https://www.cnblogs.com/JamelAr/p/7068742.html
一、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。
原始碼地址:
https://github.com/JamelsAr/WcfServicesFirst https://github.com/JamelsAr/WcfServicesSecond https://github.com/JamelsAr/WcfServicesThird