Classic ASP相对于ASP.net有哪些优势?

53

我已经使用Classic ASP创建了几百个简单的Web表单,目前已经有约2年的工作经验。我看不出切换到.net的好处; 然而,我对.net并不是很熟悉,所以我肯定会错过一些东西。

在我的工作中,我经常听到一些观点,可以在此处找到:http://www.packtpub.com/article/Classic-ASP(尽管我不认同所有这些想法,但这是一个很好的出发点)

我非常想听听其他人对这个问题的看法。


当我提出这个问题时,我试图向我的主管展示ASP不仅仅是死了。我对那些说“如果它没有坏,就不要修理它”的用户数量感到印象深刻,因此,作为一个规则,我们正在寻找新的技术来处理新的工作,如果需要以任何方式更改某些内容,我们会讨论升级的成本。总的来说,我们正在慢慢转向新技术,主要是将所有网站/简单的CRUD应用程序移动到SharePoint上,因此,大部分我们的关注点实际上并不涉及.net的开销问题。感谢所有高质量的答案和一些有趣的答案。 - Nip
2
对于那些使用经典ASP的人,请考虑使用JScript来放弃VBScript,你可以采用MVC构建风格,也可以使用参数查询等等。换句话说,不要让平台/语言限制你... - D'Arcy Rittich
19个回答

74

你缺失的不止几个东西!ASP.NET比老式ASP更高效、强大和易于维护。服务器端控件、第三方控件、主控页、表单身份验证、表单验证、鼓励适当的应用程序划分的面向对象模型、易于部署、内置调试和跟踪、状态管理。

你甚至可以选择WebForms或MVC。如果你不彻底调查一下你所缺失的内容,那么毫不夸张地说,你是疯了。


2
我不是挑剔,但在 .net 上选择 MVC 已经有很多年了,还有 Monorail。 - Mauricio Scheffer
2
比以前高效、强大、易于维护了好几个数量级,还不止这些! - Ian G
3
你摆脱了VBScript!这是我开始使用ASP时的一个梦想!我们有很多函数只是为了做现代语言和框架本来就具备的功能。 - Marc Climent
2
我期待着有一天能够摆脱我们工作中所有的经典ASP代码。 - ICodeForCoffee
@ICodeForCoffee ... 我也是!!! - autonomatt
MVC 5在.Net 4.5.1上是我曾经使用过的最棒的技术集合。Razor引擎非常出色。使用Razor在MVC 5上构建网站绝对是一种享受。但是,令人惊叹的Visual Studio工具为此增色不少。只需将命名空间添加到视图文件夹的web.config文件中,就可以在Razor编辑器中获得完整的智能感知...再也没有比这更简单的了。 - Ryan Mann

54

如果你喜欢ASP,想转向ASP.NET,那就跳过Webforms,学习MVC。


19
ASP.NET绝对比Classic ASP强大得多。但是,经过5年的Classic ASP和5年的ASP.NET后,我仍然断言这是宇宙中的一个事实:WebForms对于任何稍微复杂的应用程序都很糟糕。ASP.MVC才是正确的选择。 - Juliet
3
ASP.NET WebForms是可怕的,评论和回答中有数百万人这样认为。 - annakata
跳过MVC...直接使用Web API和模板。 - GoldBishop

22
对我来说最大的问题是我创建应用程序,而不是网站... UI只是小部分问题,大部分问题是编写业务逻辑层和各种企业通信组件(使用SOAP连接SAP?没问题!)。
.NET Toolkit允许我使用一个精妙的面向对象语言(C#)进行编程,并拥有强大的框架来帮助。
VbScript是一种可怕的语言,尝试在其中编写业务应用程序。
然而,如果你只做一个简单的Web表单,那么当然可以使用VbScript。
至于你的链接,基本上可以概括为:
  • WaaWaa,我不喜欢Visual Studio
  • WaaWaa,我想像白痴一样在生产服务器上编辑生产代码。
  • WaaWaa,我不知道部署一个已编译的DLL就足以部署ASP.NET应用程序。
基本上,这就是无知的简要概括。

1
不要忘记,“WaaWaa,我不喜欢C#。” - 5StringRyan
使用WSC(Windows脚本组件)使这成为一个无关紧要的问题。使用WSC编写n层经典ASP应用程序是完全可行和令人愉悦的。 - Erik Oosterwaal

20

针对具体问题(“经典ASP与.NET的优劣比较”),我只能想到两件经典ASP能做但.NET不能做的事情:

1)包含文件。它们在ASP.NET中的表现与你期望的不同。当然,ASP.NET提供了更好的方式来实现同样的功能,但仍有些损失,并且可能会使将旧站点迁移到.NET变得困难。

2)ASP.NET无法访问应用程序以上的根文件夹。我们这里拥有一个相当复杂的内部网,主要还是使用经典ASP,只在更新或添加新内容时才使用一些.NET应用程序。如果能够保持一个公共代码副本位于文件夹层次结构的相对较高位置,同时每个独立应用程序又能隔离到各自的虚拟目录下,那将是很好的。但这就是源代码控制所用的,所以并不是什么大问题。

对我而言,从经典ASP和ASP.NET转移最大的优势是IDE。右键单击函数调用,选择“转到定义”,比起必须查找实际实现该函数的文件要方便得多。极大地节省了时间。支持智能提示和调用函数时的类型安全性也是一个福音。


7
投票支持实际回答标题中的问题 ;) - AJ.
1
秒数有误。你可以访问文件夹外的内容 =) - totten

