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