天天看點

wcf 基礎教程 第一講 wcf基礎知識

最近工作有點忙,感覺有點累啊,很久沒有更新部落格了,看到自己的部落格通路量日漸下降,我于心不忍,決定還是重新開博來吸引大家的關注。這次要說的不是别的,正是大名鼎鼎的wcf。或者在中間我會穿插MVC的說明,畢竟上一個系列MVC也沒有寫完就過年了,這次希望能堅持到底。呵呵

既然是基礎,那我們就來了解一下wcf的前生今世。然後再用一個小執行個體說明一下就可以結束了。

SOA(面向服務的架構) 大家都很明白,wcf就是.Net平台下為了這個目的為出生的一個精品,作為微軟技術的大一統,可以說值得我們深入的學習。

WCF(Windows Communication Foundation)是作為.Net framework 3.0釋出的,是以隻有2008及其以上的版本才可以建立wcf應用程式,如果你還是使用2005 那麼就更新一下吧。

WCF是對現有分布式通信技術的整合,其中包括Com/DCom、.Net Remoting、Web服務及其WSE(web服務的更新版本)、MSMQ。

COM就不用多說了,我也不懂,是采用了面向元件的設計方式,我們可以通過接口來進行調用。說到面向元件的設計方式,還有幾種 面向服務的設計(CO)、面向對象的設計(OO).

.Net Remoting 遠端調用,可以實作分布式開發,但是不能跨平台或者說是隻能是在.Net和.Net之間進行調用。不能實作真正意義上的面向服務。

Web 服務 WSE 可以說是真正意義上的面向服務的設計,可以實作跨平台的調用,但是web服務隻能通過http的方式傳輸,并且安全性、可靠性得不到有效的控制,是以不能完成企業級應用的要求。

MSMQ 是基于Windows的消息隊列,它的優點也很多,例如可以支援離線傳輸、斷點傳輸等。但是隻能在同一台伺服器或者說是同一台電腦上傳輸,根本就談不上分布式。

WCF是現有分布式技術的大一統,整合了這些技術的優點,可以實作可靠性高、安全性高、跨平台、跨語言的調用,并且wcf的學習曲線相對較高,但是要自己親自動手實作一個簡單的wcf服務應用程式也是很簡單的。

今天不說wcf 契約、服務 、綁定等内容,留着以後說,要不以後就不能開博了。先來一個msdn上通用的執行個體來說明建立一個wcf應用程式是多麼的easy。

1.建立一個空白的解決方法。

wcf 基礎教程 第一講 wcf基礎知識

2.建立wcf的項目。我們按照在項目中會實際用到的項目結構來組織。

wcf 基礎教程 第一講 wcf基礎知識

我來解釋一下這些項目的結構。

ConsoleHosting 是一個控制台應用程式,用來承載Wcf服務。你會說什麼叫承載?說白了就是可以通路到wcf服務,因為建立了一個wcf應用程式,就相當于一台機器人,但是不給他電池,他就沒辦法走路,承載就相當于給他動力,他就可以運作。wcf的承載方式可以分為自承載(Self Hosting) 和IIS承載(在IIS中 通過像通路web網站一樣通路)。

Contracts 項目是一個類庫項目,他是用來存放wcf的契約,就是一些接口

Services也是一個類庫項目,他是用來存放實作了契約的服務,就是一些實作了接口的類

WebClient 是一個web項目,采用的是MVC 4.用來作為調用wcf服務的用戶端存在。

WebHosting 是一個web項目,采用的是MVC4,用來作為承載wcf服務。可能你會說有兩個承載wcf的項目,多餘,是的,我在這裡的目的就是為了說明,wcf可以有多種承載方式。

首先在Contracts 項目中添加一個接口,然後添加兩個計算數值的方法。

注意:在方法中Add上面有OperationContract 操作契約,但是在Sub方法上沒有添加這個Attribute。

在服務類中實作這個契約,在Services中添加一個類,實作這個接口。

實作了服務類,下面就需要承載wcf服務,這個wcf相對比較簡單,沒有使用配置檔案,通過程式設計方式來承載。當然我們一般在實際項目中不推薦這麼做。

首先通過Console 控制台承載,其實控制台承載和Web承載的程式設計代碼是一樣的,隻是項目類型不同而已。

添加了宿主以後就可以通過浏覽器檢視服務中繼資料。要檢視中繼資料,首先要啟動控制台程式。

在浏覽器中輸入服務中繼資料位址 就可以通路到中繼資料,如果代碼正确可以看到如下結果。

wcf 基礎教程 第一講 wcf基礎知識

出現了上面的中繼資料結果,就表示wcf是可以正常調用的。wcf服務是通過中繼資料的方式對外釋出的,ServiceMedataBehavior是中繼資料釋出的Behavior。

既然服務已經釋出成功,那麼我們就在用戶端調用看是否可以得到結果。

wcf 基礎教程 第一講 wcf基礎知識

可以看到調用wcf服務成功。我把在MVC中的一些簡單處理介紹一下。

首先我在HomeController中添加了一個Add方法用來調用Wcf服務

首先就是建立了一個Wcf服務的用戶端代理,以後細說,在前台通過jquery進行傳值。

這樣,我們的一個簡單的通路wcf的程式就完成了。wcf的範圍很廣,以後我們一起來交流。

我又回來了,回到了技術最前線,

繼續閱讀