WCF簡介

一、簡介

WCF是Windows Communication Foundation縮寫,是Microsoft為構建面向服務的應用提供的分布式通信編程框架,是.NET Framework 3.5的重要組成部分。使用該框架,開發人員可以構建跨平臺、安全、可靠和支持事務處理的企業級互聯應用解決方案。

根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運行面向服務(Service Oriented)應用程序的統一框架。它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。WCF是微軟分布式應用程序開發的集大成者,它整合了.Net平臺下所有的和分布式系統有關的技術,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communication)范圍而論,它可以跨進程、跨機器、跨子網、企業網乃至于 Internet;以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支持的協議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標準與模式。也就是說,在WCF框架下,開發基于SOA的分布式系統變得容易了,微軟將所有與此相關的技術要素都包含在內,掌握了WCF,就相當于掌握了叩開SOA大門的鑰匙。

WCF是.NET Framework的擴展,它提供了創建安全的、可靠的、事務服務的統一框架,WCF 整合和擴展了現有分布式系統的開發技術,如Microsoft .NET Remoting、Web Services、Web Services Enhancements (WSE)等等,來開發統一的可靠系統。WCF簡化了SOA框架的應用,同時也統一了Enterprise Services、Messaging、.NET Remoting、Web Services、WSE 等技術,極大的方便了開發人員進行WCF應用程序的開發和部署,同時也降低了WCF應用開發的復雜度。

WCF支持大量的Web Service標準,這些標準包括XML、XSD、SOAP、Xpath、WSDL等標準和規范,所以對于現有的標準,開發人員能夠方便的進行移植。同時WCF可以使用Attribute屬性進行WCF應用程序配置,提高了WCF應用的靈活性。WCF遵循客戶端/服務器模型在應用程序之間進行通信,客戶端程序能夠通過服務器端提供的EndPoint端直接訪問服務。

WCF是一個統一框架,用于創建既安全可靠又可交互的分布式事務處理應用程序。Visual Studio 的早期版本中存在一些可用于在應用程序之間進行通信的技術。 如果要以一種能夠實現從任何平臺訪問信息的方式來共享信息,則應使用 Web 服務(也稱為 ASMX Web 服務)。如果只想在客戶端和正在 Windows 操作系統上運行的服務器之間移動數據,則應使用 .NET 遠程處理。如果需要事務處理通信,則應使用企業服務 (DCOM),或者如果需要排隊的模型,則應使用消息隊列(也稱為 MSMQ)。

WFC將所有這些技術的功能匯集到一個統一編程模型中。這簡化了開發分布式應用程序的過程。

二、WCF框架模型

三、WCF 編程模型

WCF 編程模型 WCF 編程模型基于以下兩個實體之間的通信:WCF 服務和 WFC 客戶端。該編程模型封裝在 .NET Framework 的 System.ServiceModel 命名空間中。

WCF 服務

WCF 服務基于一個定義服務與客戶端之間的協定的接口。它是用 ServiceContractAttribute 屬性進行標記的,如下列代碼中所示:?

<ServiceContract()> _
Public Interface IService1
<OperationContract()> _
Function GetData(ByVal Value As String) As String
End Interface

通過使用 OperationContractAttribute 屬性標記 WCF 服務公開的函數和方法,可以定義這些函數和方法。另外,通過使用 DataContractAttribute 屬性標記復合類型,可以公開序列化數據。這樣可以在客戶端中進行數據綁定。 定義了接口及其方法后,會將它們封裝在一個實現該接口的類中。單一的 WCF 服務類可以實現多個服務協定。 為了使用 WCF 服務,通過通常所說的“終結點”公開了此服務。 只有使用終結點提供的方法才能與服務進行通信;您不能像訪問其他類那樣通過直接引用來訪問該服務。

