程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> ASP+學習筆記(四)

ASP+學習筆記(四)

編輯:ASP入門教程
五、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="http://somewhere.com/myweb.cab">
        </implementation>
        <homepage>myweb://somewhere.com/default.ASPx</homepage>
        <Iconurl>myweb://somewhere.coom/icon.gif</Iconurl>
        <RemoteIconurl>http://somewhere.com/icon.gif</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"];
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved