無廢話WCF入門教程一 什麼是WCF

2022-09-12 07:21:13 字數 3874 閱讀 7013

一、概述

windows communication foundation(wcf)是由微軟發展的一組資料通訊的應用程式開發介面,可以翻譯為windows通訊介面,它是.net框架的一部分。由 .net framework

3.0開始引入。

wcf的最終目標是通過程序或不同的系統、通過本地網路或是通過internet收發客戶和服務之間的訊息。

wcf合併了web服務、.net remoting、訊息佇列和enterprise services的功能並整合在visual studio中。

wcf專門用於面向服務開發。

二、基於asp.net 的應用程式開發與面向服務開發

在基於asp.net 的應用程式開發中,我們由客戶機的瀏覽器訪問應用程式伺服器,然後通過應用程式伺服器中的資料庫連線去連線資料庫伺服器,讀取或是運算元據,有時候可能會多乙個檔案伺服器。大家可以觀察到,基本上所有的應用都放在了一台伺服器上,但對於乙個,由於業務上的需要(如:與外部系統互動),一台伺服器很難支援所有的應用。我們再看下面的圖:

客戶機使用瀏覽器訪問伺服器a,伺服器a為了業務需要與其他各種應用部署在伺服器b、c、d....再通過wcf技術互相通訊,相互訪問...然而面向服務的好處不僅僅在此,他還提供了不同語言不同作業系統的可互動性..由於本文不是介紹soa的文章,感興趣的同學可以參見:soa

三、第乙個wcf程式  1

. 新建立空白解決方案,並在解決方案中新建專案,專案型別為:wcf服務應用程式。建立完成後如下圖所示:

2.刪除系統生成的兩個檔案iservice1.cs與service1.svc。  3

.新增自定義的wcf【服務檔案】user.svc,此時vs2010會自動生成wcf介面檔案iuser.cs,我們在iuser中定義wcf方法showname,在user.svc.cs對該介面的方法進行實現。

**如下: 1

using

system.servicemodel; 2

3namespace

wcfservice 4

11}1213

14namespace

wcfservice15"

, name);

21return

wcfname;22}

23}24}

大家可以看到,在wcf中的介面與普通介面的區別只在於兩個上下文,其他的和我們正常學習的介面一樣。定義這個上下文要新增system.servicemodel的引用。

[servicecontract],來說明介面是乙個wcf的介面,如果不加的話,將不能被外部呼叫。

[operationcontract],來說明該方法是乙個wcf介面的方法,不加的話同上。

此時我們的第乙個wcf服務程式就建立好了,將user.svc「設為起始頁」,然後f5執行一下試試,如下圖所示,vs2010自動呼叫了wcf的客戶端測試工具以便我們測試程式:

我們雙擊上圖中的 showname() 方法,出現如下圖:

在請求視窗中的值中輸入引數「你的姓名」,然後點選「呼叫」,在響應視窗中會出現返回值「wcf服務,顯示姓名:你的姓名」,說明測試成功,點選下面的xml也可以看到xml的資料傳輸。我們現在建立好了服務的應用程式和業務邏輯,即非常簡單的列印姓名的方法,測試也成功了。那麼我們怎麼用呢?

四、場景

我們設計的場景是在生產中經常應用的場景,把wcf程式寄宿在iis之上。假設場景如下:a伺服器和b伺服器。我們把我們剛剛建立的wcf程式「部署」在b伺服器上(本教程的a,b伺服器都放是我自己的一台機器),我們的目標是在a伺服器的應用程式來訪問b伺服器的wcf程式,實現伺服器端的應用程式通訊。

五、將wcf程式寄宿在b伺服器的iis之上

首先我們將wcf應用程式發布一下,然後部署在b伺服器的iis之上,如下圖所示:

滑鼠右鍵瀏覽uesr.svc,在遊覽器**現如下圖所示,說明服務部署成功。

上圖中的http:

//localhost/user.svc?wsdl即為我們要引用的服務位址。

六、在客戶端[a伺服器]建立服務的引用

新建解決方案,並且建立asp.net web應用程式的專案。命名為:wcfclient,如下圖所示:

(1)新建asp.net頁面,命名為:wcftest.aspx。

(2)新增在第五步中部署的服務的引用。如下圖所示:

此時彈出新增服務引用的窗體,如下圖所示:

我們在位址裡寫上我們寄宿在iis上的wcf服務的位址服務路徑,此處為:http:

//localhost/user.svc?wsdl,在命名空間處填寫wcfservice[此命名空間要在下面的客戶端中引用]然後點選「前往」-->「確定」按鈕。此時我們完成了對服務的引用。我們再次檢視解決方案,裡面多了service references的資料夾,通過資源管理器開啟後裡面多了些檔案,這些檔案用於客戶端向服務端的呼叫,現在先不用管他。

七、使用wcf服務端的方法

wcftest.aspx的**如下: 1

c#" autoeventwireup="

true

" codebehind="

wcftest.aspx.cs

" inherits="

wcfclient.wcftest

" %> 23

"-//w3c//dtd xhtml 1.0 transitional//en""

"> 4"

">

58913

1415

16using

system;

17using

system.collections.generic;

18using

system.linq;

19using

system.web;

20using

system.web.ui;

21using

system.web.ui.webcontrols;

2223

//引用wcf服務的命名空間

24using

wcfclient.wcfservice;

2526

namespace

wcfclient

2734

35protected

void btnclick(object

sender, eventargs e)

3641}42

}  上面中的userclient類是在新增引用的時候生成的服務端user類的客戶端**類,一般客戶端**類名稱都會是**client。我們執行一下看下效果。

通過以上的例子,我們完成了由a伺服器的應用向b伺服器中wcf提供的方法的呼叫。這個例子比較簡單,對於經常開發b/s結構應用程式的同學們來說比較好理解。

無廢話ExtJs 入門教程十九 API的使用

首先解釋什麼是 api extjs的api必須部署到iis上,extjs的api首頁如下圖所示 左側是搜尋欄,可以搜尋所有的ext的元件,如上圖所示,我搜尋的是box,下面自動觸發搜尋出了包含box的元件。1,config options 配置項 1 ext.onready function 7 s...

WCF入門教程 WCF基礎知識問與答

3 為什麼我們要選用wcf?在windows平台下,尤其是在.net平台下開發面向服務的應用程式,或者開發分布式系統,最佳選擇就是wcf。為什麼呢?原因就在於wcf涵蓋了之前微軟推出的所有用於分布式開發的技術,包括remoting web services wse msmq等,並以一種統一的程式設計...

WCF入門教程1 WCF簡要介紹

什麼是wcfwindowscommunication foundation wcf 是由微軟 開發的一系列支援資料通訊的應用程式框架,可以翻譯為windows 通訊開發平台。整合了原有的windows通訊的 net remoting,webservice,socket的機制,並融合有http 和ft...