WCF學習之旅—WCF概述(四)

来源:http://www.cnblogs.com/chillsrc/archive/2016/04/01/5345456.html
-Advertisement-
Play Games

一、WCF概述 1) 什麼是WCF? Windows Communication Foundation (WCF) 是用於構建面向服務的應用程式的框架。藉助 WCF,可以將數據作為非同步消息從一個服務終結點發送至另一個服務終結點。服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程 ...


一、WCF概述

1) 什麼是WCF?

      Windows Communication Foundation (WCF) 是用於構建面向服務的應用程式的框架。藉助 WCF,可以將數據作為非同步消息從一個服務終結點發送至另一個服務終結點。服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程式中承載的服務。終結點可以是從服務終結點請求數據的服務客戶端。簡單消息可以是作為 XML 發送的單個字元或單個單詞,複雜消息可以是二進位數據流。一些示例方案包括:

  • 處理企業事務的安全服務。
  • 將當前數據提供給其他服務(例如流量報告或其他監視服務)的服務。
  • 使兩個人能夠實時通信或交換數據的聊天服務。
  • 輪詢一個或多個服務以查找數據並將其以邏輯表現形式展示出來的面板應用程式。
  • 將使用 Windows Workflow Foundation 實現的工作流作為 WCF 服務公開。
  • 輪詢服務以查找最新數據源的 Silverlight 應用程式。

       雖然在 WCF 存在之前就可以創建此類應用程式,但 WCF 使終結點的開發比以前更容易。整合了windows中原有的通訊技術產,包括 .net Remoting,WebService,Socket的機制,並融合有HTTP和FTP的相關技術。是Windows平臺上開發分散式應用最佳的技術。總之,WCF 設計提供一種用於創建 Web 服務和 Web 服務客戶端的可管理的方式。

2) WCF 包括以下功能集。

  • 服務導向

       使用 WS 標準的一個結果是,WCF 允許您創建面向服務的應用程式。面向服務的體繫結構 (SOA) 依賴 Web 服務發送和接收數據。這些服務具有松耦合的常規優點,而不是從一個應用程式到另一個應用程式進行硬編碼。松耦合關係意味著只要符合基本協定,則在任何平臺上創建的任何客戶端均可連接到所有服務。

  • 互操作性

