应用服务器现在或最终将由Web服务器使用,Web服务器通常是一台运行ASP页面的IIS计算机。ASP是你的对象的唯一客户端。它带来了特殊的线程和安全考虑。本文介绍了ASP的开发标准,一起来看看吧。
尽管许多使用ASP的网站根本不使用组件,但本文假设ASP是互联网客户端和组件之间的桥梁。
ASP和组件之间的划分服务
ASP最常用于在服务器上为客户端创建HTML或XML文件,所以我们主要讨论这种使用方案。这就引出了一个普遍的问题。如果ASP页面在服务器上,它们是业务层的一部分吗?在组件领域,答案通常是否定的。尽管ASP确实运行在服务器上,并且可能与应用服务器在同一个空间,但这并不使它成为业务逻辑的一部分。
随着用户界面工具的发展或更多的企业对企业解决方案的启用,这种清晰的区分将会带来巨大的回报。
说到这里,让我们看看划分业务层和表示层的一些最重要的标准:
将UI代码与业务逻辑分开。这包括编写与UI耦合的代码,比如使用ASP内部组件的MTS对象,这样就可以与业务逻辑代码分开,就像在不同的DLL中一样。
将事务与ASP页面分开。Transaction ASP在某些情况下非常好,但是组件和多层应用会改变这种情况。组件不应该依赖客户端层来管理它们的事务和业务逻辑语义。
将表示组件(使用请求和响应的组件)放在与Web服务器相同的机器和/或进程中。如果将使用ASP内部组件对象的对象放在远程机器上,所有对内部组件的调用都将以回调的形式发生。是COM服务器调用IIS客户端,这大大降低了性能并使安全配置变得复杂。您可以将这些调整对象放在标有“库激活”的COM应用程序中。
ASP存在于服务器上,所以ASP页面必须符合资源共享规则,记住可伸缩性。请查看以下详细信息:
在“会话”中,管理应尽量避免用户特定的状态。
尽可能保持ASP无状态并允许资源池。
操作方式
当评估一个代码段是属于业务逻辑层还是表示层时,问问自己,“如果我必须用按键式电话应用程序替换我的ASP页面,代码还会有用吗?”如果答案是“是”,你可以试着把它分成业务逻辑代码或者用户界面助手代码。
如果换了客户端后代码就不能用了,或者是构造用户界面的助手,那么代码就属于表现服务层。它在ASP页面中,或者在使用ASP内部组件的组件中。它不是业务对象组件。
理解桌面与 ASP 客户机的区别
ASP是一种特殊的组件客户端,不同于传统的桌面单线程Win32应用。主要差异总结如下。
线程管理:ASP是一个多线程客户端。这意味着可以有许多并发的活动一起运行,可能同时处理不同的ASP页面。这说明对象无法假装自己是独占系统的唯一用户。这样做可能会产生意想不到的反应,例如,养成在ASP会话或应用程序变量中存储对象的坏习惯。
安全环境:ASP在网站中由Internet Information Services 5.0执行,有低、中、高三个隔离度。甚至这些网站可以有不同的安全设置,允许或拒绝匿名访问,验证客户,等等。所有这些设置会产生大量的场景,也就是说,不同的用户帐户最终会使用您的对象。
易增长:这不是技术问题,而是Web应用提供的设施的副作用。
传统上,增加桌面应用程序的用户群需要仔细规划部署到已知数量的客户端。ASP改变了这个过程。ASP-Visual Basic应用程序在启动和运行后,可以很容易地为本地或全球的所有员工、所有业务伙伴和所有客户打开。
可以这样描述——一封带超链接的邮件就能让用户基数增加十倍。您的应用程序为此做好准备了吗?唯一知道的方法就是测试网站的实力,以得到实际表现的期望值。
在ASP中应该如何使用Visual Basic对象?在页面范围内创建和取消您的对象。
也就是说,尽可能让ASP页面无状态,在临时状态下只依赖会话或者应用程序变量。不要将对象存储在会话或应用程序变量中。将此ASP线程锁定到您的会话,并取消所有预期的可伸缩性值。也就是说,Web服务器处理的用户数量不会超过几十个。如果您需要在会话或应用程序中存储内容,请让它成为数据而不是对象。
还有许多其他的指导方针可以遵循。我们建议你阅读J. D. Meier在MSDN之声上写的专栏“向上服务”。本专栏包括大量的技术、实践和技巧,有助于开发可扩展的、可靠的ASP和组件应用程序。
不要将引用存储在会话或应用程序中的 VB 对象中
所有Visual Basic 6.0组件都是“单元线程化的”,也就是说,它们都在STA单元中运行。这意味着,如果一个对象是在一个线程中创建的,那么对该对象的所有调用都必须由同一个线程提供服务。许多线程(来自并发网站的用户)使用STA对象的同一个实例,这将引起一系列活动,并可能成为应用程序中的瓶颈。
另外,存储用服务器创建的STA对象。会话范围内的CreateObject可以有效地将执行线程连接到当前用户,从而将应用程序的最大并发用户数限制在默认的20xN(N=处理器数)。
操作方式
如果你像我们建议的那样使对象成为无状态的,你就不需要存储供客户机重用的引用,并把它们存储在应用范围内。客户将能够独立地创建、使用和取消他们自己的对象。这减少了保留会话特定对象的需要,因为它们不保留会话特定的状态。
推荐的方法是使对象无状态,它在需要时访问数据库或其他存储区域(如cookies和LDAP)。
如果您需要使用会话或应用程序范围的数据,请将数据存储在此处,而不是存储处理数据的对象。您可以创建一个类来封装所需值的处理。
学习 IIS 5.0 中的新内容
Internet Information Server 5.0增加了许多新功能。这些改进已经写在了J.D. Meier的MSDN文章中:IIS 5.0中的ASP(英文)如下。
以上是ASP的开发准则。希望你能多了解这方面的知识,对ASP的发展有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。