实现健壮性能的规则
Hank Marquis
来自于Enterprise Solutions for Microsoft BackOffice and Windows NT Magazine
原稿地址:http://www.microsoft.com/china/technet/intranet/sevstep.asp
在你的服务器上安装了微软IIS(Internet Information Server),你就可以发挥ASP(Active Server Pages)的优势了,ASP利用ActiveX组件来为你的 *** 应用完成所有种类的工作。尽管你可以在HTML和有ASP页面的IIS里面使用许多ActiveX组件,服务器端组件也不是运行在一台服务器上的普通组件。它在运行时不会告诉你同需要特别关照的产品服务器有关的任何信息。你将无法做任何事情去改变其对服务器性能、安全和稳定性的影响。对服务器端的组件的不恰当选择可能会导致一些问题,包括速度的明显下降,安全漏洞或者其它更恶劣的问题。
客户端的组件在用户计算机上执行。客户端组件包括绝大多数我们现在已经了解的一些流行组件:标签控件,文本框,命令按钮,格子等。这些组件可以通过<OBJECT>标签和(或)HTML对象语法来包含在客户端HTML代码中。
多数的有用的客户端组件会提供特定种类的用户界面。记住,使用客户端组件就意味着真实组件已经被传到客户计算机上。寻常的做法就是把组件下载到客户计算机上。当然,用户不得不等待下载过程,而且客户计算机必须被配置为允许下载。
与此形成对比的是,服务器端的组件在服务器计算机上执行。服务器端组件也为用户做一些工作,但却是在服务器上运行的。你必须认识到这个差异并且相应地编制代码。服务器端组件为你的整个应用程序封装了一些逻辑或功能。
当一个用户使用应用程序时,他将不会真正看到服务器端的组件。这些组件大多数都可以通过需要使用组件的ASP脚本中的<OBJECT>标识来被包含。你同样可以通过服务器的CreateObject语法来包含服务器端的组件。
建造健壮的组件
用于创建健壮组件的好材料并不多。但是,我在这里向大家推荐七个关键步骤,它可以帮助你创建稳定和安全的服务器端组件,可以很优雅地缩放并且维持性能。在创建一个服务器端 *** 应用时,你需要把稳定,安全和性能放在你心目中的首要位置。
服务器端组件不应该具有GUI(图形用户界面)。因为服务器端组件是在服务器上运行, *** 应用的用户是看不到可能弹出的任何对话的。你的组件需要能够同脚本和其它组件进行交流,却无需同用户交流。避免所有的消息框和其它任何图形的用户界面单元。你必须开发利用返回结果来同状态和其它模块信息进行交流的代码。如果什么东西出问题,不要抛出一个错误消息或者使用一个消息框,可以返回一个状态变量。你需要做的最后一件事是锁定忙碌服务器等待OK按钮被按下。
服务器端组件不得被传递引用或者传递引用给对象。普遍的做法是把控 *** 为一个参数传递给其它过程或组件。这包括其它对象的引用,比如RecordSets。尽管如此,向 *** 中的组件传递引用可能导致速度明显下降,使一个繁忙的服务器更加缓慢, *** 应用程序在响应用户需求时也表现得更慢。
服务器端组件应该尽可能地少含 *** 和属性。每一个 *** 或属性的调用都需要大量处理。因此,一个编写的好的服务器端组件应该几乎不含明显的 *** 和属性。组件含有的那些 *** 和属性会带来更多的参数。具有很多参数的调用越少,性能就越好,尤其是你的 *** 应用程序需要支持许多用户时。这个技巧和许多开发人员的经验是相反的。尽量少的使用带有许多参数的调用也会带来另外一些问题,这使得编码和调试更加困难,但是速度上的改进是与付出的努力相当的。
服务器端组件必须实现恰当的线程模型。利用单线程组件可能导致服务器限制一个线程的会话,这将带来速度的明显下降。应该选择VB的房间模型线程选项并且努力避免单线程组件。但是,VB不能创建你可以在Visual C++里发现的具有线程选择范围的组件,。这一点也表明VB不是一种很合适这项工作的开发语言。
服务器端组件应该使用早期绑定。如果你的服务器应用程序要扩容,这显得特别重要。早期绑定的对象在编译时就拥有引用解析,可以节省不少执行时间。
服务器端组件不能使用在应用程序或会话作用域的声明中。请注意你的控件是如何被限定作用域的。作用域描述了如何创建一个组件的实例,这对你的服务端组件的成功起着关键作用。正如上月所讨论的那样,存在三种级别的作用域:页面级,会话级和应用程序级。页面级作用域对象可以用页面本身的HTML和ASP脚本代码来创建。页面级作用域组件的更佳性能可以通过使用房间线程来得到。而对应用程序级和会话级作用域组件来说,可以通过使用ATL组件的双线程模型来得到。同作用域结合的线程模型也影响服务器的安全性能。例如,一个利用应用程序级作用域的房间线程组件在系统安全环境里运行,但并不是当前用户的安全环境。这对那些具有安全意识的人来说可能是一个问题。
本文目录一览: 1、全球最为严重的黑客入侵事件有哪几起? 2、苹果手机被黑客远程控制怎么办? 3、黑客帝国讲的是什么故事? 4、史上最厉害的黑客是谁? 全球最为严重的黑客入侵事件有哪几起...
新华社北京2月10日电(罗国金、汪学潮)“你们在前方辛苦了,一定要注意安全!下面开始会诊,请主管医生介绍第一个病人情况……”简单问候之后,解放军总医院和火神山医院2月9日下午5时许开展首次5G网络远程...
合谷穴位位置图(合谷是个长寿穴,有事没事多捏捏!) 针灸书中有一个四大总穴歌,其中之一就有合谷。合谷穴不仅是个总穴,还是个长寿要穴,更是百思特网个急救要穴。像这样好的穴位,我们怎么能够“放过它”!...
tpkmpsvc.exe是什么进程? 进程名称: IBM ThinkPad Utility 英文描述: tpkmpsvc.exe is a process associated with the...
当前,各领域的登录信息、支出账户号码等都与各自的手机号码接洽在一路,用户在获取大批信息和生存便当的同时,也有信息泄漏的危害。许多环境下市民的片面信息都是在网上公示贩卖的,光是手机号码便查到主人的全部信...
覃怎么读?覃是什么意思?覃的词语出处也是那里?很多人在生活、学习中遇到“覃”这个词,大家都不知道怎么读这个生僻字。你想知道这些有趣的生僻字怎么读吗?豪友网专门精心整理了生僻字怎么读相关的内容,为你释疑...