“Atlas”是ASP.NET下的一個(gè)新的Web技術(shù)開(kāi)發(fā)包,它集成了一套非常大的客戶(hù)端腳本庫使得與功能豐富的、基于服務(wù)器開(kāi)發(fā)平臺的ASP.NET2.0結合在一起,“Atlas”能讓你開(kāi)發(fā)的Web應用能夠通過(guò)直接調用Web服務(wù)器來(lái)更新一個(gè)Web頁(yè)面的數據――不需要在頁(yè)面往返傳送(也就是不需要多次刷新頁(yè)面)。使用“Atlas”,你能最大地利用ASP.NET和服務(wù)器端代碼在瀏覽器中來(lái)做許多工作,使得有更加豐富的用戶(hù)體驗。
與 .NET和 Java 平臺下其它 AJAX 框架相比,Altas 最大的亮點(diǎn)就在于與 ASP.NET 現有機制的無(wú)縫融合。通過(guò) VS.NET集成開(kāi)發(fā)環(huán)境,使用者可以在對 js 和 AJAX 不甚了解的情況下,以非常自然的方式使用到最先進(jìn)的技術(shù)。此外直接在 js 一級提供WebService 的調用支持,也大大降低了對 ws 技術(shù)的使用門(mén)檻。而 ASP.NET 中一直引以為豪的數據綁定等技術(shù),也可以在A(yíng)ltas 中無(wú)縫得到支持,讓現有投資能夠最大限度得到保護。從這些意義上來(lái)說(shuō),雖然 Altas 在 AJAX理念上沒(méi)有太多突破,但不失為一個(gè)強大且實(shí)用的 AJAX 框架,非常符合 MS 在技術(shù)運用上的一貫原則。整體結構
從整體結構上來(lái)看,Altas 的核心在于 <atlas:ScriptManager.../> 這個(gè)標簽,所有支持 Altas 的頁(yè)面都必須有且只有一個(gè)此標簽,以引入 Altas 的基礎架構支持。在此基礎上,通過(guò)<altas:UpdatePanel .../> 標簽定義需要異步更新的范圍,避免傳統 Post Back模式下的全頁(yè)面刷新。而需要支持 AJAX 模式獲取數據的控件,則可以通過(guò) js 腳本和 xml 腳本兩種方式定義,并由 Altas框架進(jìn)行動(dòng)態(tài) patch 以實(shí)現標準 web 控件的 AJAX 支持。此外就是 WebService 調用和數據綁定的支持機制,也是利用Altas 框架的基礎架構實(shí)現的。
ScriptManager
首先,ScriptManager 是一個(gè)容器,用戶(hù)可以在 ScriptManager 標簽下定義期望引用的其它 js 庫,以及希望通過(guò) js 直接調用的 WebService 服務(wù)。
例如在如下的定義中,ScriptManager 控件將保存對兩個(gè)客戶(hù)端 js 庫和ComplexService 服務(wù)的引用,并在頁(yè)面 Render 的時(shí)候寫(xiě)入適當的支持代碼。我們可以通過(guò)ScriptManager.Scripts 和 ScriptManager.Services 屬性訪(fǎng)問(wèn)類(lèi)似定義。
| 以下內容為程序代碼: <atlas:ScriptManager runat="server" ID="UpdatePanel2" EnableScriptComponents="True" EnablePartialRendering="True"> <Scripts> <atlas:ScriptReference ScriptName="AtlasUIMap" /> <atlas:ScriptReference Path="~/MyScripts/MyScript.js" /> </Scripts> <Services> <atlas:ServiceReference Path="ComplexService.asmx" /> </Services> </atlas:ScriptManager> |
其中 ScriptReference 非常簡(jiǎn)單,支持通過(guò) ScriptName 或 Path 屬性指定腳本。
ScriptName 指定 Altas 內建的庫名稱(chēng),在 FrameworkScript類(lèi)型中有具體定義。這個(gè)屬性在有的文檔和例子中,也直接稱(chēng)為 Name 屬性,但最新的 Altas M1 中已改為ScriptName。這個(gè)腳本類(lèi)型將被通過(guò) ScriptManager.ConvertFrameworkScriptToFileName函數轉換為對應的 js 文件名。
以下內容為程序代碼:
public enum FrameworkScript
{
Custom,
AtlasUIDragDrop, // "AtlasUIDragDrop.js";
AtlasUIGlitz, // "AtlasUIGlitz.js";
AtlasUIMap // "AtlasUIMap.js";
}
如果直接使用 Path 則可以指定任意的用戶(hù)自定義庫。
聯(lián)系客服