正在加载图片...
138:3商程 研究了组件的创建。 当然,在某种情况下,我们可能要求一个对象具有应用程序层和会话层的作用域,尤其 是在页面请求间保存状态时。在后面讨论 Dictionary对象时,将有一个这方面的实例 5.23 Server CreateObject与< oBJECT:>的区别 Server CreateObject方法立即创建一个对象实例。在大多数情况下这也是我们所希望的。 而< OBJECT>元素只有首次引用一个对象时才创建指定的对象实例。因此如果在代码中停止 使用该对象,则不创建该对象实例。 如果代码只在某种情况下使用这个对象(可能依赖于请求参数的值),这也许是有用的。因 为如果不需要这个对象,则可以节省服务器的资源。 然而,如果肯定需要创建某一对象,可使用 Server CreateObject方法完成。用< OBJECT> 元素创建对象有助于防止在代码中取消对对象的调用时,忘记取消程序中的 Server. CreateObject行,当然这是一个粗心的程序设计。 最后需要记住的是,如果对象是使用 Server Createobject方法创建的,就可以从会话或应 用程序中去掉对象,但使用< OBJECT:>元素创建的,则不行。 524组件线程模型 在页面内使用对象或组件时,应该考虑的另一个问题是该对象涉及到的响应多个请求的 行为方式。事实上在ASP里,这是所需要理解的最复杂的题目之一。一个组件的线程模型, 结合其作用域,影响该组件和应用程序的性能和效率,也影响将它实例化的ASP页面 线程就是由处理器执行的系统对象,用于完成由组件代码定义的任务。每一个 线程都可以被认为是单个二进制指令集。在像 Windows这样的多线程环境中,多个线 程可同时运行。 实际上有五个线程模型(包括在 Windows2000里引入的 Neutral- threading模型) Single-threaded(单线程):某一时刻只能有一个进程使用某组件 Apartment-threaded(单元线程):若干进程都可以使用某组件,但只有一个在指定的线 程上。 Neutral- threaded(中立线程):若干进程都能使用某组件,并且可以使用指定的一组线程 中的任何一个。 Multiple- threaded或Free- threaded(多线程或自由线程):若干进程都能使用某组件,并且 这些进程可以运行在不同的线程上。 Both- -threaded(双线程):对象既可以是单元线程的又可以作为自由线程的 在这里不解释线程模型的技术细节,本书后面有相应的内容 单元线程的组件(例如使用 Visual basic创建的或作为XML脚本的组件)可在页面层作用域 内很好地运行,在会话层作用域内也是可以接受的。事实上,在页面层,由于较低的数据处 理开销,也能很好地运行双线程的组件 Windows2000中的中立线程的模型甚至提供了更好的性能,尽管到目前为止只有很少的 这样的组件和与之相适应的开发工具研究了组件的创建。 当然,在某种情况下,我们可能要求一个对象具有应用程序层和会话层的作用域,尤其 是在页面请求间保存状态时。在后面讨论 D i c t i o n a r y对象时,将有一个这方面的实例。 5.2.3 Server. C r e a t e O b j e c t与< O B J E C T >的区别 S e r v e r. C r e a t e O b j e c t方法立即创建一个对象实例。在大多数情况下这也是我们所希望的。 而< O B J E C T >元素只有首次引用一个对象时才创建指定的对象实例。因此如果在代码中停止 使用该对象,则不创建该对象实例。 如果代码只在某种情况下使用这个对象 (可能依赖于请求参数的值 ),这也许是有用的。因 为如果不需要这个对象,则可以节省服务器的资源。 然而,如果肯定需要创建某一对象,可使用 S e r v e r. C r e a t e O b j e c t方法完成。用< O B J E C T > 元 素 创 建 对 象 有 助 于 防 止 在 代 码 中 取 消 对 对 象 的 调 用 时 , 忘 记 取 消 程 序 中 的 S e r v e r. C r e a t e O b j e c t行,当然这是一个粗心的程序设计。 最后需要记住的是,如果对象是使用 S e r v e r. C r e a t e o b j e c t方法创建的,就可以从会话或应 用程序中去掉对象,但使用 < O B J E C T >元素创建的,则不行。 5.2.4 组件线程模型 在页面内使用对象或组件时,应该考虑的另一个问题是该对象涉及到的响应多个请求的 行为方式。事实上在 A S P里,这是所需要理解的最复杂的题目之一。一个组件的线程模型, 结合其作用域,影响该组件和应用程序的性能和效率,也影响将它实例化的 A S P页面。 线程就是由处理器执行的系统对象,用于完成由组件代码定义的任务。每一个 线程都可以被认为是单个二进制指令集。在像 Wi n d o w s这样的多线程环境中,多个线 程可同时运行。 实际上有五个线程模型 (包括在Windows 2000里引入的N e u t r a l - t h r e a d i n g模型): • Single-threaded(单线程):某一时刻只能有一个进程使用某组件。 • Apartment-threaded (单元线程):若干进程都可以使用某组件,但只有一个在指定的线 程上。 • N e u t r a l - t h r e a d e d (中立线程):若干进程都能使用某组件,并且可以使用指定的一组线程 中的任何一个。 • M u l t i p l e - t h r e a d e d或Free-threaded (多线程或自由线程):若干进程都能使用某组件,并且 这些进程可以运行在不同的线程上。 • Both-threaded(双线程):对象既可以是单元线程的又可以作为自由线程的。 在这里不解释线程模型的技术细节,本书后面有相应的内容。 单元线程的组件(例如使用Visual Basic创建的或作为X M L脚本的组件)可在页面层作用域 内很好地运行,在会话层作用域内也是可以接受的。事实上,在页面层,由于较低的数据处 理开销,也能很好地运行双线程的组件。 Windows 2000中的中立线程的模型甚至提供了更好的性能,尽管到目前为止只有很少的 这样的组件和与之相适应的开发工具。 138计计ASP 3 高级编程 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有