http://webservices.ctocio.com.cn/net/387/9034887.shtml
本文介紹ASP.NET中WCF服務與ASMX服務的相容性,在ASP.NET應用程式中,目前主要存在兩種軟體技術可以用來構建服務,即ASMX Web服務和WCF服務。
WCF服務與ASMX服務的相容性
根據前面的操作得知,當為ASP.NET AJAX程式建立一個新的WCF服務時,預設情況下該服務類前面使用AspNetCompatibilityRequirements屬性進行修飾。現在,我們來作一下簡要分析。
- [ServiceContract]
- [AspNetCompatibilityRequirements(
- RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
- public class TimeService
- {
- ……
- }
|
雖然在設計上可以進行獨立傳輸,但當應用於一個ASP.NET AJAX應用程式環境下時,WCF服務實際上可以工作在一種十分類似於ASMX服務的方式下。藉助於這個 AspNetCompatibilityRequirements屬性,我們可以指示WCF使用與ASMX服務相同的模型進行工作。實際情況下,這個設定 指示當啟用一個WCF服務時,運行時刻將對聲明的端點進行檢查並確保它們都使用了Web HTTP綁定模型。
與ASMX服務的良好相容性可以使得在WCF服務中訪問ASP.NET對象例如HttpContext對象以及其它內在的ASP.NET對象完全有可能。
注意,要實現WCF服務與ASMX服務的相容性至少要實現兩點。第一,在設定檔web.config中,需要進行類似如下的聲明式定義:
- <system.serviceModel>
- :
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
- </system.serviceModel>
|
第二,開發人員需要顯式地選擇一個給定WCF服務的相容性方式,這是通過使用服務AspNetCompatibilityRequirements屬性完成的。
在ASP.NET AJAX應用程式中請求的服務需求必須進行相應的伺服器端配置。歸納看來,在ASP.NET應用程式中,目前主要存在兩種軟體技術可以用來構建服務,即 ASMX Web服務和WCF服務。其中,WCF服務已經包括了ASMX Web服務。但是,必須明確:AJAX通訊要求使用JSON資料字串實現資料在用戶端與伺服器的來回傳輸。在ASP.NET AJAX擴充1.0時代或者在ASP.NET 3.5中調整ASP.NET運行時刻使ASMX Web服務支援JSON是一項比較容易的任務。但是,針對更為豐富的WCF服務需求實現JSON資料格式的傳輸則要略微複雜一些。這也正是為什麼僅僅在 ASP.NET 3.5中才可以使用WCF構建AJAX後端服務的原因。 以上介紹WCF服務與ASMX服務的相容性。