### ASP+与 JSP 之间的抉择

由于我同时是 ASP 和 JSP 的程序员，所以正开始写一系列的文章来比较两者的差别，当我写到一半时，ASP+被宣布了，所以我不得不重新开始审视这个问题。我正在同时做一个 JSP 项目和一个 ASP 项目，后者十分有趣，因为它开始是采用 ASP3.0，但当项目结束后我将会转换为 ASP+。到那时我将可以对 ASP+有更近的考察，并提供更好的 ASP+和 JSP 的比较。本文是我目前对 ASP+的一些认识和看法，并分析了它对于象我这样的普通开发人员可能会产生的影响。
通过最初步的比较，我发现：
1) 面向对象性:
ASP+将 C#作为一种面向对象语言，在很多方面来看，C#将成为微软的与 Java 相似的语言。
C#另一个有趣的地方是所有对象都自动变成为 COM 对象。如果 C#能取得很大的市场份额，那么它将给 ASP+带来类似于 Java 的功能，并且具备更快的性能，因为它可以和 Windows 环境紧密集成。
C#是 ASP+开发中一个最重要的功能，微软会将 C#发展成为 Java 的强劲对手。这也是微软.Net 框架的一个重要组成部分。我认为 C#是微软在编程市场上击败对手的主要工具。我期待着微软能在这个产品后面倾注全力，这样，C#可以成为许多程序员的又一种选择。C#的诞生无疑将进一步加剧微软和 Sun 产品的战线，但这对用户是有利的，他们可以选择两者之一来开发新的应用。
2) 数据库连接：
ASP 另一个亮点是它使用 ADO 对象、ODBC、OLE-DB 和事务处理管理器。因此 ASP Web 数据库应用开发特别简单。ASP+发展了更多的功能，因为有了 ADO+！ADO+带来了更强大更快速的功能。JSP 和 JDBC 目前在易用性和性能上同 ASP/ADO 相比已有些落后，当新版本 ASP+/ADO+出现后这样的差别会更明显。所以我个人希望 SUN 应尽快能花大力气来追赶 ASP+/ADO+的组合。
3)大型站点应用：
ASP+将对大型站点(web farms)有更好的支持。事实上，微软已经在这方面付出了巨大的努力。 ASP+可以让你考虑到多服务器(multiple servers)的场合，当你需要更强大的功能时，仅仅只需要增加一台服务器。整个.Net 框架已经充分地提供了这个方法。ASP+提供了外部会话状态(external session state)来提供内置式 web farm 的支持。另外，由于请求的各组件相互间经过了充分的优化，所以速度很快。
于是 ASP+现在可以在大型项目方面与 JSP 一样具有等同的能力。而 ASP+还有价格方面的优势，因为所有的组件将是服务器操作系统的一部分。对于 JSP,你需要购买昂贵的应用服务器群来达到同样的目的。
4) ASP+还提供更多的其它方面的新特性，例如：
*内置的对象缓存和页面结果缓存。
*内置的 XML 支持，可用于 XML 数据集的简单处理。
*服务器控制提供了更充分的交互式控制。
由此可见，ASP+确实对 ASP 进行了较大的发展。
在我审视完 ASP+后，我的初步结论是：我未来项目主要还是要采用基于 Java/JSP 的技术。这有以下三个理由：
1) 要真正发挥 ASP+潜力，你要使用 C#或 vb.net。这两种语言将成为 ASP+标准的核心的脚本语言。这对 ASP 的未来发展很有好处。而我向来不喜欢用当前的 Visual Basic 来制作 com 对象。新的 ASP+核心脚本语言更能发挥 ASP+的价值。
显然，所有这些 ASP+的新进展促使我对今后语言选择做一个决定，它将占据我未来的无数时间和努力。
回想起来，当 Java 开始发展起来时我正好学习了 Java，那时我预感到这将是围绕我未来程序生涯的语言。于是，JSP 理所当然地成为了我在 web 开发中的第一选择。
现在我已经是一个 JSP fan，除非微软能够将我整个扭转过去，我感觉到自己正面临 ASP+的巨大挑战。
2) ASP+依然完全锁定在微软的操作系统中。JSP 比 ASP+拥有更大的范围，它在别的服务器配置中也有很好的伸缩性。虽然 Windows 2000 的优越性日益显露，但这对开发人员不构成问题。
3) 我并不能确信是否我能认同 ASP+结构的各种方面，这需要更深入的分析，所以，我很犹豫。也许直到我使用了 1-2 个月后才会改变看法。总的来说，这需要在一个很高的层次来看待这个 beta 产品。
而作为一个 ASP 开发人员，ASP+也让我要停下来反思一下。未来 8 个月的 ASP 新项目将变得很困难。为什么？因为 ASP+和 C# 带来了一个难题，它们要到 2001 年才正式提供。而很多性能方面的要求现在就需要确定。由于 ASP+只是一个 beta 软件，所以现在我的第一个选择反而很简单了。现在的项目就采用 ASP3.0。我认为各种 beta 版的语言都不太可信。
但我不能忽视 ASP+,因为它很快就要推出，并代表了 ASP 的未来。ASP 项目的管理者还需要考虑到未来的可平滑移植性及付出的时间代价等。另一个结果则是，这使得在近期使用 PHP 和 JSP 来代替 ASP 变得更可靠一些。
总的来说，
1) 如果使用 ASP+，你将花费额外的时间学一些新的工具。
2) 新的工具有待于版本化，所以为什么不先关注于目前存在的东西？
3) ASP+将来会拥有的特性 JSP 已经拥有。
4) ASP+将你锁定到纯 Microsoft 的体系中。
最后，我预测会有很多人加入到 PHP 和 JSP 的行列。可是，仍然会有一部分人会受到 ASP+给业界带来的激动所感染。我从没看到一个 beta 编程产品会带来如此的震撼！
同时，我还注意到一篇讨论.net 的文章中也提到了同样的问题：
ASP+以自由软件作为开始，现在已经渐渐成为 Microsoft 的.Net 框架的基石之一。Sun 应该从中得到教训。特别注意的是，你需要许可证才能升级到 ASP+，因为它和太多的产品集成在一起了。.Net 框架太大了。在假定某个产品可以成为真正的产品之前，我通常等待它的第一个 service pack。所以，即使 ASP+已经在 2001 第一季度被版本化，我仍然要等到 2001 第二季度。
当然，因为 ASP+ 已经产生了如此的激动人心，一旦推出，很多商店都会马上提供 ASP+。
事实上我早已经使用 beta 版 ASP+! 我发现它使用 .aspx 后缀，这使我我感觉 Microsoft 会在近期推出第一个 ASP+的 service pack。
下一年里，我们将看到在这个巨大的市场上 Sun 和 Microsoft 如何展开决战，而程序员们又将做出什么样的选择呢？