日期:2012-10-21  浏览次数:20766 次

ASP 指南


简介
“Active Server Page (ASP)”应用程序的成功常常取决于对体系结构和设计这两方面的取舍。考虑到 ASP 技术的范围之广和当前应用程序固有的复杂性,这种取舍是非常困难的。本文中,我将为您提供一些特定的指导方针,以助您成功开发基于 ASP 的应用程序。


--------------------------------------------------------------------------------
从过去成功的开发模式经验中,我们总结出以下原则。
--------------------------------------------------------------------------------

我已将指导方针整理成一组开发原则。在评估解决方案和技术时,可以应用以下原则帮助您做出决策。以下原则是我长期以来从成功的开发模式所得的经验积累。

原则 1:采用标准方法
建立命名约定并使目录结构标准化,可以帮助您大大提高 ASP 应用程序的可读性和可维护性。虽然目前尚无 ASP 应用程序的正式标准,许多开发人员还是建立了一些通用方式。在此,我将与您共享一些更为通用的方式。

因为 ASP 技术依靠脚本引擎进行工作,而且脚本具有类型不严密的天性,命名约定也很模糊。在类型非常严密的语言中,变量将按照它的实际类型进行声明。在使用 ASP 技术时,通常按照处理变量的方式(而不是其实际数据类型)在 ASP 代码中声明变量。例如,在使用“Visual Basic(R) Scripting Edition (VBScript)”时,尽管所有的 VBScript 变量都是 Variant,你还是会将成功标志声明为 bSuccess(b 代表布尔型),而不是 vSuccess(v 代表 Variant)。

下表是一些通行的命名约定。

变量前缀:

前缀       使用的变量     变量示例
b or bln   Boolean        bSuccess
c or cur   Currency       cAmount
d or dbl   Double         dblQuantity
dt or dat  Date and Time  dtDate
f or flt   Float          fRatio
l or lng   Long           lMilliseconds
i or int   Integer        iCounter
s or str   String         sName
a or arr   Array          aUsers()
o or obj   COM Object     oPipeline


数据库对象的变量前缀:

前缀  使用的变量  变量示例
cnn   Connection  cnnPubs
rst   Recordset   rstAuthors
cmd   Command     cmdEmployee
fld   Field       fldLastName


范围及前缀的用法:

前缀           说明
g_           创建于 Global.asa。
m_           对于 ASP 页或在 Include 文件中是局部的。
(没有前缀) 非静态变量,对于过程来说前缀是局部的


Knowledge Base (KB) 中的一篇文章“Q110264 INFO: Microsoft Consulting Services Naming Conventions for Visual Basic”(英文)对命名约定提供了真知灼见。

尽可能采用目录结构为您的各个应用程序部件提供始终如一的位置。您应用程序的实际目录结构当然由您自己决定,但通常是将图像、文档、include 文件和组件分别放置在单独的目录中。以下是简单 ASP 应用程序目录结构示例。

目录结构示例:

\SimpleAspApp
\Docs
\Images
\Includes
一个好的目录结构允许您有选择地应用 NTFS 权限。您还可以从 ASP 应用程序内部使用相对路径。例如,可以使用以下代码,从位于 SimpleAspApp 目录的 default.asp 页,引用 Includes 目录中的 include 文件 top.asp:

./includes/top.asp
注意我的 include 文件的扩展名是 .asp,而不是 .inc。这样做是出于安全方面的考虑,而且使用 .asp 扩展名(而不是 .inc),还能够在 Visual InterDev(R) 中使用彩色编码。

有关结构化 ASP 应用程序的其他一些提示和技巧,请参阅文章“ASP Conventions”(英文)。

原则 2:设计为在服务下运行
ASP 将在服务下运行。设计 ASP 应用程序时,您马上会面临在桌面应用程序中不会遇到的安全环境和线程问题。在桌面环境中,通常只处理作为交互式用户运行的单线程执行,而且有权访问当前的桌面系统。在“Internet 信息服务 (IIS)”中,模拟不同用户环境的多个客户机线程调用您的应用程序,而且您的应用程序被限于“系统”桌面。

这对您来说意味着什么?请学习 IIS 的安全模式。还要提醒您:仅因为某些东西能在 Visual Basic IDE 下能够正常运行,并不意味着它就能在 ASP 技术中安全运行。Visual Basic IDE 并没有准确地模拟运行时环境。常见的设计错误包括:在 ASP 技术中使用需要用户界面的 .OCX 控件,使用对线程来说不安全的组件,和使用要求特殊的用户上下文的组件。要避免的一个最简单的问题,就是从应用程序中试图访问 HKEY_CURRENT_USER (HKCU) 注册表项(例如,不要调用 Visual Basic 的 GetSetting 和 SaveSetting 函数,它们都依赖于 HKCU)。同样,不要出现需要用户进行人机交互的消息框或其他对话框。

以下文章是有关 ASP 技术中的安全和验证问题的相当不错的入门读物:

“Authentication and Security for Internet Developers”(英文)
“Q172925 INFO: Security Issues with Objects in ASP and