WCF初接觸實作 一

2021-06-08 21:43:48 字數 2933 閱讀 1781

我們通過實現乙個簡單的示例來對wcf有個直觀而淺顯的認識,希望對初次涉及wcf的朋友有所幫助。

可以簡單地認為wcf程式分為4部分:契約、服務、宿主、客戶端。我們通過乙個例子來逐步完成各部分,示例程式中,客戶端可以獲取乙個資訊列表,列表中每一項包括id、值、讀值時刻、狀態、狀態變動時刻。這裡我用的是vs2010。 

首先,建立乙個空白解決方案wcfdemo。

我們將在其中新增n個專案,分別實現契約、服務、宿主、客戶端。如果用vs2010新建「wcf服務庫」或者「wcf服務應用程式」,它會預設把契約和服務放在乙個專案中,我們這個示例把契約和服務分別放在2個類庫專案中。 

第一步:契約

1、新增乙個類庫wcfdemo.contracts。

2、在類庫中新增2個檔案datacontracts.cs和servicecontracts.cs,分別放置資料契約和服務契約。

3、新增引用system.runtime.serialization和system.servicemodel。

4、編寫**如下:

datacontracts.cs

using system;

using system.runtime.serialization;

namespace wcfdemo.contracts

[datamember]

public

double value

[datamember]

public datetime valuetime

[datamember]

public devicestate state

[datamember]

public datetime statetime

}public

enum devicestate

}

(題外話:demodata類中各個屬性的寫法有些偷懶,其實個人不建議這樣。這裡是為了**簡單……)

servicecontracts.cs

using system.collections.generic;

using system.servicemodel;

namespace wcfdemo.contracts

}

第二步:服務

1、新增乙個類庫wcfdemo.services。

2、在類庫中加入乙個檔案services.cs用來放置實現服務的類。

3、新增引用wcfdemo.contracts。

4、編寫**如下:   

using system;

using system.collections.generic;

using wcfdemo.contracts;

namespace wcfdemo.services

); r.add(new demodata() );

r.add(new demodata() );

return r;}}

}

(題外話:第一步時說過demodata的偷懶寫法。如果demodata中針對每個屬性定義私有字段,並提供帶引數的建構函式,建構函式中對字段賦值而不是對屬性賦值,那麼每個demodata例項化時比這裡的示例**效率高。)

到這裡,服務和契約已經完成。 

剩下的就是宿主如何對外提供服務和客戶端如何享受服務了,我們先使用最最簡單的方式來實現。 

我們先以最簡單的方式來實現宿主和客戶端:直接引用契約和服務專案、採用硬編碼的方式。

第三步:宿主

1、新增乙個windows窗體應用程式wcfdemo.host.withoutconfig。

2、新增引用system.servicemodel。

3、引用之前的兩個專案。

4、在窗體放置兩個button和乙個label,並編寫**如下:

using system;

using system.windows.forms;

using system.servicemodel;

using wcfdemo.services;

using wcfdemo.contracts;

namespace wcfdemo.host.withoutconfig

servicehost host;

private

void button1_click(object sender, eventargs e)

;host.open();

}private

void button2_click(object sender, eventargs e)

;host.close();}}

}}

第四步:客戶端

1、新增乙個windows窗體應用程式wcfdemo.client.withoutconfig。

2、新增引用system.servicemodel。

3、引用之前契約專案。

4、在窗體放置乙個button和乙個datagridview,並編寫**如下:

using system;

using system.windows.forms;

using system.servicemodel;

using wcfdemo.contracts;

namespace wcfdemo.client.withoutconfig

private

void button1_click(object sender, eventargs e)}}

}

到這裡,已經完成了乙個最簡單的wcf程式,也涉及到了wcf的基本概念:終結點、abc(位址、繫結、契約)……。

這個示例很簡單(甚至簡陋,而且編碼風格和習慣也不好☺),只是用來初識wcf,要做的還有很多,下次繼續……

extjs初接觸(一)

本人 美工能力基本為零。最近被迫做介面設計方面的東東,不得已上網查詢各類html模板,找到根自己需求相似的模板本來已經夠浪費時間了,找完還有改成適合自己的東西,太麻煩了。最近看了傳說中的弦哥的關於 架構整合開發的系列大作,才知道extjs是個好東東。好東東咱要用用。第乙個例子要做成這樣 頁面上就乙個...

大資料初接觸(筆記一)

簡單的說 就是短時間內快速的 產生海量的 多種多樣的 有價值的資料。主要做預算類的 比如天氣預報,車流量統計 明天阻不阻塞 管理元資料 索引 namenode 儲存的電腦 負責儲存源資料 datenode 儲存單元 預設是128m,乙個儲存單元的資料不能分成兩部分來儲存 block 備份 解決資料安...

初接觸jquery easyui的一點認知

jquery easyui是一種基於jquery的使用者使用者介面外掛程式集合。使用easuui你不需要寫很多 只需要編寫一些簡單的html標籤,就可以定義使用者介面。easyui大大節省了開發時間,提高了工作效率。easyui 用起來很簡單。列入對easyui裡面datagrid 外掛程式的應用,...