你刚刚把最新的庞大的ASP应用程序释放到网上。文件正确地上载到服务器上,与应用程序的链接也
工作良好。在庆祝胜利之前,你想在应用程序的性能上运行一些stats 以便发现它到底有多好。结果
却发现,本来在开发环境下工作得很好的应用程序实际上运行速度很慢。
对于那些使用Microsoft 软件包时间不长的人,DNA代表分布式InterNet 结构,是另一种非常热门的
n层应用程序结构的首字母缩写形式。Microsoft 致力于在Internet上展开的分布式应用程序的开发。
基于这种思路,未来将流行小型的、无状态的、组件化的应用程序就不足为奇了。
上面是ASP用于n层环境的典型图示。web类(IIS应用程序)不是必需的,因为ASP可以直接与表述层
或商业规则层组件对话。因为大多数应用程序都是用ASP单独写成的,所以一个情理中的问题就是:
为什么要将代码转入COM组件?
以我之见,ASP只是用于表述层代码的,所以我选择将商业规则逻辑或任何形式的数据存取
都装入COM组件中。一般情况下,我从一开始就将应用程序的代码分成各个组件,但是通常你并不能选
择所要处理的结构,所以代码移植就是个实际问题。在一个n层应用程序中,你必须尽力把非表述代码
从ASP中尽快移走。
也许目前你并没有在进行n层编程,那么移植代码的适当时机就是运行性能开始削弱时。通常,这是指
你的老板说“程序今天运行有点慢”到“你被解雇了”之间这段时间。一旦用户开始抱怨就晚了。
第二个使用移植代码的方针是当你有足够的相似代码(例如所有的数据存取)可以放在一个包含文件
(.inc) 中以保证一个COM组件时。多少个程序就足够?这个问题提得好!编写小型的MTS 组件时,我
发现有一个程序就足够创建一个COM组件了。但是只有一个程序的COM组件是很罕见的,所以对于这个
问题就需要进行判断。如果你写的代码足够长,就开始进行模式开发了。当你遭遇到ASP的“阴暗面”
之后(aka COM组件)你就会感觉到其力量。
当你编写可以节省时间的ASP代码时,如果要移植代码的话,有许多事情需要做。跟随以下步骤,你会
发现移植代码没有什么麻烦的。
声明变量类型
Visual Basic 和VBScript 的最大缺点是它允许开发人员未经声明就使用变量。如果你觉得这是个好处,
那么当你要整个晚上来寻找由一个小小的打字错误而造成的逻辑错误时,就不再这样想了。如果你使用
了"Option Explicit"(明确选项)而强制明确声明了的话,IDE 就会对此进行警告。
< %@ Language=VBScript % >
< % Option Explicit % >
当你使用Option Explicit时,要记住它刚好在@ declarations下面。不注意这一点会导致一个小小的
错误信息。
Microsoft VBScript compilation error '800a0400'
Expected statement
/test.asp, line 4
Option Explicit
^
现在挑战来了。VBScript 允许将变量是任何数据类型,只要它是variant。这就是说你只能把变量
声明为variants。在许多方面这是十分浪费的,但是在ASP可以接受。但是在Visual Basic中,当
可能创建更有效的代码时,变量就要被定义类型。这个程序很简单,只需在声明之后加上"as
[data_type]" ,这时它就不再是一个简单的variant了。
比如说,现在有一个变量是一个字符串。打开一个ASP页然后键入"Dim strSession as String"。然后
预览这个页面,就会得到一个小小的惊喜。
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/icu/temp.asp, line 3
Dim strSession as String
---------------^
所以,如何作到不对ASP代码造成威胁而准备Visual Basic 的变量?我不能确定对此如何评价。有
一种方式是在变量声明之后使用注释标记。要注意这不仅在将代码移植到VB时有帮助,当有别
的公司提供高薪挖你走的时候,这还有助于别人理解你的代码。以下是在ASP版本2中用注释标记
声明变量的三种途径:
Private strString 'as String
Dim intInteger 'as Integer
Public bolBoolean 'as Boolean
这种数据类型的定义技巧还适用于你在ASP应用程序中使用的任何函数。(请看下面部分子程序和函数)。
Private Function(strString, intInteger) 'as Boolean
当我敲入我的ASP代码时,也在其中贯穿了这些注释。这也许不适合你,也许你在处理一些旧代码,
在移植代码之后,你可以使用Visual Basic 的搜索和替换功能来增加数据类型。这样更有意义,因为
在函数和子程序中不能注释变量。代码越是程序话,变量数据类型注释就越少。
工作良好。在庆祝胜利之前,你想在应用程序的性能上运行一些stats 以便发现它到底有多好。结果
却发现,本来在开发环境下工作得很好的应用程序实际上运行速度很慢。
对于那些使用Microsoft 软件包时间不长的人,DNA代表分布式InterNet 结构,是另一种非常热门的
n层应用程序结构的首字母缩写形式。Microsoft 致力于在Internet上展开的分布式应用程序的开发。
基于这种思路,未来将流行小型的、无状态的、组件化的应用程序就不足为奇了。
上面是ASP用于n层环境的典型图示。web类(IIS应用程序)不是必需的,因为ASP可以直接与表述层
或商业规则层组件对话。因为大多数应用程序都是用ASP单独写成的,所以一个情理中的问题就是:
为什么要将代码转入COM组件?
以我之见,ASP只是用于表述层代码的,所以我选择将商业规则逻辑或任何形式的数据存取
都装入COM组件中。一般情况下,我从一开始就将应用程序的代码分成各个组件,但是通常你并不能选
择所要处理的结构,所以代码移植就是个实际问题。在一个n层应用程序中,你必须尽力把非表述代码
从ASP中尽快移走。
也许目前你并没有在进行n层编程,那么移植代码的适当时机就是运行性能开始削弱时。通常,这是指
你的老板说“程序今天运行有点慢”到“你被解雇了”之间这段时间。一旦用户开始抱怨就晚了。
第二个使用移植代码的方针是当你有足够的相似代码(例如所有的数据存取)可以放在一个包含文件
(.inc) 中以保证一个COM组件时。多少个程序就足够?这个问题提得好!编写小型的MTS 组件时,我
发现有一个程序就足够创建一个COM组件了。但是只有一个程序的COM组件是很罕见的,所以对于这个
问题就需要进行判断。如果你写的代码足够长,就开始进行模式开发了。当你遭遇到ASP的“阴暗面”
之后(aka COM组件)你就会感觉到其力量。
发现移植代码没有什么麻烦的。
声明变量类型
Visual Basic 和VBScript 的最大缺点是它允许开发人员未经声明就使用变量。如果你觉得这是个好处,
那么当你要整个晚上来寻找由一个小小的打字错误而造成的逻辑错误时,就不再这样想了。如果你使用
了"Option Explicit"(明确选项)而强制明确声明了的话,IDE 就会对此进行警告。
< %@ Language=VBScript % >
< % Option Explicit % >
当你使用Option Explicit时,要记住它刚好在@ declarations下面。不注意这一点会导致一个小小的
错误信息。
Microsoft VBScript compilation error '800a0400'
Expected statement
/test.asp, line 4
Option Explicit
^
现在挑战来了。VBScript 允许将变量是任何数据类型,只要它是variant。这就是说你只能把变量
声明为variants。在许多方面这是十分浪费的,但是在ASP可以接受。但是在Visual Basic中,当
可能创建更有效的代码时,变量就要被定义类型。这个程序很简单,只需在声明之后加上"as
[data_type]" ,这时它就不再是一个简单的variant了。
比如说,现在有一个变量是一个字符串。打开一个ASP页然后键入"Dim strSession as String"。然后
预览这个页面,就会得到一个小小的惊喜。
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/icu/temp.asp, line 3
Dim strSession as String
---------------^
所以,如何作到不对ASP代码造成威胁而准备Visual Basic 的变量?我不能确定对此如何评价。有
一种方式是在变量声明之后使用注释标记。要注意这不仅在将代码移植到VB时有帮助,当有别
的公司提供高薪挖你走的时候,这还有助于别人理解你的代码。以下是在ASP版本2中用注释标记
声明变量的三种途径:
Private strString 'as String
Dim intInteger 'as Integer
Public bolBoolean 'as Boolean
这种数据类型的定义技巧还适用于你在ASP应用程序中使用的任何函数。(请看下面部分子程序和函数)。
Private Function(strString, intInteger) 'as Boolean
当我敲入我的ASP代码时,也在其中贯穿了这些注释。这也许不适合你,也许你在处理一些旧代码,
在移植代码之后,你可以使用Visual Basic 的搜索和替换功能来增加数据类型。这样更有意义,因为
在函数和子程序中不能注释变量。代码越是程序话,变量数据类型注释就越少。