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