終結點由地址、綁定和協定組成。地址定義服務的位置;該地址可以是 URL、FTP 地址、網絡路徑或本地路徑。綁定定義與服務通信的方法。WCF 綁定提供一個用于指定協議(如 HTTP 和 FTP)、安全機制(如 Windows 身份驗證或用戶名和密碼)和更多內容的通用模型。協定包括 WCF 服務類公開的操作。

可以針對單一的 WCF 服務公開多個終結點。這樣,不同的客戶端便可以采用不同的方法與同一服務進行通信。例如,銀行服務可以為雇員提供一個終結點,為外部客戶提供另一個終結點,每個終結點都使用不同的地址、綁定、和/或協定。

WCF 客戶端

WCF 客戶端由“代理”和終結點所組成,前者使應用程序能夠與 WCF 服務通信,后者與針對服務定義的終結點相匹配。 該代理在 app.config 文件中的客戶端上生成并包括有關服務所公開的類型和方法的信息。例如,對于公開多個終結點的服務,客戶端可以選擇最能滿足其需求的服務,以便通過 HTTP 進行通信以及使用 Windows 身份驗證。

創建 WCF 客戶端后,可以像引用任何其他對象那樣在代碼中引用服務。例如,若要調用之前顯示的 GetData 方法,則應編寫與下列內容相似的代碼:?

Dim client As New ServiceReference.Service1Client
Dim returnString As String
returnString = client.GetData("Hello")
MsgBox(returnString)

四、Visual Studio 中的 WCF 工具

創建并測試 WCF 服務

可以使用 WCF Visual Studio 模板為基礎快速創建自己的服務。然后可以使用 WCF 服務自動主機和 WCF 測試客戶端來調試和測試此服務。通過共同使用這些工具,可以快速方便地進行調試和測試,從而縮短調試和測試周期,并且不必在早期階段提交給宿主模型。

WCF 模板

WCF Visual Studio 模板為服務開發提供一個基類結構。在“添加新項目”對話框中可以使用一些 WCF 模板。這些模板包括 WCF 服務庫項目、WCF 服務網站、和 WCF 服務項模板。 選擇模板時,將為服務協定、服務實現、以及服務配置添加文件。所有必需的屬性都已添加,同時將創建簡單的“Hello World”服務類型,且不必編寫任何代碼。當然,您將需要添加代碼以便為實際服務提供函數和方法,但是模板會提供基礎。

WCF 服務主機

為 WCF 服務項目啟動 Visual Studio 調試程序(通過按 F5)時,將自動啟動 WCF 服務主機工具以便以本地方式承載服務。WCF 服務主機將枚舉 WCF 服務項目中的服務、加載該項目的配置、并為它所找到的每個服務實例化主機。 通過使用 WCF 服務主機,可以測試 WCF 服務,而不用在開發期間編寫額外代碼或提交給特定主機。

WCF 測試客戶端

通過使用 WCF 測試客戶端工具,可以輸入測試參數、將該輸入提交給 WCF 服務、并查看該服務發送回的響應。如果將 WCF 測試客戶端與 WCF 服務主機結合起來,會提供滿意的服務測試體驗。 按 F5 調試 WCF 服務項目時,WCF 測試客戶端將打開并顯示在配置文件中定義的服務終結點的列表。可以測試參數并啟動服務,重復此過程以連續測試和驗證您的服務。

在 Visual Studio 中訪問 WCF 服務

Visual Studio 2008 簡化了創建 WCF 客戶端的任務,同時將針對使用“添加服務引用”對話框添加的服務自動生成代理和終結點。所有必需的配置信息將添加到 app.config 文件中。大多數情況下,只需實例化該服務便可以使用此服務。 通過使用“添加服務引用”對話框,可以輸入服務的地址或搜索在解決方案中定義的服務。該對話框將返回由服務和這些服務提供的操作所組成的列表。通過使用此對話框,還可以定義用于在代碼中引用服務的命名空間。 通過使用“配置服務引用”對話框,可以自定義服務的配置。可以更改服務地址,指定訪問級別、異步行為和消息協定類型,以及配置類型重用。

