构建稳定的服务器端组件的七个步骤(载自微软)

服务器|微软

实现健壮性能的规则

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组件的双线程模型来得到。同作用域结合的线程模型也影响服务器的安全性能。例如,一个利用应用程序级作用域的房间线程组件在系统安全环境里运行,但并不是当前用户的安全环境。这对那些具有安全意识的人来说可能是一个问题。

为了速度,服务器端组件应该是进程中组件;为了稳定,则应该是进程外组件。有两种方式去创建COM(OLE)服务器--进程中和进程外。在VB里,你用EXE或DLL扩展名去编译服务器。具有DLL扩展名的OLE服务器就被称为进程中服务器;而具有EXE扩展名的被叫做进程外服务器。进程外意味着组件作为一个独立的过程在运行,而且与调用它的应用程序不共享地址空间。运行进程外组件会导致性能的降低,因为Windows不得不在两个或多个应用程序之间来回移动数据。进程中意味着组件在调用它的应用程序的地址空间里运行。在过程之间交流无需中间物,这使性能显著提高。进程中组件的负面是如果组件失败,那调用它的应用程序也会失败。
服务器端组件使得创建一流的解决方案成为可能。利用IIS,可能还得用上MTS,你可以基于Windows NT的强有力的处理能力创建高性能的可升级的网络应用程序。

Hank Marquis是现代软件(Modern Software)的创始人,可以通过hankm@modernsoftware.com来联系他。本文首次发表于BackOffice CTO杂志。

我们微软公司希望这篇文章的信息对你有用。但是,使用这些信息是你自己愿意承担的风险。这里所有的信息都以"好像是"的方式提供,对信息的准确性、完整性、针对某种特定目的的适用性、无害性没有任何明显的或者暗示的担保,文章中提到的所有第三方产品或信息都不是被微软公司授权,推荐,支持和提供保证的。微软公司你使用这些信息而可能蒙受的无论是直接、间接、特殊的、偶然的或者有因果关系的损失不负任何责任,即使这种损失的可能性被仔细考虑过。文中提到的所有产品的价格都可以在不另做通知的情况下改变。

时间: 2024-10-06 12:23:12

构建稳定的服务器端组件的七个步骤(载自微软)的相关文章

构建稳定的服务器端组件的七个步骤

服务器 在你的服务器上安装了微软IIS(Internet Information Server),你就可以发挥ASP(Active Server Pages)的优势了,ASP利用ActiveX组件来为你的网络应用完成所有种类的工作.尽管你可以在HTML和有ASP页面的IIS里面使用许多ActiveX组件,服务器端组件也不是运行在一台服务器上的普通组件.它在运行时不会告诉你同需要特别关照的产品服务器有关的任何信息.你将无法做任何事情去改变其对服务器性能.安全和稳定性的影响.对服务器端的组件的不恰当

利用OWC服务器端组件动态生成图表

动态|服务器|图表 利用OWC服务器端组件动态生成图表 以前在这里也曾经有一些文章谈到了在ASP中生成动态图表的问题,但那些文章中所谈到的一些方法都有某些方面的限制,如需要在客户端安装office2000或安装OWC,有些则可能在Intranet中使用时没什么问题,但在通过Internet访问的时候,就可能出现无法正常工作的现象(这主要和SQL Server的安全设置有关).那么,我们如何来避免这些问题呢?有一个很好的方法,就是将在ASP中生成的图表转换成图片文件保存在服务器上,这样用户最终看到

使用VB创建ASP服务器端组件

创建|服务器 使用VB创建ASP服务器端组件 本篇文章通过与传统的设计方法相比较,介绍了如何在ASP代码中调用VB组件的方法.在本篇文章中,我们假设读者具有VB和ASP的相关入门知识. 服务器端组件和客户端组件的比较 服务器端组件和客户端组件有许多不同之处.服务器端组件是在计算机服务器上注册的DLL文件,客户端组件则在浏览器运行的计算机上注册,在IE中,这些客户端组件被称作ActiveX浏览器插件组件. ActiveX客户端组件可以使用VB编写,并通过互联网或内联网发送给浏览器,生成很精彩的效果

【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能

原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能     前言:在上一篇文章中讲述了一些垃圾回收的一些知识,本篇就讲述如何来监测CLR是否导致了一些性能问题.    本篇的议题如下: 内存问题概述(前篇) 托管资源优化(前篇)          对象的生命周期(前篇)          对象的"代"(前篇)          大

老站长分享一些构建稳定外链的有效方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 外链这个词语跟随着网站发展的全过程,从网站的建立开始一直到网站的关闭都与外链息息相关,稳定的网站外链有助于网站和谐的发展,我们可以观察一些权重与PR值比较高的网站,从他们的网站中我们可以得出一些结论:外链在更新的时候几乎保持了不变状态.可以说稳定的外链是网站发展的基础,今天的文章主题也是围绕如何构建稳定的外链展开详细的叙述的,有希望自己的网站

easyui-使用jQury EasyUI 的combotree这个组件,怎样优化加载大量数据

问题描述 使用jQury EasyUI 的combotree这个组件,怎样优化加载大量数据 使用combotree的loadData方法,当加载的数据量过大时,加载速度就会变得很慢,请问有什么办法可以优化? 解决方案 改ajax动态加载的,而不是一次性返回所有数据,现在加第一层,点击后再加载这层的数据 解决方案二: 可以分页,或者使用懒惰加载,也就是每次只加载下一层

保护企业内网数据安全,只需七个步骤

在互联网信息时代,科技飞速发展,随着时间的推移,大多数的企业办公都已经全部实现了网络化,任何企业都建立自己的内部网络和数据存储中心,如何进行企业内网数据安全建设是当今非常重要的话题,对企业内网数据安全建设,可从以下七个步骤着手,作为企业内网数据安全建设的参考. 1. 什么数据需防护 一个数据的丢失可能造成重大的损失.对企业来说,首先检查你的数据放在哪儿,被哪些部门在使用,作为管理者必须做到心里有数,一目了然. 2. 设置密码有讲究 系统入口.个人终端入口的密码设置字母.数字等8个以上的字符组成密

“美妆瘾君子”——有效落实产品开发的七个步骤

摘自:快鲤鱼(http://kuailiyu.cyzone.cn/) ToniKo走上创业之路的原因并不出奇:市面上没有她想要的那种产品,于是她决定自己把它制作出来.她的产品是:品质可靠价格实惠的眼线笔. "美妆瘾君子"--Ko这样称呼自己.她说,1999年时药妆店还没有发展起来,人们只有去百货商场才能买到高档化妆品.时年26岁的Ko成立了自己的品牌--NYX美妆,她希望能让人们用上性价比更高的美妆产品. Ko的母亲为她提供了25万美元贷款,这笔资金使Ko这个没有任何美妆从业经验的人得

大数据交付的七个步骤

首先,他们需要知道什么是大数据.如下是我如何定义大数据这一概念: "新兴技术和实践方案,使收集.处理.发现和储存大量结构化和http://www.aliyun.com/zixun/aggregation/13739.html">非结构化数据变得快速而富有成本效益." 大数据涵盖了众多社会生活的范畴--从金融交易到人类基因组,从汽车的遥测传感器到互联网上社会媒体日志.利用传统的数据库方式来处理和存储这些大数据是相当昂贵的.为了解决这个问题的新技术,利用开放源解决方案和商业