经典ASP的推荐参考

时间:2010-07-26 21:54:33

标签: asp-classic refactoring

我必须深入研究一大堆遗留的ASP代码。为了掌握这个平台的最佳实践,你会建议阅读什么资源(面向对象,i18n的配置,......)

4 个答案:

答案 0 :(得分:6)

非常经典的asp中断,这是真的,但仍有许多大型网站与它一起运行并且成功使用它,我仍然在某些特定项目中使用它。

以下是您感兴趣的一些资源:

  1. MSDN Library docs
  2. W3Schools
  3. Webdevbros
  4. CHM Format Language Documentation
  5. Advanced topics at zend.lojcomm.com.br
  6. Ajaxed Library,ASP3 + Prototype + Scriptaculous Wrapper
  7. 我还在asp.web.id跟他一起玩,希望能有所帮助

答案 1 :(得分:5)

首先,要了解“经典ASP”实际上可以指整个技术组合:

  • ASP运行时和内部HTTP对象(请求,响应,服务器,会话,应用程序)
  • 脚本引擎(通常是VBScript,但有些网站使用JScript或Perlscript)
  • 允许您使用COM对象的COM主机

大多数经典ASP站点将使用VBScript作为其脚本语言,并使用ADO(连接,命令和记录集)进行数据库访问。您可能还会遇到用于发送邮件,处理XML等的各种COM对象 - 在您的旧代码库中甚至可能存在一些定制/自定义COM对象(可能用VB6或C ++编写)。

Scott Mitchell的Designing Active Server Pages可能是经典ASP平台上“最佳实践”的最佳整体参考。 4guysfromrolla.com

上还有大量有用的资料

然后,您需要确保获得有关您正在使用的环境的每个元素的最新文档:

如果您长期参与其中,您还需要考虑如何随着时间的推移改进/清理代码。在这方面,将.asp中的各个页面移植到.NET可能是一种有效的策略;如果您将身份验证和安全性隔离到cookie而不是使用内置的Session对象,那么您将能够使用来自经典ASP和ASP.NET的Request.Cookies,然后开始从页面中移出一些业务逻辑他们自己,并进入一组核心模块,甚至像领域模型。

不要惊慌失措。经典ASP并不差。我会在任何一天使用ASP.NET WebForms。 :)

答案 2 :(得分:4)

我是第一个承认VBScript / ASP远非理想平台的人,但它远没有一些评论所暗示的那么糟糕。它不是世界上最现代的语言,它有一些瑕疵,但在VBScript中编写好的,可靠的代码是完全可能的。它不一定是痛苦的;尽管该平台缺少许多使其他语言编程变得容易的工具(列表,继承,导入,合理的赋值语法,正确的构造函数),但大多数工具都可以被替换,模拟或解决。 VBScript为您提供了一些合作:

  • Dynamicism
  • 默认属性
  • with阻止
  • 可预测的垃圾收集
  • 高效的响应缓冲区

我经常听到许多VBScript的功能(特别是默认属性)被贬低为混乱,但如果你熟悉这种语言,它们就可以成为强大的资产。将内置函数和功能视为构建的基础。使用这些工具,您可以修补大多数疣。例如:

问题:friggin'强制设置语法。 例如:

if isObject(foo) then
    set bar = foo
else
    bar = foo
end if

后方疼痛,是吗?

解决方案:VBScript支持pass-by-reference!

function assign (byref var, val)
    if isObject(val) then
        set var = val
    else
        var = val
    end if
end function

示例:

assign bar, foo

显然,这是一种与纪律一起使用的技术,但在使用良好时非常清楚。

如果您愿意让它工作,可以在VBScript中做更多的例子:

myList.map getRef(lcase)

set myDict = DB.get_record "select * from Foo where id=?", Array(42)

import "MyLib"

printf "%s, %!s" Array("Hello", "<World>")
' => Hello, &lt;World&gt;'


with Form.define("User")
    with .field("name")
        .validate_nonempty
        .validate getRef("userNameNotTaken"), "That user name is taken"
    end with

    with .field("email")
        .validate_format emailRegex
    end with

    with .field("password")
        .validate_length 6, null
        .validate getRef("passwordIsComplex"), "Your password must contain…"
    end with
end with

有句老话说你可以用任何语言写COBOL。这或多或少意味着语言的特征在编写好的代码时不如程序员重要。现在,你无法在VBScript中编写ruby或python,但是你可以比你想象的更接近。

编辑:差点忘了。 Eric Lippert是VBScript的设计师之一,他的博客是该语言中一些棘手部分的宝贵资源。

答案 3 :(得分:0)

我经常提到Wrox的VBScript: A Programmer's Reference出版物。基本上,你的ASP页面无论如何都只是VBScript。

如果您的页面在COM +代码上很重,上帝会帮助您。 Stack Overflow当时没有发明,但我建议你在这里花一点时间。