轉載于:https://www.cnblogs.com/Linsj/archive/2012/08/01/2618571.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377296.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377296.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css鏈接樣式_CSS中的樣式鏈接

css鏈接樣式CSS樣式鏈接 (CSS Styling Links) The links in CSS can be styled in various ways to make our website more presentable and attractive. The links can also be styled depending on their states e.g. visited, active, hover, etc. CSS中的鏈接可以通過各種方…

《MySQL——約束》

目錄主鍵約束唯一主鍵非空約束默認約束外鍵約束主鍵約束 -- 主鍵約束 -- 使某個字段不重復且不得為空&#xff0c;確保表內所有數據的唯一性。 CREATE TABLE user (id INT PRIMARY KEY,name VARCHAR(20) );-- 聯合主鍵 -- 聯合主鍵中的每個字段都不能為空&#xff0c;并且加起…

UIControl事件

CHENYILONG BlogUIControl事件 FullscreenUIControl事件1.UIControlEventTouchDown單點觸摸按下事件&#xff1a;用戶點觸屏幕&#xff0c;或者又有新手指落下的時候。2.UIControlEventTouchDownRepeat多點觸摸按下事件&#xff0c;點觸計數大于1&#xff1a;用戶按下第二、三、…

C++ 為什么要使用#ifdef __cplusplus extern C { #endif

經常看到別人的頭文件 有這樣的代碼 #ifdef __cplusplus extern "C" { #endif// C 樣式 的函數#ifdef __cplusplus } #endif 為什么要這樣呢&#xff1f; 因為 C 語言不支持重載函數 也就是同名函數&#xff0c;參數卻不一樣,C支持&#xff0c;其編譯器對函數名的處理…

css中的媒體查詢_CSS中的媒體查詢

css中的媒體查詢CSS | 媒體查詢 (CSS | Media Queries) Creating a web page is not an easy task as it requires loads of content and data so that it becomes strongly responsive to the users. To do that various contents are even added e.g.: resources, informativ…

SharePoint2013安裝組件時AppFabric時出現1603錯誤,解決方法:

采用PowerShell命令批量下載必備組件: 下載完成后&#xff0c;采用批處理命令安裝必備組件。 注&#xff1a;SPS2013安裝必備組件及批處理下載地址&#xff1a; 需要將必備組件放在安裝文件的PrerequisiteInstallerFiles文件夾中&#xff0c;將PreReq2013.bat放在安裝文件根目錄…

《MySQL——數據表設計三大范式》

目錄數據表設計范式第一范式第二范式第三范式數據表設計范式 第一范式 數據表中的所有字段都是不可分割的原子值。 字段值還可以繼續拆分的&#xff0c;就不滿足第一范式&#xff0c;如下&#xff1a; 下面這個&#xff0c;更加貼合第一范式&#xff1a; 范式設計得越詳細&…

三道簡單樹型dp+01背包~~hdu1561,poj1947,zoj3626

以前學樹型dp就是隨便的看了幾道題&#xff0c;沒有特別注意樹型dp中的小分類的總結&#xff0c;直到上次浙大月賽一道很簡單的樹型dp都不會&#xff0c;才意識到自己太水了&#xff5e;&#xff5e;come on&#xff01; hdu1561&#xff1a;題目給出了很多棵有根樹&#xff0c…

css 字體圖標更改顏色_在CSS中更改字體

css 字體圖標更改顏色CSS字體屬性 (CSS font properties ) Font properties in CSS is used to define the font family, boldness, size, and the style of a text. CSS中的字體屬性用于定義字體系列 &#xff0c; 粗體 &#xff0c; 大小和文本樣式 。 Syntax: 句法&#xf…

深入new/delete:Operator new的全局重載

