1. 程式人生 > 其它 >WCF學習——WCF簡介(三)

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