我們通過實現乙個簡單的示例來對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;(題外話:demodata類中各個屬性的寫法有些偷懶,其實個人不建議這樣。這裡是為了**簡單……)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
}
servicecontracts.cs
using system.collections.generic;第二步:服務using system.servicemodel;
namespace wcfdemo.contracts
}
1、新增乙個類庫wcfdemo.services。
2、在類庫中加入乙個檔案services.cs用來放置實現服務的類。
3、新增引用wcfdemo.contracts。
4、編寫**如下:
using system;(題外話:第一步時說過demodata的偷懶寫法。如果demodata中針對每個屬性定義私有字段,並提供帶引數的建構函式,建構函式中對字段賦值而不是對屬性賦值,那麼每個demodata例項化時比這裡的示例**效率高。)using system.collections.generic;
using wcfdemo.contracts;
namespace wcfdemo.services
); r.add(new demodata() );
r.add(new demodata() );
return r;}}
}
到這裡,服務和契約已經完成。
剩下的就是宿主如何對外提供服務和客戶端如何享受服務了,我們先使用最最簡單的方式來實現。
我們先以最簡單的方式來實現宿主和客戶端:直接引用契約和服務專案、採用硬編碼的方式。
第三步:宿主
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;到這裡,已經完成了乙個最簡單的wcf程式,也涉及到了wcf的基本概念:終結點、abc(位址、繫結、契約)……。using system.windows.forms;
using system.servicemodel;
using wcfdemo.contracts;
namespace wcfdemo.client.withoutconfig
private
void button1_click(object sender, eventargs e)}}
}
這個示例很簡單(甚至簡陋,而且編碼風格和習慣也不好☺),只是用來初識wcf,要做的還有很多,下次繼續……
extjs初接觸(一)
本人 美工能力基本為零。最近被迫做介面設計方面的東東,不得已上網查詢各類html模板,找到根自己需求相似的模板本來已經夠浪費時間了,找完還有改成適合自己的東西,太麻煩了。最近看了傳說中的弦哥的關於 架構整合開發的系列大作,才知道extjs是個好東東。好東東咱要用用。第乙個例子要做成這樣 頁面上就乙個...
大資料初接觸(筆記一)
簡單的說 就是短時間內快速的 產生海量的 多種多樣的 有價值的資料。主要做預算類的 比如天氣預報,車流量統計 明天阻不阻塞 管理元資料 索引 namenode 儲存的電腦 負責儲存源資料 datenode 儲存單元 預設是128m,乙個儲存單元的資料不能分成兩部分來儲存 block 備份 解決資料安...
初接觸jquery easyui的一點認知
jquery easyui是一種基於jquery的使用者使用者介面外掛程式集合。使用easuui你不需要寫很多 只需要編寫一些簡單的html標籤,就可以定義使用者介面。easyui大大節省了開發時間,提高了工作效率。easyui 用起來很簡單。列入對easyui裡面datagrid 外掛程式的應用,...