这对您来说意味着什么?请学习 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 ISAPI Extensions”(英文)
原则 3:封装商务逻辑
ASP 技术通过生成 HTML 输出提供了表示服务。简而言之,它会生成用户界面。您需要将商务逻辑从 ASP 表示脚本中分隔开来。即使您不使用 COM 组件将商务逻辑从 ASP 代码中分隔开来,至少也要将商务逻辑分隔到函数和 include 文件中,以提高可维护性、可读性和可重用性。在需要排除故障和隔离问题时,您还能体会模块化设计方法的好处。
调用脚本内部调用函数和方法,可避免代码乱作一团,并能在 ASP 应用程序中添加结构。下面举例说明从 ASP 代码中,将逻辑分离到方法调用中:
lt;% Main() MyBizMethod() ... Sub Main() GetData() DisplayData() End Sub %>
在使用包含 ASP 功能的技术时,可以应用这一原则。下面举一个使用 Visual Basic WebClass 时的例子,说明如何使用这一原则:
- 因为 WebClass 本身引用 ASP 代码生成 HTML,所以您不要将商务逻辑直接置于 WebClass 内。因为这是您的表示层,不在 MTS/COM+ 下直接运行 WebClass。
- 从 WebClass,可以调用能运行在 MTS/COM+ 中的单独商务组件。
- 您可以决定创建自己的、具有对 ASP 引用的 COM 组件,而不是依赖于 WebClass 框架结构和额外的 WebClass 运行时开销 — 您也可以使用 ASP 脚本直接将商务组件自动化。
原则 4:尽晚获取资源,尽早释放资源
常见的问题是,从桌面系统到服务器的过渡。许多具有桌面系统背景的开发人员从来没有为服务器的一些问题和资源共享担心过。在传统的桌面应用程序中,连接到服务器是个耗时的过程。为了改善用户的体验,通常采用尽早获取资源和推迟释放资源的方法。例如,许多应用程序会在它的整个运行时间内始终连接着数据库。
这种方式在传统的桌面应用程序中能够正常工作其原因是用户数量非常明确,容易加以控制,并且后端与前端紧密连接。然而,对于当前的 Web 应用程序,这种方式已经不可行了,其原因是有限的服务器资源将面对越来越多的用户。为了使您的应用程序能够应付用户的增加,您需要尽晚获取资源,尽早释放资源。