WCF學習——WCF簡介(三)

来源:http://www.cnblogs.com/songjianhui/archive/2017/06/23/7068742.html
-Advertisement-
Play Games

一、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。

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • composer Install 官網 https://getcomposer.org Composer 是 PHP 用來管理依賴(dependency)關係的工具。你可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫文件。 下麵使用比較簡單使用 ...
  • 串口初始化後第一次發送數據丟失第一個字元的問題,現象是在上電或者複位後調試串口的列印信息總是會丟掉第一個字母。 解決: 一直是在原有項目基礎上進行工作,一直沒有處理這個問題,今天有時間看了看,發現是因為fputc函數中用的是GetFlagStatus函數,嘗試改為while((USART3->SR& ...
  • 第一種:查看實時變化的日誌(比較吃記憶體) 最常用的: tail -f filename (預設最後10行,相當於增加參數 -n 10) Ctrl+c 是退出tail命令 其他情況: tail -n 20 filename (顯示filename最後20行) tail -n +5 filename ( ...
  • 本文目錄: 1.1 選項說明 1.2 嘗試一次掃描 1.3 掃描目標說明 1.4 埠狀態說明 1.5 時間參數優化 1.6 掃描操作系統類型 1.7 快速掃描存活的主機 1.8 快速掃描埠 nmap一般就用來掃描主機是否線上(特別是掃描區域網記憶體活的機器)、開放了哪些埠。其他的功能用的比較少, ...
  • 本文目錄: 1.1 tcpdump選項 1.2 tcpdump表達式 1.3 tcpdump示例 tcpdump採用命令行方式對介面的數據包進行篩選抓取,其豐富特性表現在靈活的表達式上。 不帶任何選項的tcpdump,預設會抓取第一個網路介面,且只有將tcpdump進程終止才會停止抓包。 例如: s ...
  • 轉載請註明出處:http://www.houxiurong.com/?post=27 Mac預設是安裝了ssh工具軟體的。 先用mac的 終端工具生成 id_rsa 和id_rsa.pub 秘鑰,生成方式如下: 1、當前用戶目錄下,檢查SSH公鑰 cd ~/.ssh 看看存不存在.ssh,如果存在的 ...
  • 學習單片機過程中遇到兩個問題: 1、寫好串口代碼,手邊沒有硬體調試; 2、串口收發出現奇怪的問題,無法定位; 經過百度,百度,再百度後,終於找到瞭解決方法,那就是:串口收發模擬。不多說,總結如下: 實驗需要的軟體:VSPD(Virtual Serial Port Driver)、串口調試助手、Kei ...
  • 1.看似針對同樣一段查詢表ef達式,重覆執行卻沒有被記錄下來。其實這是正常情況,因為ef並沒有重覆去執行 相同sql查詢。 2.MiniProfiler結合MVC過濾器進行 攔截記錄Sql,示例代碼: 3.以上的miniprofiler並不能 攔截到 sql語句查詢,需要使用 minprofiler ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...