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