轉(zhuǎn)帖|其它|編輯:郝浩|2011-01-20 15:16:26.000|閱讀 852 次
概述:走進(jìn).NET 4的新時代,WCF的配置的確簡化了不少(比如:在.NET 4中用IIS部署WCF就這么簡單),WCF的ajax調(diào)用同樣也簡化了。所以我們決定拋棄WebService,全面進(jìn)軍WCF。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在我們之前的開發(fā)中,對于ajax程序,都是通過jQuery調(diào)用標(biāo)記為 [System.Web.Script.Services.ScriptService]的WebService,然后在WebService中調(diào)用后臺 的WCF。這成為WebService存在的唯一理由:作為ajax調(diào)用的中轉(zhuǎn)站。如果要拋棄WebService,只需用WCF來作為中轉(zhuǎn)站。
在.NET 3.5時代,jQuery就可以調(diào)用WCF,之前我也寫過博客(比如:jQuery調(diào)用WCF需要注意的一些問題),但配置比較麻煩。
走進(jìn).NET 4的新時代,WCF的配置的確簡化了不少(比如:在.NET 4中用IIS部署WCF就這么簡單),WCF的ajax調(diào)用同樣也簡化了。所以我們決定拋棄WebService,全面進(jìn)軍WCF。
現(xiàn)在博客園的程序架構(gòu)已經(jīng)基于WCF,所以我們對WCF格外關(guān)注,分享的文章有些可能比較簡單,但都是源自我們實(shí)際開發(fā)中遇到并解決的問題。
下面分享一下在.NET4中如何通過jQuery調(diào)用WCF:
說明:這里的WCF僅僅是給ajax調(diào)用的中轉(zhuǎn)站,通過它再去調(diào)用本地服務(wù)層接口或者后臺的其他WCF服務(wù)。
1. 在App_Code中添加一個類文件(就是普通的class),比如叫HelloService.cs。
2. 在HelloService.cs中添加一個方法,再加上一些WCF的設(shè)置,如下圖:
[ServcieContract]與[OperationContract]是標(biāo)準(zhǔn)設(shè)置,這里將‘服務(wù)接口”與"服務(wù)實(shí)現(xiàn)"寫在了一個類中,不是推薦做法。我們這里這樣做,是因?yàn)樾枰氖且粋€ajax調(diào)用中轉(zhuǎn)站,越簡單越好。
這里需要注意的是AspNetCompatibilityRequirements,如果不進(jìn)行這個設(shè)置,WCF就不走ASP.NET管 線,ASP.NET的上下文信息就拿不到,比如:不加這個設(shè)置,HttpContext.Current就為null,最常用的場景就是根據(jù) HttpContext獲取用戶登錄信息,對用戶權(quán)限進(jìn)行驗(yàn)證。對應(yīng)于這個設(shè)置,在web.config 的<system.serviceModel>中需要加上<serviceHostingEnvironment aspNetCompatibilityEnabled="true">,如下圖:
*注意的地方:web.config中加了上面的設(shè)置后,所有的WCF服務(wù)實(shí)現(xiàn)都要設(shè)置AspNetCompatibilityRequirements屬性。
3. 繼續(xù)在web.config增加設(shè)置,在system.serviceModel/serviceHostingEnvironment中增加serviceActivations,如下圖:
relativeAddress就是WCF服務(wù)的地址名,service就是之前創(chuàng)建的HelloService類名,factory是關(guān)鍵,支持 ajax調(diào)用,靠的就是System.ServiceModel.Activation.WebScriptServiceHostFactory。
好了,三步搞定WCF端的配置。這時在VS2010啟動項目,就可以在瀏覽器中訪問這個WCF了,比如://localhost:3960/jQueryWcfDemo/HelloService.svc。如果出現(xiàn)下面的畫面,就表示W(wǎng)CF端工作正常。
4. jQuery調(diào)用WCF開始了...代碼如下:
需要注意的地方是上圖中加背景的地方,contentType與data,與WebService的不同之處已在注釋中說明。
點(diǎn)擊提交按鈕,"Hello, World"...全面進(jìn)入WCF時代,見下圖:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載