11

对我而言,我必须说Classic ASP开发快速、易于使用/上手,不过度复杂而且非常有能力完成大多数要求。

使用JScript/Javascript作为主要语言的ASP真的非常好玩。VBScript浪费了大量的脑力,我认为这正是导致Classic ASP名声不佳的原因之一。加上它被认为很慢,但所有关于速度和用户数量的文章都基于10年以上的服务器。我们在两台服务器上每天处理6万个用户的网站,CPU几乎没有闪烁。现代服务器给你更多的可玩性。

随着最近几年Javascript使用、设计和最佳实践的巨大进步,ASP JScript编码者可以获得很多好处,使生活更加轻松。我已经将Mootools移植到服务器端,因此我们获得了许多美妙的助手、类模型、优秀的事件模型等等。ASP非常好玩。更新:现在Mootools已经有一个可以下载的服务器端版本(http://mootools.net/download)。

ASP.net非常强大,但要学好需要较长的学习曲线,当它出现问题时会导致整个网站崩溃,对我来说,最糟糕的是似乎需要绕很多弯才能完成最简单的事情。

目前我同时在使用两者,并使用最适合缺口的那个。我有一个很棒的CMS缓存器和Thumbnailer构建在.net中,我的ASP脚本使用它。这既有Classic ASP的便利,又有ASP.net的强大。


4
非常明智的评论。看到有人对新旧事物都持开放态度真是太好了 ;) - AJ.
1
我必须承认,回想起来,ASP 总的来说是一项相当不错的技术。 - JL.
1
+1!我见过的使用ASP.NET编写的网站被过度设计的数量是荒谬的,特别是考虑到它们在执行某些操作时会变得非常缓慢!请坚持KISS原则! - user1945782

11

性能、可扩展性以及提供更好基础的框架,适用于无状态web应用程序。

维基百科ASP.Net页面有一节详细介绍了它与经典ASP的区别。


7
如果你回顾自己以前的代码并说,“我当时在想什么!这是垃圾,现在我写的代码好多了!”那么你已经成为了一名程序员。
如果这些网站相对临时(即你快速地构建它们,它们被用于特定目的和时间段,然后被有效关闭),那么以最适合你的方式创建这些网站是完全可以接受的。
如果你有一个长长的错误、修复和改进列表,现在需要(或想要)将它们回溯到你的旧网站上,或者你的“小网站”变得越来越大、越来越复杂,这给你带来了很大的困扰,那么你需要退后一步,重新评估如何构建和支持这些网站。
我非常同意ASP.NET是一个更加成熟和有效的编程环境。但是,就像任何工具一样,你需要知道(或学习)正确的使用方法,因为它不会自动让你一夜之间成为“超级程序员”。
打破僵局的方法是与老板达成协议,下一个“网站”使用ASP.NET开发。向他解释,这将比你目前交付网站的方式花费更长的时间,因为你必须“理解”ASP.NET,但好处是x、y和(留给读者练习!)。
就我个人而言,我仍处于过渡阶段(我从v1开始使用ASP.NET!)因为我有一个相当强大的Classic ASP框架,我对它很熟悉。但是,我战略性地使用了ASP.NET,并发现它非常强大,你最终会写更少的代码,因为许多功能都内置在.net框架中,只要你能在文档中找到它们。
我还建议你不要使用VB.NET,而是下定决心使用C#。语言上的变化很小,但你减少了以前编写网站的机会。这有助于打破坏习惯并有机会学习新技术。
祝好运!

1
然而,就像任何工具一样,你需要知道(或学习)正确的使用方法,因为它不会自动让你一夜之间成为“超级程序员”。+1 - user1945782

6
很少有回帖直接回答问题。我来试着回答一下:以下是一些未被提及的好处(以 JScript 为中心):
  • 你可以学习整个语言,如果经常使用,就可以记住它 - 我不知道有人声称了解整个 .NET 框架;这使编码非常快速。
  • 弱类型 - 这可以让您在快速敲出某些东西时更快地编写代码,例如,大多数时间您是否真的关心 charstring 之间的区别?(插入宗教争论)
  • Eval:这个备受诟病的关键字实际上非常强大,可以让您以非常有趣的方式在运行时操作您的代码
  • 客户端/服务器语言兼容性:JScript 与 Javascript 的相似之处意味着您可以使用同一个包含文件进行服务器端验证和客户端验证。

第四点是完全错误的。如果您使用自动编译,您也可以在ASP.NET中实现这一点。 - erikkallen

6

对于简单的网站,我更喜欢使用ASP而不是ASP.NET,尤其是如果您很熟悉HTML。然而,在ASP中,将业务逻辑与视图分离很难;您编写的代码可能很难阅读和维护。

PHP比ASP更好 - 在基本水平上有些相似。如果您对自包含的Web开发栈感兴趣,还可以使用Rails或Django(但学习曲线要长得多)。


6

我有一个词“调试” - 你永远不想使用它,但你总是不得不用。在 .Net 中,如果你使用 Visual Studio,与尝试在 ASP 上调试代码相比,你拥有一个非常棒的调试器。


2
Visual Studio 中的调试器也非常适用于 ASP,一定要试试。 - Svante Svenson
1
我必须说,在经典 ASP 中调试网站虽然有时很烦人,但相当简单。因为我现在知道的东西,我可以比一些我见过的 .NET 开发的网站更容易地调试任何经典 ASP 网站,特别是当一些代码消失到非托管代码中时。 - user1945782

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接