荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Benison (感冒了,555~~~~), 信区: Homepage
标  题: ASP+ 学习笔记 5
发信站: BBS 荔园晨风站 (Wed Oct 18 13:18:53 2000), 转信

五、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"];





--
 Benison给你深深的祝福! 深圳大学排球俱乐部就在http://szuvc.home.chinaren.net

欢迎到深大排协主页:
      http://szuvc.home.chinaren.net

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.39.38]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店