日期:2011-09-25  浏览次数:21416 次


    我们应该从正反两方面考虑在工作中使用ASP脚本组件的必要性。与编译的组件比较,ASP脚本组件有一个明显的特点:WSC脚本文件可在任何时候进行编辑,在下一次执行时,组件中的变化可自动反映出来。不需要重新编译,不需重新启动服务器释放现有组件的引用,也不需要重新注册。并且,如果组件工作状态良好,可选用合适的语言,用已证明可靠的代码和/或算法创建一个编译版本,这同样适用于任何可转换组件。
    ASP脚本组件可适应COM +。事实上,与其他ASP内置对象一样,这种组件可访问ObjectContext对象。因此,如果需要,可在任何时候使用SetAbort和SetComplete。
    脚本组件可用标准的COM接口对现有的业务对象(组件)进行包装,即使它们是用Perl编写的也可以进行包装。在包装过程中,不必知道如何用Perl编写,也不必了解相关知识。COM的语言中性特征使得互操作性更为容易。
    代码的组件化不仅改善了Web网站的性能,而且还可通过重新使用通用代码块帮助设计和维护网站。
    启用WSC的页面优于利用服务器端包含(Server-Side Include,SSI)文件的页面。虽然它们做的事情相同,但ASP脚本组件可根据运行期条件或输入参数动态地创建所需要的对象。SSI不允许动态选择,仅允许导入名称在页面的源代码中硬编码的文件。
    当然,ASP脚本组件也存在一些不足:
    ? 解释组件不具备编译组件的性能,因此ASP脚本组件的性能不一定是最优的。但性能不是使用它们的理由。
    ? ASP脚本组件不能访问完整的Win32 API,完成一个系统级的任务需要特定的COM自动化对象。而且,脚本语言与C++相比,甚至与VBA相比还不是一种非常成熟的语言。
16.6.1 选择正确的工具
    下面介绍创建ASP组件时选择正确工具的快捷方法。
    要开发关键的和真正需要服务器性能最高的实时组件,应使用Visual C++。
    因为服务器端组件大多执行一些数据访问类的任务,所以考虑使用C++和原始的OLE DB调用以获得最大的性能。Visual C++、ALT模板和OLE DB接口的组合或许对性能的提高是最有效的。本书的下一章将对用C++开发组件做更多的描述。
    Visual Basic也是开发组件的强大工具。如果开发的组件不是关键性的,可以用Visual Basic。除了同样具有编译代码、完全Win 32访问和组件化外,Visual Basic比Visual C++容易。
    WSC 可使页面的原始代码组件化,通过COM创建脚本对象将增加一些额外工作量,但灵活性和可重用性较好,并且可减少维护工作量。
16.6.2 脚本组件与VBScript类的比较
    如果打算在ASP组件中使用VBScript 5.0,可以考虑使用VBScript类来替代脚本组件。
    创建VBScript类比创建Windows脚本组件用的时间少一些,因为与CreateObject不同,New不需要通过COM引擎和注册表对装载的文件定位。两者编程能力几乎相同,但使用WSC可利用不同脚本语言的优点。
16.7 小结
    本章分析了Windows脚本组件(WSC)技术,ASP脚本组件是它的特例。用脚本语言编写COM对象并不是难以实现的,事实上,这具有许多优点。但是本章内容并不是对每种情况都适合,所以不能解决实际碰到的所有问题。
    本章内容重新归纳如下:
    ? WSC的结构和接口处理器的作用。
    ? 页面脚本代码中ASP内置对象的映射。
    ? 客户和ASP脚本组件的交互。
    ? 用于ASP页面的一个完整的WSC例子。
    ? ASP脚本对象的优缺点。
    下一章将介绍如何使用Visual C++编写功能强大的组件。