ASP开发准则 |
利用程序服务器被,或最后将被 Web 服务器所 使用,它通常是运行 ASP 页面的 IIS 计算机 。ASP 是您的对象的唯一客户机 。它带来了专门的线程和安全考量 。 固然许多 使用 ASP 的 Web 站点 根本就不用组件,但在这篇文章中 假如 ASP 是 Internet 客户机和组件中间的桥梁 。下面的 asp/server01242000.asp">ASP 组件准则(英文)提供 ASP 和组件中间的划分服务 ASP 最常用于在服务器上 缔造供客户机 使用的 HTML 或 XML 文件, 因此我们主要 探讨这种 使用 方案 。这就引出了一个常见的问题,假如 ASP 页面在服务器上,那么它们是不是属于业务层的一 部分呢?在组件世界中,答案通常是不是 。 固然 ASP 确切在服务器上运行,而且可能与 利用程序服务器在同一个空间,然而这不能使它成为业务逻辑的一 部分 。 随着消费者界面工具的进展或者随着启用更多的业务对业务 方案, 占有这种明确的区别将 获得 硕大的回报 。 话说到此,让我们来看一些最主要的业务层和 示意层划分准则: 令 UI 代码与业务逻辑 拆散 。这包含编写与 UI 耦合的代码,例如 使用 ASP 内部组件的 MTS 对象,让它与业务逻辑代码 拆散,如同在不同的 DLL 中 。 将事务与 ASP 页面 拆散 。事务 ASP 在某些状况下十分好,然而组件和多层 利用程序会转变这种状况 。组件不应该依赖由客户机层来治理它们的事务和业务逻辑语义 。 将 示意组件( 使用 申请和响应的组件)与 Web 服务器放在 雷同的机器和/或 历程中 。假如将 使用 ASP 内部组件对象的对象放在远程机器上,那么对内部组件的全部调用将以回调 模式 产生 。调用 IIS 客户机的是 COM+ 服务器,它卓著减低了性能并使安全配置复杂化 。 可以将这些调整对象放在标记为“库激活”的 COM+ 利用程序中 。 ASP 存在于服务器上, 因此 ASP 页面必须 相符资源共享 规定,而且记住可伸缩性 。请看下面的 详尽内容: 在“会话”中,治 理当尽量幸免消费者特定的状态 。 维持 ASP 无状态,并在可能的状况下同意资源池 。 操作 模式 在评介某个代码段是不是属于业务逻辑或者 示意层时,请问一下自己,“假如我必须用按键式电话 利用程序 接替我的 ASP 页面,那么该代码是不是还有用?”假如答案为“是”,那么 可以尝试将它划分为业务逻辑代码或者消费者界面协助器代码 。 假如转变了客户机后该代码不能用,或者假如它是 构造消费者界面的协助器,则该代码属于 示意服务层 。它在 ASP 页面中,或在 使用 ASP 内部组件的组件中 。它不属于业务对象组件 。 了解桌面与 ASP 客户机的区别 ASP 是组件的特别客户机,不同于桌面上的传统单线程 Win32 利用程序 。主要区别归纳如下 。 线程治理:ASP 是多线程客户机 。这 象征着 可以有许多并发 运动一同运行, 兴许在同一时刻 解决不同的 ASP 页面 。这 注明不能使对象伪称它是唯一的 使用者来独占系统 。这样做可能故意外的 反响,例如,养成一个坏习惯:将对象存储在 ASP 会话或者 利用程序变量中 。 安全环境: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 和组件 利用程序 。 参考 asp#server">MSDN Voices: Servin' it Up Column(英文) SeminarOnline:在 ASP 下 使用自定义 COM 组件(英文) asp">MSDN 杂志(英文)不要将 引用存储在会话或 利用程序中的 VB 对象中 全部 Visual Basic 6.0 组件都是“单元线程”的,便是说它们都运行在 STA 单元中 。这 象征着假如在线程中 缔造对象,那么对该对象的全部调用都必须用同一线程服务 。许多线程(来自并发 Web 站点消费者) 使用 STA 对象的同一实例,会引起一连串的 运动,有可能成为 利用程序中的瓶颈 。 此外,在会话 规模内存储用 Server.CreateObject 缔造的 STA 对象, 可以有效地将执行线程 联络到目前消费者,从而将 利用程序的最大并发消费者数 制约到默许的 20xN(N = 解决器数量) 。 操作 模式 假如您依照我们的 提议使对象无状态,则不需求存储 引用以供客户机复用,并在 利用程序 规模内存储它们 。客户机将 可以独立 缔造、 使用和 取缔它们自己的对象 。这就削减了 维持会话特有对象的需求,缘由是它们不保留会话特有的状态 。 推举的 模式是使对象无状态,它在需求时 拜访数据库或 其余存储区(例如 cookies 和 LDAP) 。 假如需求 使用会话或 利用程序 规模的数据,请将数据,而不是 解决数据的对象,存储在此 。您 可以 缔造一个类,来封装对所需值的 解决 。 参考 asp">信息:不要在会话或 利用程序中存储 STA 对象 (Q243543)(英文) PRB:将 STA COM 组件存储在会话中,会将会话锁定在单线程中 (Q243815)(英文) 信息:ASP 下的组件线程模型概要 (Q243544)(英文) 学习 IIS 5.0 中的新内容 Internet Information Server 5.0 添加了许多新 性能 。这些改良均已写入 J.D. Meier 的 MSDN 文章中:asp/server02282000.asp">沿用 IIS 5.0 中的 ASP(英文) 。下面是该文中最主要改良的概述 。 改良的、出众的性能 Server.Transfer 和 Server.Execute 步骤 集中式 舛误 解决 改良的阅读器 性能 改良的脚本引擎 正则 抒发式 综合器 与 ADO 记录集 XML 性能的集成 新的安全性、缓冲、隔离和治理 性能 |