1. 開發服務(service)
(1)新建wcf服務應用程式
wcf是.net3.0新增的,如果要在visual studio 2005下開發wcf應用程式,需要安裝visual studio 2005 extensions for wcf and wpf才可以支援。visual studio 2008 和 2010 由於包含了.net3.0,所以,它直接支援建立wcf服務專案。
(2)定義wcf服務契約
新建wcf服務應用程式後,系統會自動生成iservice1.cs檔案,如下**所示。它是服務契約介面檔案。服務要實現的操作可以通過介面來定義。(將紅體部分修改為自己的業務**)
using system;
using system.collections.generic;
using system.linq;
using system.runtime.serialization;
using system.servicemodel;
using system.text;
namespace wcfservice1
// 使用下面示例中說明的資料約定將復合型別新增到服務操作。
[datacontract]
public classcompositetype
set
}[datamember]
public string stringvalue
set }}
}服務契約需要用 [servicecontract]屬性定義,使它成為wcf服務中公開的介面。
服務定義的操作方法用 [operationcontract] 屬性定義,使它成為wcf服務公開介面中公開的成員。
實體類compositetype是通過服務傳送的復合型別的資料契約定義的,有[datacontract]和[datamember]屬性定義。
(3)實現wcf服務契約
服務實現,其實就是對契約(介面)的實現,繼承介面並實現方法。(下面**是系統自動生成的,把紅色部分改為自己的**)
using system;
using system.collections.generic;
using system.linq;
using system.runtime.serialization;
using system.servicemodel;
using system.text;
namespace wcfservice1
", value);
}public compositetype getdatausingdatacontract(compositetype composite)
return composite;}}
}重新編譯wcf服務應用程式,會發現wcfservice1\bin 的目錄下生成了wcfservice1.dll,說明剛才我們建立的wcf服務應用程式其實是個類庫專案。
2. 建立宿主程序(host)
要想使wcf服務執行,需要宿主程序(host)。即wcf服務不可能憑空存在。每個wcf服務必須託管(hosting)在windows程序中,該程序就稱為宿主程序(host process)。宿主可以由iis提供,也可以由windows form程式或windows服務提供,或者console控制台程式也可以。
下面以windows form程式為示例進行講解,其他方法基本類似。具體步驟:
(3)新增引用:system.servicemodel;
<?xml version="1.0" encoding="utf-8" ?>
整個wcf配置是用system.servicemodel元素定義的。
服務用元素定義,包括乙個指定契約的元素,契約的值是指定了[servicecontract]屬性的介面的名稱,包括介面的命名空間,如contract="wcfservice1.iservice1"。屬性binding指定了繫結資訊定義了由服務使用的協議,"wshttpbinding"代表了wcf服務使用的是http協議。
元素定義了服務的位址,服務可以用http://localhost:8000/定址。
(5)啟動服務
執行該宿主程式,單擊「啟動服務」按鈕在ie瀏覽器欄中輸入:http://localhost:8000/,將會看到下圖所示的服務提示資訊。
3. 建立wcf客戶端
若要呼叫wcf服務的操作,則客戶端首先需要匯入服務契約到客戶端本地描述(native representation)中。如果客戶端使用wcf,則呼叫操作的常見做法是使用**。**是乙個clr類,它公開了乙個單獨的clr介面用以表示服務的契約。**完全封裝了服務的每乙個方面:服務的位置、實現技術、執行時平台及通訊傳輸。
(1)生成**類和配置檔案
方式一:直接新增服務引用,如下圖
新增服務引用時必須確定wcf服務端正在執行中,否則位址無法訪問。
方式二:通過命令列工具svcutil.exe生成**。
我們知道web service是通過wsdl對外提供服務的描述,以便客戶端能夠通過wsdl知道這個web service所包含的方法、方法的簽名等資訊,客戶端通過wsdl就能知道怎麼去呼叫這個web service。
到了wcf,微軟依然採用wsdl來提供wcf服務描述。
前面服務端宿主程式的配置,新增了乙個 ,目的就是讓服務端對外提供wsdl形式的服務metadata描述。
微軟也提供了secutil.exe工具來通過wsdl生成客戶端**類和契約配置檔案。
選擇選單「開始」--->「microsoft visual 2008」--->"visual studio tools"--->"visual studio 2008命令提示"命令。啟動vs2008的命令列視窗。
該命令指定了要生成**的語言、**類**檔案和配置檔名,以及wcf服務端的位址。
命令執行時必須確定wcf服務端正在執行中。
(2)使用wcf客戶端呼叫服務
通過以上兩種方法產生的**類,我們就很輕鬆地就像使用本地方法一樣地呼叫wcf服務方法了,這一點基本上和呼叫web service 相同。
WCF簡單步驟
記錄乙個 內容對我有點深,以後可能有用。一 vs2008解決方案下新增 新建專案 wcf wcf服務庫 一般在這裡定義服務契約 資料契約,並實現。二 發布到iis上 vs2008解決方案下新增 新建 wcf服務 會有svc檔案和web.config檔案,要進行修改 然後 發布 記得在iis要讓其支援...
WCF 定義服務契約詳細步驟
wcf windows communication foundation 是一系列支援資料通訊的應用程式框架。定義服務契約步驟 1 新建類庫,並引入程式集的system.servicemodel 2 建立介面,定義服務契約,操作 using system using system.collectio...
Wcf 開發日記 1
序 這篇日記是記錄我在開發 wcf中所遇到的問題,以及解決的方法。這個專案並不是乙個從零開發的專案,某種程度上可以被看作是從 2層架構到 3層的遷移。其中遇到了很多問題,包括技術的和非技術的。這些都將會被我一一記錄。這些經驗和技術實踐可以被用作 soa專案的參考。專案的總覽 wcf和 wpf都是 m...