第四篇应用程序 第一章什么是应用程序 在 asp. net中,可以这样来定义一个 Application:能够在一个web应用服务器的子目录 或者虚拟目录上运行的所有的文件、页面、操作、模块或者能被执行的代码。比方说,在 个web服务器上,一个“ order“应用程序将会在“/ order“这个目录下被发布 web服务器上的 asp. net应用程序在一个被称作应用程序域运行空间( AppDomain)环境 中被执行,以保证类的隔离(没有版本、名称上的冲突)、安全屏蔽(防止有权访问某些机 器/网络的资源)、静态变量的隔离。 在一个web应用程序的生命周期中, asp. net维护一个 HttpapplicaTion实例池。Asp.net 对一个Htp的请求会自动分配一个来处理,这个特别的 HttpapplicatIon实例对管理这个在 全部的生命周期里的请求是可靠的,并且在处理完成后可以被重用 在应用程序环境下, ASPNET并发处理客户端的请求,所以可能存在多线程对 Application对象的同时存取。在这种情况下,对 Application对象的草率处理,可能会导致 不可预知的错误。例如以下代码 原本希望对实例进行计数,但如果同时到达两个以上请求时,则有可能产生漏计。正确 的方法应该是在操作以前,对 Application对象上锁,操作完成以后,再对 Application对象 解锁。代码如下: Application. LockO Application("counter")=CType(Application("counter")+ 1, Int32) Application. UnLock( 411配量应用程序的步骤 4.1.1.1设置应用程序的目录结构 个WEB站点可以有多个应用程序运行,而每一个应用程序可以用唯一的URL来访问, 所以首先应利用IS开放应用程序的目录为“虚拟目录”。各个应用程序的“虚拟目录”可
第四篇 应用程序 第一章 什么是应用程序 在 asp.net 中,可以这样来定义一个 Application:能够在一个 web 应用服务器的子目录 或者虚拟目录上运行的所有的文件、页面、操作、模块或者能被执行的代码。比方说,在一 个 web 服务器上,一个“order“应用程序将会在“/order“这个目录下被发布。 Web 服务器上的 asp.net 应用程序在一个被称作应用程序域运行空间(AppDomain)环境 中被执行,以保证类的隔离(没有版本、名称上的冲突)、安全屏蔽(防止有权访问某些机 器/网络的资源)、静态变量的隔离。 在一个 web 应用程序的生命周期中,asp.net 维护一个 HttpApplication 实例池。Asp.net 对一个 Http 的请求会自动分配一个来处理,这个特别的 HttpApplication 实例对管理这个在 全部的生命周期里的请求是可靠的,并且在处理完成后可以被重用。 在应用程序环境下,ASP.NET 并发处理客户端的请求,所以可能存在多线程对 Application 对象的同时存取。在这种情况下,对 Application 对象的草率处理,可能会导致 不可预知的错误。例如以下代码: 原本希望对实例进行计数,但如果同时到达两个以上请求时,则有可能产生漏计。正确 的方法应该是在操作以前,对 Application 对象上锁,操作完成以后,再对 Application 对象 解锁。代码如下: 4.1.1 配置应用程序的步骤 4.1.1.1 设置应用程序的目录结构 一个 WEB 站点可以有多个应用程序运行,而每一个应用程序可以用唯一的 URL 来访问, 所以首先应利用 IIS 开放应用程序的目录为“虚拟目录”。各个应用程序的“虚拟目录”可
以不存在任何物理上的关系。例如: 应用URL: 物理路径: http://www.my.com c: \inetpublwwwroot http:/1v http://www.my.com/myapp/myappl licomputer 2\test'lmyapp 从“虚拟目录”上看来,htp//www.my.com/myapp和htp/wwmy.com/myapp/myappl 是乎存在某种联系,但实际情况却是,我们看到两者完全分布于不同的机器上,更不用说物 理目录了 4.1.1.2.设置相应的配置文件 根据应用的具体需要,可以拷入相应的 global asax和 config web配置文件,并且设置相 应的选项。(配置文件的设置具体见相关章节) global asax主要配置 application start、 applicatoin end、 session start、 session end等事 件 4.1.1.3.把应用所涉及的各种文件放入“虚拟目录“中 把aspx文件、ascx文件以及各种资源文件分门别类放入应用目录中,把类引用所涉及 的集合放入应用目录下的bin目录中 4.1.2应用程序框架 script>
以不存在任何物理上的关系。例如: 应用 URL: 物理路径: http://www.my.com c:\inetpub\wwwroot http://www.my.com/myapp c:\myapp http://www.my.com/myapp/myapp1 \\computer2\test\myapp 从“虚拟目录”上看来,http://www.my.com/myapp 和 http://www.my.com/myapp/myapp1 是乎存在某种联系,但实际情况却是,我们看到两者完全分布于不同的机器上,更不用说物 理目录了。 4.1.1.2.设置相应的配置文件 根据应用的具体需要,可以拷入相应的 global.asax 和 config.web 配置文件,并且设置相 应的选项。(配置文件的设置具体见相关章节) global.asax 主要配置 application_start、applicatoin_end、session_start、session_end 等事 件。 4.1.1. 3.把应用所涉及的各种文件放入“虚拟目录“中 把.aspx 文件、.ascx 文件以及各种资源文件分门别类放入应用目录中,把类引用所涉及 的集合放入应用目录下的 bin 目录中。 4.1.2 应用程序框架 … … …
body> 说明 1. 指定应用环境从 Myapp应用中动态编译一个 MyApp. Object的类以供使用,它的说明为 Ourapp 2. . 显视导入一个命名空间到应用程序,这样应用程序就可以使用命名空间中定义的各种类 和接口来完成特定的功能,大大加快了程序的开发速度 例如 就可以利用系统为我们提供的大量文件和网络对象,快速的开发自己的文件和网络应用 程序。 3. 在页面编译时产生到 assemblyname的连接,这样就可以使用集合中类及接口。缺省情 况下,应用会把应用程序目录下bin中的集合都动态载入。该项功能也可以在应用程序的 config.web中配置,缺省情况下, config. web中有如下形式: 加载bin下 myassembly dll集合 4.其他 、对之间的代码通常是各种事件的定义,诸如页面开始时、某个按件被 触发时所要做的事情。、和、之间通常是页面的界面要素,为 显示给客户端的可视界面
说明: 1. 让 ASP.NET 运行环境动态从另一个应用中动态编译出一个类来继承使用。 例如: 指定应用环境从 Myapp 应用中动态编译一个 MyApp.Object 的类以供使用,它的说明为 “Ourapp”。 2.… 显视导入一个命名空间到应用程序,这样应用程序就可以使用命名空间中定义的各种类 和接口来完成特定的功能,大大加快了程序的开发速度。 例如: 就可以利用系统为我们提供的大量文件和网络对象,快速的开发自己的文件和网络应用 程序。 3. 在页面编译时产生到 assemblyname 的连接,这样就可以使用集合中类及接口。缺省情 况下,应用会把应用程序目录下 bin 中的集合都动态载入。该项功能也可以在应用程序的 config.web 中配置,缺省情况下,config.web 中有如下形式: 即缺省情况下,加载 bin 下的所有集合。 又如: 加载 bin 下 myassembly.dll 集合 4.其他 、对之间的代码通常是各种事件的定义,诸如页面开始时、某个按件被 触发时所要做的事情。、和、之间通常是页面的界面要素,为 显示给客户端的可视界面
41.3创建应用程序的典型步骤 4.1.3.1配置 config. web 主要定义为gb2312字符集,以利于中文显示 globalization requestencoding="gb23 12 responseencoding=gb2312"/ configuratio 4.1.3.2配置 global.asax 主要定义应用初始化、结束,会话开始、结束,请求开始、结束等事件发生时,应用要 做的事情。 4.1.3.3主程序 创建一个应用程序我们可以先在web服务器上创建一个虚拟目录或者在发布目录下t
4.1.3 创建应用程序的典型步骤 4.1.3.1 配置 config.web 主要定义为 gb2312 字符集,以利于中文显示 4.1.3.2 配置 global.asax 主要定义应用初始化、结束,会话开始、结束,请求开始、结束等事件发生时,应用要 做的事情。 Sub Application_Start(Sender As Object, E As EventArgs) End Sub Sub Application_End(Sender As Object, E As EventArgs) End Sub Sub Session_Start(Sender As Object, E As EventArgs) End Sub Sub Session_End(Sender As Object, E As EventArgs) End Sub Sub Application_BeginRequest(Sender As Object, E As EventArgs) End Sub Sub Application_EndRequest(Sender As Object, E As EventArgs) End Sub 4.1.3.3 主程序 创建一个应用程序我们可以先在 web 服务器上创建一个虚拟目录或者在发布目录下创
建一个新的目录。装过 Windows2000 Advance Server的读者会知道,安装完成后,会有 个c/ inetpub/wwwroot的目录,你可以通过IS管理工具来创建一个新的目录或者虚拟目录 一个应用程序可能含有大量的aspx文件、ascx文件、由其他工具产生的 assembly集合以及 页面中用到的各种资源文件(声音、图片、动画等等),这里就不再一一介绍了。 下面我们就创建一个简单的aspx页面来说明一个 Application的应用,它只含有 个aspx文件,在用户浏览时显示“ hello world",可谓最简单的web应用了。 !-文件名: application/FormAppHellp aspx-> guage="ⅤB"%> hello world body> center> /body> /htmI> 下面就是我们的运行效果
建一个新的目录。装过 Windows 2000 Advance Server 的读者会知道,安装完成后,会有一 个 c:/inetpub/wwwroot 的目录,你可以通过 IIS 管理工具来创建一个新的目录或者虚拟目录。 一个应用程序可能含有大量的.aspx 文件、.ascx 文件、由其他工具产生的 assembly 集合以及 页面中用到的各种资源文件(声音、图片、动画等等),这里就不再一一介绍了。 下面我们就创建一个简单的 aspx 页面来说明一个 Application 的应用,它只含有一 个.aspx 文件,在用户浏览时显示“hello world”,可谓最简单的 web 应用了。 hello world 下面就是我们的运行效果:
ahello world-Mierosoft Internet Explorer 件①)编辑)查看收藏()工具①)帮助QD 如m解。翻晶 Hello world! 谷]完成 □口鹦本地 Intranet∥ 4.14小结 asp. net平台的应用,通过指定虚拟目录,使得一个主机多个地址多个应用成为可能 采用 asp. net开发应用程序带来的好处是:程序集中可方便打包,配置的层次结构更加灵活 方便,应用独立运行于自身的应用环境中更加安全可靠。 配置一个应用的过程大致为:1)指定应用目录为IS的虚拟目录2)为应用设置适当的 配置权限(配置 global asax和 config. web文件)3)在自己的应用目录下放置事先编好的程 从页面应用所支持的 Application、 Import、 Assemly等标识看来, asp. net对对象重用的 支持大大加强了, ASPNET的“通用语言运行库”概念的提出,为实现各种开发语言的合 作编程奠定了基础。 第二章配置 Config. web 421 ASPNET配置简介 ASPNET提供了一个丰富而可行的配置系统,以帮助管理人员轻松快速的建立自己的 WEB应用环境。 ASPNET提供的是一个层次配置架构,可以帮助WEB应用、站点、机器 分别配置自己的扩展配置数据。 ASPNET的配置系统具有以下优点: ASPNET允许配置内容可以和静态内容、动态页面和商业对象放置在同一应用
4.1.4 小结 asp.net 平台的应用,通过指定虚拟目录,使得一个主机多个地址多个应用成为可能。 采用 asp.net 开发应用程序带来的好处是:程序集中可方便打包,配置的层次结构更加灵活 方便,应用独立运行于自身的应用环境中更加安全可靠。 配置一个应用的过程大致为:1)指定应用目录为 IIS 的虚拟目录 2)为应用设置适当的 配置权限(配置 global.asax 和 config.web 文件)3)在自己的应用目录下放置事先编好的程 序。 从页面应用所支持的 Application、Import、Assemly 等标识看来,asp.net 对对象重用的 支持大大加强了,ASP.NET 的“通用语言运行库”概念的提出,为实现各种开发语言的合 作编程奠定了基础。 第二章 配置 Config.web 4.2.1 ASP.NET 配置简介 ASP.NET 提供了一个丰富而可行的配置系统,以帮助管理人员轻松快速的建立自己的 WEB 应用环境。ASP.NET 提供的是一个层次配置架构,可以帮助 WEB 应用、站点、机器 分别配置自己的扩展配置数据。ASP.NET 的配置系统具有以下优点: ● ASP.NET 允许配置内容可以和静态内容、动态页面和商业对象放置在同一应用
的目录结构下。当管理人员需要安装新的 ASPNET应用时,只需要将应用目录 拷贝到新的机器上即可。 ASPNET的配置内容以纯文本方式保存,可以以任意标准的文本编辑器、XML 解析器和脚本语言解释、修改配置内容。 ASPNET提供了扩展配置内容的架构,以支持第三方开发者配置自己的内容 ASPNET配置文件的更修被系统自动监控,无须管理人员手工干预。 422配置文件的规则 ASPNET的配置文件是基于XML格式的纯文本文件,存在于应用的各个目录下,统一 命名为“ config web”。它决定了所在目录及其子目录的配置信息,并且子目录下的配置信息 覆盖其父目录的配置。 WINNT Microsoft. NET\ framework版本号\下的 config. web为整个机器的根配置文件 它定义了整个环境下的缺省配置。 缺省情况下,浏览器是不能够直接访问目录下的 config. web文件 在运行状态下, ASPNET会根据远程URL请求,把访问路径下的各个 config. web配置 文件叠加,产生一个唯一的配置集合。举例来说,一个对URL:http://localhostlwebapplowndir\ test. aspx的访问, ASPNET会根据以下顺序来决定最终的配置情况: 1. MIcrosoft. NET\Framework\v.1.0 O\config. web(缺省配置文件) (应用的配置) 3..webapplowndirlconfig web (自己的配置) 423配置文件的语法规则 1)标识 配置内容被置于 config. web文件中的标记和之间 格式 configuration> 配置内容 2)配置段句柄说明 ASPNET的配置文件架构并未指定任何文件格式或者是支持的配置属性。相反的,它 提出了“配置段句柄申明”的概念来支持任意的用户定义配置段。 格式: configsections> < add name=欲定义配置段名type=处理的句柄函数 3)配置段 具体定义配置的内容,供应用使用
的目录结构下。当管理人员需要安装新的 ASP.NET 应用时,只需要将应用目录 拷贝到新的机器上即可。 ● ASP.NET 的配置内容以纯文本方式保存,可以以任意标准的文本编辑器、XML 解析器和脚本语言解释、修改配置内容。 ● ASP.NET 提供了扩展配置内容的架构,以支持第三方开发者配置自己的内容。 ● ASP.NET 配置文件的更修被系统自动监控,无须管理人员手工干预。 4.2.2 配置文件的规则 ASP.NET 的配置文件是基于 XML 格式的纯文本文件,存在于应用的各个目录下,统一 命名为“config.web”。它决定了所在目录及其子目录的配置信息,并且子目录下的配置信息 覆盖其父目录的配置。 WINNT\Microsoft.NET\Framework\版本号\下的 config.web 为整个机器的根配置文件, 它定义了整个环境下的缺省配置。 缺省情况下,浏览器是不能够直接访问目录下的 config.web 文件。 在运行状态下,ASP.NET 会根据远程 URL 请求,把访问路径下的各个 config.web 配置 文件叠加,产生一个唯一的配置集合。举例来说,一个对 URL: http://localhost\webapp\owndir\ test.aspx 的访问,ASP.NET 会根据以下顺序来决定最终的配置情况: 1..\Microsoft.NET\Framework\v.1.00\config.web (缺省配置文件) 2..\webapp\config.web (应用的配置) 3..\webapp\owndir\config.web (自己的配置) 4.2.3 配置文件的语法规则 1)标识 配置内容被置于 config.web 文件中的标记和之间。 格式: 配置内容 … 2)配置段句柄说明 ASP.NET 的配置文件架构并未指定任何文件格式或者是支持的配置属性。相反的,它 提出了“配置段句柄申明”的概念来支持任意的用户定义配置段。 格式: 3)配置段 具体定义配置的内容,供应用使用
以下例子定义了一个“httpmodules¨配置段,设置了系统htp相关的处理模块 addname="httpmodules"type="system.Web.cOnfigurationHttpmodules Configuration Handler"/ configuration> 42.4 ASPNET定义的标准配置段 1)httpmodule段:定义了应用的ht请求的处理模块以及诸如安全、日志 之类的应用方式 2)httphandlers段:负责映射URIs到Ihttphandler类 3) sessionstat段:负责配置htp模块的会话状态 ) globalization段:配置应用的公用设置 5) compilation段:配置 ASPNET的编译环境 6)trace 段:配置 ASPNET的跟踪服务 7) secu 段: ASPNET的安全配置 8) iisprocessmode段:在IS上配置 ASPNET的处理模式 9) brower 段:配置浏览器的兼容部件 425一个配置读出的例子 1) config. web配置文件
以下例子定义了一个“httpmodules”配置段,设置了系统 http 相关的处理模块 4.2. 4 ASP.NET 定义的标准配置段 1)httpmodule 段: 定义了应用的 http 请求的处理模块以及诸如安全、日志 之类的应用方式 2)httphandlers 段: 负责映射 URLs 到 IhttpHandler 类 3)sessionstat 段: 负责配置 http 模块的会话状态 4)globalization 段: 配置应用的公用设置 5)compilation 段: 配置 ASP.NET 的编译环境 6)trace 段: 配置 ASP.NET 的跟踪服务 7)security 段: ASP.NET 的安全配置 8)iisprocessmodel 段: 在 IIS 上配置 ASP.NET 的处理模式 9)browercaps 段: 配置浏览器的兼容部件 4.2. 5 一个配置读出的例子 1)config.web 配置文件
configsections> 2)读出其内容 sub page load(s as object, e as eventargs) 取出test配置段的key键的值 Dim Cfg Section As Hashtable =Context. Get Config("test") Dim Msg As String=CStr( Cfg Section("key")) IblMsg. text=Msg end sub itle> 配置信息的读取 config. web中"test"配置段中key的内容为 3)运行结果
2)读出其内容 sub page_load(s as object ,e as eventargs) '取出 test 配置段的 key 键的值 Dim CfgSection As Hashtable = Context.GetConfig("test") Dim Msg As String = CStr(CfgSection("key")) lblMsg.text=Msg end sub 配置信息的读取 config.web 中"test"配置段中 key 的内容为: 3)运行结果
配置信息的读取- Microsoft Internet Explorer 文件①)编辑)查看)收藏④A)工具()帮助Q 加m翻质 config web中tet配置段中key的内容为 just a configure test 包完成 □□本地 Intranet d 42.6 Config.web配置实例 contiguration> / browsers
4.2. 6 Config.web 配置实例