Operator new 的全局重載 原文地址&#xff1a;http://blog.csdn.net/zhenjing/article/details/4354880 我們經常看到這么一句話&#xff1a; operator new 可以重載&#xff0c; placement new 不可重載。其實此處所說的不可重載應該是指全局的 placement new 不可重載&#…

C++基礎知識點整理

基本語法 1、static關鍵字的作用 1、全局靜態變量 加了static關鍵字的全局變量只能在本文件中使用。 存儲在靜態存儲區&#xff0c;整個程序運行期間都存在。 2、局部靜態變量 作用域仍為局部作用域。 不過離開作用域之后&#xff0c;并沒有銷毀&#xff0c;而是貯存程序中&a…

Haskell學習筆記

《learn you a Haskell》這書的結構與常見的語言入門教材完全不一樣。事實上&#xff0c;即使學到第八章&#xff0c;你還是寫不出正常的程序…因為到現在為止還沒告訴你入口點模塊怎么寫&#xff0c;IO部分也留在了最后幾章才介紹。最重要的是&#xff0c;沒有系統的總結數據類…

組合問題 已知組合數_組合和問題

組合問題 已知組合數Description: 描述&#xff1a; This is a standard interview problem to make some combination of the numbers whose sum equals to a given number using backtracking. 這是一個標準的面試問題&#xff0c;它使用回溯功能將總和等于給定數字的數字進…

可變參數模板、右值引用帶來的移動語義完美轉發、lambda表達式的理解

可變參數模板 可變參數模板對參數進行了高度泛化&#xff0c;可以表示任意數目、任意類型的參數&#xff1a; 語法為&#xff1a;在class或者typename后面帶上省略號。 Template<class ... T> void func(T ... args) {// }T:模板參數包&#xff0c;args叫做函數參數包 …

BI-SqlServer

一.概述 SqlServer數據倉庫ETL組件 IntegrationServiceOLAP組件 AnalysisService報表 ReportingServiceMDX(查多維數據集用的)和DMX(查挖掘模型用的)。二.商業智能-Analysis Services 項目 構建挖掘模型1構建挖掘模型2構建挖掘模型3三.商業智能-SqlServerAnalysis-Asp.net WebS…

python 子圖大小_Python | 圖的大小

python 子圖大小In some cases, the automatic figure size generated by the matplotlib.pyplot is not visually good or there could be some non-acceptable ratio in the figure. So, rather than allowing a pyplot to decide the figure size, we can manually define t…

《設計模式整理》

目錄常見設計模式如何保證單例模式只有一個實例單例模式中的懶漢與餓漢模式OOP設計模式的五項原則單例模式中的懶漢加載&#xff0c;如果并發訪問該怎么做常見設計模式 單例模式&#xff1a; 單例模式主要解決了一個全局使用的類頻繁的創建和銷毀的問題。 單例模式下確保某一個…

JSON學習資料整理

1.什么是JSON JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基于JavaScript的一個子集。 JSON采用完全獨立于語言的文本格式&#xff0c;但是也使用了類似于C語言家族的習慣&#xff08;包括C, C, C#, Java, JavaScript, Perl, Python等&#xff09;。這些…

OSI七層模型及其數據的封裝和解封過程

OSI(Open System Interconnection)參考模型把網絡分為七層: 1.物理層(Physical Layer) 物理層主要傳輸原始的比特流,集線器(Hub)是本層的典型設備; 2.數據鏈路層(Data Link Layer) 數據鏈路層負責在兩個相鄰節點間無差錯的傳送以幀為單位的數據,本層的典型設備是交換機(Switch)…

rss聚合模式案例_RSS的完整形式是什么?

rss聚合模式案例RSS&#xff1a;真正簡單的聯合 (RSS: Really Simple Syndication) RSS is an abbreviation of Really Simple Syndication. It is also called Rich Site Summary. It is quality attainment for the syndication of collection of web content and used to di…