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