WCF 實現了 Web 服務互操作性的現代行業標準。

  • 多種消息模式

       採用多種模式之一交換消息。最常用的模式是請求/答覆模式,其中一個終結點從另一個終結點請求數據,另一個終結點進行答覆。還有其他模式,比如單向消息,其中只有一個終結點發送消息,而不期望得到答覆。更複雜的模式是雙工交換模式,在該模式下,兩個終結點建立連接並來回發送數據,類似於即時消息傳遞程式。

  • 服務元數據

      WCF 支持使用行業標準(如 WSDL、XML 架構和 WS-Policy)中指定的格式發佈服務元數據。該元數據可用於自動生成並配置客戶端,以便訪問 WCF 服務。可通過 HTTP 和 HTTPS 來發佈元數據,也可使用 Web 服務元數據交換標準來發佈元數據。

  • 數據協定

       由於 WCF 是使用 .NET Framework 生成的,因此它也包括代碼友好的方法,用於提供希望強制執行的協定。數據協定就是其中一種通用類型的協定。實質上,當您使用 Visual C# 或 Visual Basic 對服務進行編碼時,處理數據的最簡單方法是使用屬於數據實體的屬性創建表示該數據實體的類。WCF 包括一個以這種輕鬆的方式處理數據的綜合系統。在創建了表示數據的類之後,服務會自動生成使客戶端能夠符合所設計數據類型的元數據。

  • 安全性

      可對消息進加密以保護隱私,而且可以要求用戶對其自身進行身份驗證,然後才允許接收消息。可使用眾所周知的標準(如 SSL 或 WS-SecureConversation)實現安全性。

  • 多種傳輸和編碼方式

      可通過多種內置傳輸協議和編碼中的任意一種發送消息。最常用的協議和編碼是使用超文本傳輸協議 (HTTP) 發送文本編碼的 SOAP 消息,以便在萬維網上使用。此外,WCF 還允許通過 TCP、命名管道或 MSMQ 發送消息。這些消息可以編碼為文本,也可以使用優化的二進位格式。使用 MTOM 標準可有效地發送二進位數據。如果所提供的傳輸或編碼都不符合您的需要,您可以創建自己的自定義傳輸或編碼。

  • 可靠的排隊消息

     WCF 支持使用通過 WS-Reliable Messaging 實現的可靠會話和使用 MSMQ 進行可靠的消息交換。

  • 持久性消息

      持久性消息決不會由於通信中斷而丟失。持久性消息模式的消息會始終保存到資料庫中。如果發生中斷,資料庫將允許您在恢復連接後恢復消息交換。此外,也可以使用 Windows Workflow Foundation (WWF) 來創建持久性消息。

  • 事務

      WCF 還使用三個事務模型之一來支持事務:WS-AtomicTtransactions、System.Transactions 命名空間中的 API 以及 Microsoft 分散式事務協調器。

  • AJAX 和 REST 支持

        REST 是不斷發展的 Web 2.0 技術的一個示例。WCF 可以配置為處理未包裝在 SOAP 信封中的“純文本”XML 數據。WCF 還可以擴展以支持特定的 XML 格式,如 ATOM(流行的 RSS 標準),甚至支持非 XML 格式(如 JavaScript 對象表示法 (JSON))。

  • 擴展性

       WCF 體繫結構具有大量擴展點。如果需要額外功能,它還提供許多入口點,允許您自定義服務的行為。有關以下內容的詳細信息可用擴展點,

3) WCF 體繫結構

 

4) WCF與WEB API的異同

      WCF 是 Microsoft 為生成面向服務的應用程式而提供的統一編程模型。藉助這一模型,開發人員可以構建既能跨平臺與現有投資集成又能與現有投資交互的安全、可靠的事務處理解決方案。 ASP.NET Web API 是一個用來方便地生成 HTTP 服務的框架,這些服務可訪問廣泛的客戶端,包括瀏覽器和移動設備。ASP.NET Web API 是用於在 .NET Framework 上生成 RESTful 應用程式的理想平臺。

WCF

ASP.NET Web API

啟用支持多種傳輸協議(HTTP、TCP、UDP 和自定義傳輸)的生成服務,並允許在這些服務之間切換。

僅限 HTTP。用於 HTTP 的第一類編程模型。更適合從各種瀏覽器、移動設備等進行訪問,可實現大範圍訪問。

啟用支持同一消息類型的多種編碼(文本、MTOM 和二進位)的生成服務,並允許在這些服務之間切換。

啟用支持廣泛的媒體類型(包括 XML、JSON 等)的生成 Web API。

支持採用 WS-* 標準的生成服務,如可靠消息傳遞、事務、消息安全性。

使用基本協議和格式,如 HTTP、WebSocket、SSL、JQuery、JSON 和 XML。不支持較高級別的協議,如消息傳遞或事務。

支持請求-答覆、單向和雙工消息交換模式。

HTTP 是請求/響應,不過,通過 SignalR 和 WebSocket 集成,可集成其他模式。

可以在 WSDL 中描述 WCF SOAP 服務,從而可通過自動工具,針對具有複雜架構的服務來生成客戶端代理。

可通過各種方法來描述 Web API:從用於描述代碼片段的自動生成的 HTML 幫助頁,直至用於 OData 集成 API 的結構化元數據。

隨 .NET Framework 一起提供。

隨 .NET Framework 一起提供,但它是一個開放源代碼程式,也可通過獨立下載以帶外方式獲得。

