`
阅读更多
<meta content="MSHTML 6.00.2900.3199" name="GENERATOR"> <style></style>2002年04月18日 09:25:00

应用程序服务器被,或最终将被 Web 服务器所使用,它通常是运行 ASP 页面的 IIS 计算机。ASP 是您的对象的唯一客户机。它带来了专门的线程和安全考虑。

虽然许多使用 ASP 的 Web 站点根本就不用组件,但在这篇文章中假定 ASP 是 Internet 客户机和组件之间的桥梁。下面的 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 和组件应用程序。

参考

MSDN Voices: Servin' it Up Column(英文)
SeminarOnline:在 ASP 下使用自定义 COM 组件(英文)
MSDN 杂志(英文)

不要将引用存储在会话或应用程序中的 VB 对象中

所有 Visual Basic 6.0 组件都是“单元线程”的,就是说它们都运行在 STA 单元中。这意味着如果在线程中创建对象,那么对该对象的所有调用都必须用同一线程服务。许多线程(来自并发 Web 站点用户)使用 STA 对象的同一实例,会引起一连串的活动,有可能成为应用程序中的瓶颈。

此外,在会话范围内存储用 Server.CreateObject 创建的 STA 对象,可以有效地将执行线程联系到当前用户,从而将应用程序的最大并发用户数限制到默认的 20xNN = 处理器数量)。

操作方式

如果您按照我们的建议使对象无状态,则不需要存储引用以供客户机复用,并在应用程序范围内存储它们。客户机将能够独立创建、使用和取消它们自己的对象。这就减少了保持会话特有对象的需要,原因是它们不保留会话特有的状态。

推荐的方式是使对象无状态,它在需要时访问数据库或其他存储区(例如 cookies 和 LDAP)。

如果需要使用会话或应用程序范围的数据,请将数据,而不是处理数据的对象,存储在此。您可以创建一个类,来封装对所需值的处理。

参考

信息:不要在会话或应用程序中存储 STA 对象 (Q243543)(英文)
PRB:将 STA COM 组件存储在会话中,会将会话锁定在单线程中 (Q243815)(英文)
信息:ASP 下的组件线程模型概要 (Q243544)(英文)

学习 IIS 5.0 中的新内容

Internet Information Server 5.0 增加了许多新功能。这些改进均已写入 J.D. Meier 的 MSDN 文章中:沿用 IIS 5.0 中的 ASP(英文)。下面是该文中最重要改进的概述。

  • 改进的、出色的性能

  • Server.Transfer 和 Server.Execute 方法

  • 集中式错误处理

  • 改进的浏览器功能

  • 改进的脚本引擎

  • 正则表达式分析器

  • 与 ADO 记录集 XML 功能的集成

  • 新的安全性、缓冲、隔离和管理功能

参考

ASP 中的重要更改(英文)
信息:ASP 和 IIS 5.0 中的新功能 (Q222487)(英文)



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3545


分享到:
评论

相关推荐

    ASP开发准则是什么

    应用程序服务器被,或最终将被 Web 服务器所使用,它通常是运行 ASP 页面的 IIS 计算机。ASP 是您的对象的唯一客户机。它带来了专门的线程和安全考虑。本文介绍ASP的开发准则,一起来看。

    ASP的开发准则及安全管理英文文献翻译.doc

    ASP的开发准则及安全管理英文文献翻译.doc

    类库开发的设计准则

    截取自MSDN共分为: &lt;br&gt;名称准则 描述命名类库中的类型和成员的准则。 &lt;br&gt;类型设计准则 描述使用静态和抽象类、接口、枚举和结构的准则。 &lt;br&gt;成员设计准则 描述设计和使用属性、方法、构造...

    asp.net知识库

    ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...

    C#-ASP.NET编码规范

    在我们进行项目开发过程,必须注意的编码规范准则。

    用于ASP.NET(和Core)网站的简单但有效的微型分析器-.NET开发

    .NET(和.NET Core)的MiniProfiler欢迎使用.NET,ASP.NET,ASP.NET Core,ASP.NET MVC的MiniProfiler,以及...它是.NET Foundation的一部分,并根据其行为准则进行操作。 MiniProfiler当前的主要版本是v4。 方便的链接

    ASP.NET中保护自定义的服务器控件

    下文提供了针对自定义服务器控件的用户和开发人员的基本安全准则。有关创建自定义服务器控件的更多信息,请参见开发自定义 ASP.NET 服务器控件。 IDE(如 Microsoft Visual Studio 2005)简化了自定义控件的使用及开发...

    ASP EXCEL导入SQL

    AJAX技术遵守REST准则的应用程序中简单和可伸缩的架构,凡是采用AJAX技术的页面简洁而又丰富,一个页面表现了丰富多彩的形态。  AJAX技术还使用了一种不同于XML格式的JSON文件格式,这个意义在哪里呢?在REST软件...

    《ASP.NET与数据库程序设计》

    2-3写给ASP开发人员 2-3-1 ASP的物件 2-3-2了解NameSpace 2-3-3 Server的事件及执行位置 2-3-4数据定义的改变 2-4使用Visual Studio.NET 2-4-1集成的开发环境 2-4-2工程处理 检视各项...

    毕业设计:淘宝店主交易管理系统的设计与实现(源代码)

    其次,综合运用以前所学的相关知识,选择所熟悉的开发工具ASP进行本设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,在系统开发完毕后,进行调试和运行,做好调试和...

    档案管理系统毕业论文

    ASP的开发准则及安全管理.doc 代码.doc 高校学生档案管理系统.doc 高校学生档案管理系统的.ppt 高校学生档案管理系统说明书.doc 界面图.doc 论文综述.doc

    Askmethat-Aspnet-JsonLocalizer:用于.NetStandard和.NetCore Asp.net项目的Json Localizer库

    该代码尝试最符合Microsoft准则。 该库与NetStandard&NetCore兼容。组态扩展方法可用于IServiceCollection 。 你可以在看看方法选件提供了一组选项。 您可以这样定义它们: services . AddJsonLocalization ( ...

    速群HTML静态论坛3.0

    1)由于该程序是免费加以许可的,因而也就无法保证该程序符合可用性准则。任何情况下,程序的质量风险和性能风险完全由您承担。有可能证实该程序存在漏洞,您需要估算与承担所有必需服务,恢复,修正,甚至崩溃所产生的...

    NET组件程序设计 第2版中文版.part3.rar )

    本书还利用大量的代码示例、使用技巧、开发警示、设计准则和富有创意的实用工具,向读者介绍如何运用.NET框架编写可复用、可维护和健壮的组件。通过此书,读者还能了解到组件技术在.NET平台上的实现和应用,以及如何...

    ASPICE在汽车行业越来越“火”,那么什么是ASPICE呢?

    ASPICE几乎成为汽车行业的通用标准和准则。那么什么是ASPICE呢?在介绍ASPICE之前,我们不得不提及的是CMMI。 CMMI全称是能力成熟度模型集成(CapabilityMaturityModelIntegration),是在1994年由美国国防部与...

    电子商务系统设计与分析.docx

    动态网页编程技术目前常用的有ASP、PHP和( )三种 [单选题] * A. Flash B. XML C. JSP(正确答案) D. HTML 7. 衡量系统开发质量的首要标准是 ( ) [单选题] * A. 满足技术指标 B. 满足设计者要求 C. 满足用户要求...

    高级软件架构师复习提纲

    52、 常见的Caching技术有://ASP.NET Cache //数据库缓存 //通过静态变量缓存//Memory-Mapped Files 53、 授权包括://用户的权限//代码的执行权限 54、 在构思阶段,各种角色的职责是://根据质量目标提供反馈//...

    C#与.NET技术平台实战演练.part2

    未来的视窗、组件程序的设计潮流,将是采用.NET平台为底层服务,并使用C#语言开发。C#是微软为.NET技术量身订制的语言,它拥有简洁的语法和便于开发的特性。本书将C#的特色与应用,借助实战演练的方式,阶段性地引导...

Global site tag (gtag.js) - Google Analytics