ASP.NET中WCF服務(wù)與ASMX服務(wù)的兼容性
WCF服務(wù)與ASMX服務(wù)的兼容性
根據(jù)前面的操作得知,當(dāng)為ASP.NET AJAX程序創(chuàng)建一個(gè)新的WCF服務(wù)時(shí),默認(rèn)情況下該服務(wù)類(lèi)前面使用AspNetCompatibilityRequirements屬性進(jìn)行修飾。現(xiàn)在,我們來(lái)作一下簡(jiǎn)要分析。
- [ServiceContract]
- [AspNetCompatibilityRequirements(
- RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
- public class TimeService
- {
- ……
- }
雖然在設(shè)計(jì)上可以進(jìn)行獨(dú)立傳輸,但當(dāng)應(yīng)用于一個(gè)ASP.NET AJAX應(yīng)用程序環(huán)境下時(shí),WCF服務(wù)實(shí)際上可以工作在一種十分類(lèi)似于ASMX服務(wù)的方式下。借助于這個(gè)AspNetCompatibilityRequirements屬性,我們可以指示W(wǎng)CF使用與ASMX服務(wù)相同的模型進(jìn)行工作。實(shí)際情況下,這個(gè)設(shè)置指示當(dāng)激活一個(gè)WCF服務(wù)時(shí),運(yùn)行時(shí)刻將對(duì)聲明的端點(diǎn)進(jìn)行檢查并確保它們都使用了Web HTTP綁定模型。
與ASMX服務(wù)的良好兼容性可以使得在WCF服務(wù)中訪(fǎng)問(wèn)ASP.NET對(duì)象例如HttpContext對(duì)象以及其它內(nèi)在的ASP.NET對(duì)象完全有可能。
注意,要實(shí)現(xiàn)WCF服務(wù)與ASMX服務(wù)的兼容性至少要實(shí)現(xiàn)兩點(diǎn)。第一,在配置文件web.config中,需要進(jìn)行類(lèi)似如下的聲明式定義:
- <system.serviceModel>
- :
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
- </system.serviceModel>
第二,開(kāi)發(fā)者需要顯式地選擇一個(gè)給定WCF服務(wù)的兼容性方式,這是通過(guò)使用服務(wù)AspNetCompatibilityRequirements屬性完成的。
在ASP.NET AJAX應(yīng)用程序中請(qǐng)求的服務(wù)要求必須進(jìn)行相應(yīng)的服務(wù)器端配置。歸納看來(lái),在ASP.NET應(yīng)用程序中,目前主要存在兩種軟件技術(shù)可以用來(lái)構(gòu)建服務(wù),即ASMX Web服務(wù)和WCF服務(wù)。其中,WCF服務(wù)已經(jīng)包括了ASMX Web服務(wù)。但是,必須明確:AJAX通信要求使用JSON數(shù)據(jù)字符串實(shí)現(xiàn)數(shù)據(jù)在客戶(hù)端與服務(wù)器的來(lái)回傳輸。在ASP.NET AJAX擴(kuò)展1.0時(shí)代或者在ASP.NET 3.5中調(diào)整ASP.NET運(yùn)行時(shí)刻使ASMX Web服務(wù)支持JSON是一項(xiàng)比較容易的任務(wù)。但是,針對(duì)更為豐富的WCF服務(wù)要求實(shí)現(xiàn)JSON數(shù)據(jù)格式的傳輸則要略微復(fù)雜一些。這也正是為什么僅僅在ASP.NET 3.5中才可以使用WCF構(gòu)建AJAX后端服務(wù)的原因。 以上介紹WCF服務(wù)與ASMX服務(wù)的兼容性。
【編輯推薦】