WCF簡單教程 1 入門

2021-09-21 21:59:49 字數 3867 閱讀 6497

wcf是dotnet體系中很重要的一項技術,但是組內很多組員通過書籍自學的時候感覺涉及面太廣、配置檔案太複雜,新名詞太多、抓不到頭緒,有感於此,決定進行一次組內技術培訓,順便把培訓講義整理到blog上來。不求大而全,而是要讓初學者快速入門,因此想入例項入手,並刻意隱藏一些初期用不到的內容,以降低入門門檻。有任何錯誤歡迎指正。

注:本系列文章基於.net framework 3.5,以教程的最後會歸納一下到了4.0中有哪些差異。

----------------------- 分隔線 -----------------------

第一篇:入門,構建第乙個wcf程式

1、服務端

using system; 

using system.servicemodel;

using system.text;

namespace server

///

/// 用servicecontract來標記此介面是wcf的服務契約,可以像webservice一樣指定乙個namespace,如果不指定,就是預設的

///

[servicecontract(namespace="wcf.demo")]

public

inte***ce idata

///

/// 用operationcontract來標記此方法是操作契約

///

[operationcontract]

string sayhello(string username);

針對這個介面建立實現類,這個類才是真正幹活的,工作在服務端,不出現在客戶端:

using system; 

using system.text;

namespace server

///

/// 實現idata介面,此處不需要寫契約標記

萬事具備,只剩最後一步了,將服務發布出去:

using system; 

using system.servicemodel;

namespace server

class program

static

void main(string args)

//定義乙個servicehost,注意引數中要使用契約實現類而不是介面

using(servicehost host = new servicehost(typeof(server.dataprovider)))

host.open();

console.writeline("service running ...");

console.readkey();

host.close();

有人可能會問服務發布到哪去了?沒指定位址呀?這是乙個初學者容易搞不明白的地方。

編譯執行,螢幕顯示service running ... 就是正常跑起來了,此時如果用命令列 netstat -ano | findstr "8080" 看一下,應該有如下輸出:

tcp    0.0.0.0:8080         0.0.0.0:0          listening      4 

tcp    [::]:8080            [::]:0             listening      4

表示我們的程式已經在tcp 8080埠開始監聽了。值得注意的是pid是4,這是系統程序而不是我們自己的程序,這說明wcf程式對外提供http服務時,是借用了系統功能(http.sys)。

此時如果我們用瀏覽器訪問一下 http://localhost:8080/wcf,不報錯,但是會提示「當前已禁用此服務的元資料發布」,這是由於預設不允許以http get方式獲取服務的wsdl,我們不用管它,不影響後面的使用,以後的章節中我們再來看這個問題。

2、客戶端

然後寫**,來呼叫server端發布的sayhello方法:

using system; 

using system.servicemodel;

using system.servicemodel.channels;

namespace client

class program

static

void main(string args)

//客戶端訪問有多種方式,此處只顯示一種

var proxy = new channelfactory("dataservice").createchannel();

//呼叫sayhello方法

console.writeline(proxy.sayhello("wcf"));

//用完後一定要關閉,因為服務端有最大連線數,不關閉會在一定時間內一直佔著有效連線

((ichannel)proxy).close();

} 編譯執行,螢幕應能正常列印出「hello wcf.」。

WCF簡單教程 1 入門

wcf是dotnet體系中很重要的一項技術,但是組內很多組員通過書籍自學的時候感覺涉及面太廣 配置檔案太複雜,新名詞太多 抓不到頭緒,有感於此,決定進行一次組內技術培訓,順便把培訓講義整理到blog上來。不求大而全,而是要讓初學者快速入門,因此想入例項入手,並刻意隱藏一些初期用不到的內容,以降低入門...

WCF入門教程1 WCF簡要介紹

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

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

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