安全环境:ASP 是由 Web 站点中的 Internet Information Services 5.0 执行的,有低、中、高三种隔离度。甚至这些 Web 站点可以有不同的安全设置、允许或拒绝匿名访问、验证客户等等。所有这些设置产生了大量的方案,即不同的用户帐户最终用的是您的对象。
轻松增长:这不是技术问题,而是 Web 应用程序所提供设施的副效应。
传统上,为桌面应用程序增加用户基,要求仔细计划好向已知数量客户机的转出。ASP 已经改变了该过程。在启动和运行后,ASP-Visual Basic 应用程序可以方便地打开,供当地的或世界范围的所有职员、所有业务伙伴和所有客户使用。
可以用这种方式描述 — 拥有超链接的单个电子邮件可以使用户基成十倍地增长。您的应用程序为此作好准备了吗?唯一了解的方式是对 Web 站点进行强度测试,以获得实际性能的预期值。
在 ASP 内应该如何使用 Visual Basic 对象?在页面范围内创建和取消您的对象。
也就是说,尽可能使 ASP 页面无状态,只在暂时状态下依赖会话或应用程序变量。不要将对象存储在会话或应用程序变量中。这将 ASP 线程锁定到您的会话、取消所有可伸缩性的预期值。也就是说,Web 服务器处理的用户数不会超过几十个。如果需要在会话或应用程序中存储内容,请使之成为数据而不是对象。
还有可以遵守的许多其他准则。我们建议您阅读 MSDN Voices 上 J. D. Meier 撰写的专栏“Servin' it Up”。该专栏包括了大量的技术、实践和技巧,有助于开发可扩展的、可靠的 ASP 和组件应用程序。
不要将引用存储在会话或应用程序中的 VB 对象中
所有 Visual Basic 6.0 组件都是“单元线程”的,就是说它们都运行在 STA 单元中。这意味着如果在线程中创建对象,那么对该对象的所有调用都必须用同一线程服务。许多线程(来自并发 Web 站点用户)使用 STA 对象的同一实例,会引起一连串的活动,有可能成为应用程序中的瓶颈。
此外,在会话范围内存储用 Server.CreateObject 创建的 STA 对象,可以有效地将执行线程联系到当前用户,从而将应用程序的最大并发用户数限制到默认的 20xN(N = 处理器数量)。
操作方式
如果您按照我们的建议使对象无状态,则不需要存储引用以供客户机复用,并在应用程序范围内存储它们。客户机将能够独立创建、使用和取消它们自己的对象。这就减少了保持会话特有对象的需要,原因是它们不保留会话特有的状态。
推荐的方式是使对象无状态,它在需要时访问数据库或其他存储区(例如 cookies 和 LDAP)。
如果需要使用会话或应用程序范围的数据,请将数据,而不是处理数据的对象,存储在此。您可以创建一个类,来封装对所需值的处理。