五、asp+ MyWeb 應用
1).概述 MyWeb是ASP+中的一門新技術,允許一個ASP+應用在沒有WEB服務器的機器上運行,實際在 IE內部運行,可以離線地運行。開發上與服務器端的應用開發無異。 讓客戶可以在需要時進行安裝,這叫demand install。 當用戶訪問一個MYWEB應用時,ASP+首先試圖從本地找到這個應用,如果找不到,則從 myweb:URL處下載應用說明(manifest),如果成功,則下載整個應用并安裝到本地。 myweb在NGWS運行環境中執行(所以,客戶端必須安裝NGWS運行時庫),可以訪問獨立的 存儲系統,同時,可以建立到原來安裝這個應用的站點的連接。他們不能訪問本地機上的資源, 以及部分COM的調用(這有點類似于JAVA中的APPLET)。
2).myweb管理工具 如果安裝了IE55,并且安裝了NGWS運行時環境,則可以從瀏覽器工具條上選擇"myweb"按扭, (位置在工具條的最后,就像安裝了金山詞霸后增加的那個工具一樣),或者也可以直接在瀏覽 器的地址欄里輸入 myweb:// ,就可以進入MYWEB管理工具。 存在兩種類型的myweb應用,一是Remote的,二是Local的。 可以用管理工具新安裝一個myweb應用,或者直接從瀏覽器地址欄里輸入myweb的URL,后一 種情況下,如果已經安裝了這個myweb應用,則將直接啟動該應用。
3).開發myweb應用 跟開發一個ASP+服務器應用類似,最后需要一個CAB文件,用實用工具cabarc.exe生成,如: cabarc -p -r n myweb.cab *.aspx *.html *.jpg *.css *.dll *.web manifest文件是OSD(Open Software Description)格式,名為myweb.osd,一個例子:
<softpkg name="Demo1" version="1.0"> <implementation> <codebase href=</RemoteIconurl> <Author>white</Author> <Source> Beijing 123okey.Inc</Source> <size>3000</size> </softpkg>
4).略 5).獨立存儲空間 myweb不能訪問本地文件系統,但可以訪問由GNWS提供的獨立存儲空間(IsolatedStorage), 就像訪問本地文件一樣,例:
//讀取數據 String _storeFile="mystore"; ArrayList values=new ArrayList(); IsolatedStorageFileStream stream = null; try{ stream = new IsolatedStorageFileStream(_storeFile,FileMode.Open); }catch(Exception e){} if(null!=stream){ values=(ArrayList)BinarySerializer.DeSerialize(stream); stream.Close(); }
//保存數據 IsolatedStorageFileStream stream; stream = new IsolatedStorageFileStream(_stroeFile,FileMode.OpenOrCreate); ArrayList values = new ArrayList(); values.Add("test1"); ...... BinarySerializer.Serializer(values,stream); stream.Close();
使用上例時注意需要引入名稱空間: System.IO; System.IO.IsolatedStorage; System.Runtime.Serialization.Formatters;
6).離線數據同步 現在這個版本的myweb還不支持自動地實現同步。 可以用myweb.Connected屬性判斷當前是否連在網上。
六、Cache服務
Caching動態產生的內容叫output catching。 Caching專門的對象叫Data Catching。 asp+中提供了專門的Cache引擎。
1).output caching 設置response的expiration/validation,僅對GET和HEAD有效,支持URL中的參數,完全相同 時使用catching中的內容。內容缺省地將在cache中保存60分鐘。 要讓一個.aspx文件被caching,僅需要加一行: <%@ OutputCache Duration="60" %> 上面的60指60秒。 要實現更多的控制,如下: Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); 或者: SetExpires(DateTime.Now.AddSeconds(60)); SetCacheability(HttpCacheability.Public); SetSlidingExpiration(true);
2).Data Caching Cache引擎可以讓你把對象保存到其中,只有應用重啟后才需要重建Cache。是一個字典接口,如: Cache["mykey"]=myValue; myValue = Cache["mykey"]; if(myValue!=null) ......
還可以支持清除,過期等,以及文件和鍵值以來(可以用于統計圖形,記數器等)。 例: source = (DataView)Cache["MyDataSet"]; if(source == null){ ...... source = new DateView(ds.Tables[0]); Cache["MyDataSet"] = source; }
文件依賴: Cache.Insert("MyData",source,new CacheDependency(server.mappath("authors.xml"))); 時間過期: Cache.Insert("MyData",source,null,DateTime.Now.AddHours(1),TimeSpan.Zero);
注意,為了防止資源訪問中的沖突,必須對資源訪問進行同步,如: private static String CacheSynchronize; lock(CacheSynchronize) {...... }
七、配置
asp+中使用文件做配置。 在其中,也可以配置自己的信息。
1).配置文件格式 文件名為config.web,應用當前應用及其自目錄下的應用。 WinNT\ComPlus\<version>\Config.web是整個系統的缺省配置。config.web不可能被瀏覽器 訪問到,即便放在WEB應用的目錄下。 配置文件中分成兩小節,第一節指出誰來處理配置信息,第二小節是具體的配置數據。 標準的ASP+配置處理器有: <httpmodules> 處理所有的請求 <httphandlers> 將特定的URL映射到特定的處理器,子目錄中應用不繼承該配置。參考前面 的http處理器和工廠。 <sessionstate> session狀態處理器 <globalization> <compilation> 編譯相關的處理 <trace> asp+ Trace服務 <security> ASP+安全模塊 <iisprocessmodel> iis處理模塊 <browsercaps> 處理瀏覽器兼容信息的設置
2).獲取配置信息 可以用API直接訪問配置信息,比如Request.Browser對象的屬性直接獲得browsercapabilities 或者調用Context.GetConfig,比如: CustomConfigSettings Config=(CustomConfigSettings)Context.GetConfig("customconfig"); if(config.Enabled==true) ......
GetConfig可有第二個參數獲得指定的URL的配置。
下面是一個保存應用自己的配置數據的例: <configuration> <configsections> <add name="databases" type="System.Web.Configuration.DictionarySectionHandler" /> </configsections> <databases> <add key="pubs" value="server=localhost;uid=sa;pws="/> <add key="nothwind" value="server=localhost;uid=sa"/> </databases> </configuration> 使用: String dsn = (String)((Hashtable)Context.GetConfig("databases"))["pubs"];
|