WCF 中使用Unity.WCF

近期有個項(xiàng)目不从,使用的是WCF+Silverlight藻丢,所以自己先學(xué)習(xí)WCF基礎(chǔ)把曼,這里做一個簡單的記錄杨帽。

解決方案

搭建的基本系統(tǒng)框架如截圖,Data部分是用的EF鏈接數(shù)據(jù)庫嗤军,domain本來想使用域服務(wù)類注盈,因?yàn)樗麜鶕?jù)ORM產(chǎn)生的表生成增刪改查功能,后來還是改為WCF型雳,下面的兩個是是使用了Telerik Silverlight搭建的頁面当凡,只包含簡單的菜單和一個查詢顯示到GridView的操作,后面補(bǔ)一個爭對telerik:RadGridView的學(xué)習(xí)篇纠俭。

項(xiàng)目結(jié)構(gòu)

WCF中引入Unity.WCF

首先在Survery.Domain中添加一個名為SurveryService的WCF沿量,會自動生成兩個文件:ISurveryService.cs 和SurveryService.cs, 協(xié)議部分: [ServiceContract]冤荆,[OperationContract]等都在ISurveryService.cs中朴则,SurveryService.cs 中直接實(shí)現(xiàn)Interface即可。我們在WCF 中添加一個簡單的查詢方法:

public IEnumerable<TSurvery> GetSurveryList()
        {
            SurveryDbEntities surveryDb = new SurveryDbEntities();
            try
            {
                return surveryDb.T_Survey.ToList().Select(s => new TSurvery()
                {
                    AcquittanceId = s.AcquittanceId,
                    BackName = s.BackName,
                    BankAccount = s.BankAccount,
                    Company = s.Company,
                    CreateTime = Convert.ToDateTime(s.CreateTime).ToString("yyyy-MM-dd"),
                    Email = s.Email,
                    PhoneNo = s.PhoneNo,
                    TaxId = s.TaxId,
                    UserName = s.UserName,
                    id = s.id
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

TSurvery是業(yè)務(wù)需要自己添加的實(shí)體類钓简,不做多解乌妒。
然后使用Nuget添加Unity.WCF。Unity.WCF其實(shí)也是繼承Unity外邓,針對WCF簡化了使用方法撤蚊,已經(jīng)實(shí)現(xiàn)了ServiceHostFactory。其實(shí)也是需要RegisterType和Resolve损话。

添加Unity.wcf

具體使用方法:新增一個類命名為WcfServiceFactory侦啸,然后繼承UnityServiceHostFactory,這時候需要去重寫一個方法ConfigureContainer即可丧枪。具體代碼如下:

    public class WcfServiceFactory:UnityServiceHostFactory
    {
        protected override void ConfigureContainer(Unity.IUnityContainer container)
        {
            container.RegisterType<ISurveryService, SurveryService>();
        }
    }

服務(wù)寄宿

在完成以上工作后光涂,需要對服務(wù)進(jìn)行寄宿,我們是寄宿在項(xiàng)目“tkSurveryApp.Web”中拧烦,參考微軟文檔:Hosting the Data Service忘闻,以往在ASP.NET中直接添加WCF,會生成一個.svc文件恋博,在<%@ ServiceHost %> 中會有CodeBehind屬性齐佳,綁定的是WCF代碼的文件。但是我們項(xiàng)目使用的WCF是在另一個類中债沮,并且使用了依賴注入炼吴,所以我們要使用另一個屬性Factory,F(xiàn)actory是用于創(chuàng)建寄宿服務(wù)的ServiceHost 的ServiceHostFactory秦士。我們會指定到WcfServiceFactory上。修改Service指向寄宿服務(wù)的類型永高。具體代碼如下:

<%@ ServiceHost Language="C#" Debug="true" Service="Survery.Domain.SurveryService" Factory="Survery.Domain.WcfServiceFactory" %>

Silverlight中使用WCF

在Silverlight中添加WCF時遇到一個坑隧土,當(dāng)時很久都沒解決提针,這個坑的截圖如下


無法解析服務(wù)

提示無法導(dǎo)入,網(wǎng)上查找方法曹傀,最終解決方法是去掉圖中那個勾辐脖,


去掉“重新使用引用的程序集中的類型”勾選

最后客戶端調(diào)用代碼:
        private void RadButton_Click(object sender, RoutedEventArgs e)
        {
            SurveryServiceClient client = new SurveryServiceClient();
            client.GetSurveryListAsync();
            client.GetSurveryListCompleted += client_GetSurveryListCompleted;
        }
        private void client_GetSurveryListCompleted(object sender, GetSurveryListCompletedEventArgs e)
        {
            rdData.ItemsSource = e.Result;
        }

網(wǎng)頁運(yùn)行結(jié)果


Silverlight 頁面
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市皆愉,隨后出現(xiàn)的幾起案子嗜价,更是在濱河造成了極大的恐慌,老刑警劉巖幕庐,帶你破解...
    沈念sama閱讀 212,657評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件久锥,死亡現(xiàn)場離奇詭異,居然都是意外死亡异剥,警方通過查閱死者的電腦和手機(jī)瑟由,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,662評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冤寿,“玉大人歹苦,你說我怎么就攤上這事《搅” “怎么了殴瘦?”我有些...
    開封第一講書人閱讀 158,143評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長号杠。 經(jīng)常有香客問我蚪腋,道長,這世上最難降的妖魔是什么究流? 我笑而不...
    開封第一講書人閱讀 56,732評論 1 284
  • 正文 為了忘掉前任辣吃,我火速辦了婚禮,結(jié)果婚禮上芬探,老公的妹妹穿的比我還像新娘神得。我一直安慰自己,他們只是感情好偷仿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,837評論 6 386
  • 文/花漫 我一把揭開白布哩簿。 她就那樣靜靜地躺著,像睡著了一般酝静。 火紅的嫁衣襯著肌膚如雪节榜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,036評論 1 291
  • 那天别智,我揣著相機(jī)與錄音宗苍,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛讳窟,可吹牛的內(nèi)容都是我干的让歼。 我是一名探鬼主播,決...
    沈念sama閱讀 39,126評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼丽啡,長吁一口氣:“原來是場噩夢啊……” “哼谋右!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起补箍,我...
    開封第一講書人閱讀 37,868評論 0 268
  • 序言:老撾萬榮一對情侶失蹤改执,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坑雅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辈挂,經(jīng)...
    沈念sama閱讀 44,315評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,641評論 2 327
  • 正文 我和宋清朗相戀三年霞丧,在試婚紗的時候發(fā)現(xiàn)自己被綠了呢岗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,773評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛹尝,死狀恐怖后豫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情突那,我是刑警寧澤挫酿,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站愕难,受9級特大地震影響早龟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猫缭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一葱弟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猜丹,春花似錦芝加、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,859評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脉顿,卻和暖如春蝌麸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艾疟。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工来吩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敢辩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,584評論 2 362
  • 正文 我出身青樓弟疆,卻偏偏與公主長得像责鳍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兽间,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,676評論 2 351

推薦閱讀更多精彩內(nèi)容