<<<返回

在Session范围内创建组件事例
在Session范围内进行这种操作有两种方法，一种还是利用Server.CreatObject()方法，和前面一样，见下面的例子： <% Set Session(“MyBrow”)=Server.CreateObject(“MSWC.BrowserType”) %> 这个脚本将浏览器能力检测组件事例赋给了Session变量MtBrow。那么这个变量就可以随着这个用户在每一个页面中使用。你可以将这个脚本放在Global.asa或者其他任何Active Server Pages中。
这样创建的缺点是，该对象会立即被创建，即使不去使用，也在白白的占用资源。
幸好，还有一种在Session范围内进行组件创建的方式，你可以在Global.asa中利用微软的<OBJECT>标记进行创建。如下：
<OBJECT RunAt=”Server” SCOPE=”Session” ID=”MyBeow” ProGid=”MSWC.BrowserType”</Object>
这个例子中使用了HTML的<OBJECT>标记来创建一个浏览器能力检测组件的事例。其中的SCOPE属性指示该组件将在session范围内进行创建。ID属性为这个事例进行认证以区分于其他事例。这样你就可以在你的脚本中进行引用。PROGID被用来限定组件的注册名。这是Server在进行事例创建时进行认证的依据。这和你用Server.CreateObject()方法时指定的名称是一致的。
当你在Global.asa中使用<OBJECT>对象时，你必须把它放在任何一个事件之外，千万不要把它放在某一个事件的脚本程序中。
注：你还可以利用组件注册码来代替注册名，（如果你真的喜欢这样做），这里面需要指定ClassID属性，见下面这个脚本：
<OBJECT RUANT=Server SCOPE=”Session” ID=”MyBrow”
CLASSID=”0ACE4881-8305-11CF-9427-444553540000”></OBJECT>
当一个组件以上述两种任何一种方式创建之后，对于这个Session的用户来说就可以在Session结束前在任何界面操作这个事例的方法、熟悉功能、集合。
不过，这样对于每一个用户都要创建一个特定的事例，这样在用户较多时对资源的占用就比较可怕了。
那么你什么时候需要创建一个Session范围内的组件事例呢？在第21章中，你会学会怎样使用Ad Rotator组件，这种组件用于以不同频率显示不同的广告条，如果你希望在相当多的页面上进行这种选择，那么就需要将Ad Rotator组件事例赋给 Session变量。