5)WCF的優勢

      在David Chappell所撰的《Introducing Windows Communication Foundation》一文中,用了一個活鮮鮮的例子,來說明WCF的優勢所在。假定我們要為一家汽車租賃公司開發一個新的應用程式,用於租車預約服務。該租車預約服務會被多種應用程式訪問,包括呼叫中心(Call Center),基於J2EE的租車預約服務以及合作伙伴的應用程式(Partner Application)

      從功能的角度來看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的並集。(註:這種說法僅僅是從功能的角度。事實上WCF遠非簡單的並集這樣簡單,它是真正面向服務的產品,它已經改變了通常的開發模式。)因此,對於上述汽車預約服務系統的例子,利用WCF,就可以解決包括安全、可信賴、互操作、跨平臺通信等等需求。開發者再不用去分別瞭解.Net Remoting,ASMX等各種技術了。

      從實際開發來講,基於Asp.Net的應用程式開發與基於WCF 的面向服務的應用程式開發的區別:

      (1)在基於Asp.net 的應用程式開發中。我們由客戶機的瀏覽器訪問應用程式伺服器,然後通過應用程式伺服器中的資料庫連接去連接資料庫伺服器,讀取或是操作數據,有時候可能會多一個文件伺服器。大家可以觀察到,基本上所有的應用都放在了一臺伺服器上,但對於一個,由於業務上的需要(如:與外部系統交互),一臺伺服器很難支持所有的應用。如下圖。

 

      (2) 基於WCF面向服務的應用程式開發中。客戶機使用瀏覽器訪問伺服器A,伺服器A為了業務需要與其他各種應用部署在服 務器B、C、D....再通過WCF技術互相通信,相互訪問...然而面向服務的好處不僅僅在此,他還提供了不同語言不同操作系統的可交互性。如下圖。

 

        在上篇文章中我們創建了一個簡單的WCF服務應用程式。本文將會把上文的WCF服務應用程式改造一下,增加資料庫交互的操作。接下來我們一步一步來進行WCF服務應用程式的創建。


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

-Advertisement-
Play Games
更多相關文章
  • 演算法實例 排序演算法Sort 快速排序QuickSort bing搜索結果 "http://www.bing.com/knows/search?q=%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95&mkt=zh cn&FORM=BKACAI" ...
  • 事件是一種用於類和類之間傳遞消息或觸發新的行為的編程方式。通過提供事件的句柄,能夠把控制項和可執行的代碼聯繫在一起, 如用戶單擊Button控制項觸發Click事件後就執行相應的事件處理代碼。 事件的聲明通過委托來實現。先定義委托,再用委托定義事件,觸發事件的過程實質是調用委托。事件聲明語法格式如下: ...
  • 一、開發環境 系統:win10 編譯器:VS2013 二、涉及程式集 Spring.Core.dll 1.3.1 Common.Logging.dll 三、開發過程 1.項目結構 2.編寫Mobile.cs namespace SpringNetMethodDi { public abstract ... ...
  • 具體事例說明: 函數 一般定義形式 : 修飾符 返回值類型 函數名(輸入參數1,參數2,……) { 函數體} 例如:函數的定義 函數的使用 ...
  • Mybatis 相關http://www.mybatis.org/mybatis-3/zh/getting-started.html ...
  • 算術運算符+ - * / % ++ -- 舉例:1. while (true) { Console.Write("請輸入整數a:"); int a = int.Parse(Console.ReadLine()); Console.Write("請輸入整數b:"); int b = int.Parse ...
  • html代碼: hub代碼: 通知調用Notify方法即可。 關鍵點:GlobalHost.ConnectionManager.GetHubContext ...
  • 實現了那些功能,先看看效果圖: 項目工程目錄: 接下來開始具體的步驟: 第一步:在VS中新建工程 第二步:使用NuGet 安裝EntityFramework 第三步:使用NuGet 安裝EntityFramework.SqlSreverCompact 第四步:在Entities文件夾下添加Stude ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...