ASP、ASP.NET、JSP、PHP 四种技术比较

目前,最常用的四种动态网页语言有ASP(Active Server Pages),ASP.NET,JSP(Java Server Pages),PHP (Hypertext Preprocessor)

  ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB ScriptJavascript)作为自己的开发语言。
   
    ASP.NET
是微软提供的新一代的Web开发平台,它为开发人员提供了生成企业级Web应用程序所需要的服务、编程模型和软件基础结构,主推VB.NETC#.NET这两种编译型语言。通过这两种开发语言,程序员可以像开发普通的Windows程序一样来开发Web程序。

  PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,JavaPerl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

  JSP Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Java 上的不凡造诣,将Java Java 应用程序 Java Applet 之外,又有新的硕果,就是Jsp--Java Server PageJsp 可以在ServerletJavaBean的支持下,完成功能强大的站点程序。

  四者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。在 ASP ASP.NETPHPJSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP ASP.NETPHPJSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP ASP.NETPHP JSP都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。

技术特点

ASP:

1. 使用 VBScript JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。
2.
无须 compile 编译,容易编写,可在服务器端直接执行。
3.
使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。
4.
与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
5.Active Server Pages
能与任何 ActiveX scripting 语言相容。除了可使用 VBScript JScript 语言来设计外,还通过 plugin 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX Perl Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件。
6.
可使用服务器端的脚本来产生客户端的脚本。
7.ActiveX Server Components(ActiveX
服务器元件 ) 具有无限可扩充性。可以使用 Visual Basic Java Visual C++ COBOL 等编程语言来编写你所需要的ActiveX Server Component

ASP.NET

1.支持编译型语言

目前流行的几种脚本语言比如VBScriptJavaScriptASP等都有两个主要的缺点。第一,不支持强数据类型。在JavaScript中定义变量只有一个关键字var,使用var关键字定义的

变量,如果赋值是字符串,该变量就是字符串变量;如果赋值是整数,则该变量就是整型变量。在VBScriptASP中,定义变量只通过一个关键字DIM,该变量也没有具体的类型。

第二,脚本语言是解释型的。通常情况下,解释型的脚本语言在性能上抵不上编译型的语言。

自推出.NET开发平台以来,微软在Web服务器端开发语言方面,主推VB.NETC#.NET这两种编译型语言。通过这两种开发语言,程序员可以像开发普通的Windows程序一样来开发Web程序,只不过在Windows程序中用于开发GUI界面的各种控件,在Web程序开发中也有它们相应的Web版本。程序员通过C#语言,利用VS.NET提供的各种Web控件,可以非常容易地开发ASP.NET Web程序。开发的ASP.NET程序被编译成MSIL语言,这种中间语言具有平台无关性,而且,由于ASP.NET页面在执行前会被编译,所以ASP.NET的性能得到了很大的提高。

2.程序代码与页面内容的成功分离

通常的动态网页开发,往往是在一个网页上混合多种脚本语言。比如在HTML脚本语言上可以嵌入JavaScriptVBScript等客户端脚本语言,也可以同时嵌入ASPJSP等服务器端脚本语言。这种多语言混合的Web开发模式通行已久,但是它的代码可读性很差,程序代码同页面内容混合在一起,程序员要在多种语言的思维上频繁切换,如果程序很复杂的话,这种开发模式非常不利于程序的开发,而且日后的维护也将成为大问题。ASP.NET Web开发技术为程序员提供了一种非常好的开发模式,即Code Behind技术,它通过Web控件将程序代码与页面内容成功分离,从而使ASP.NET的程序结构异常清晰,开发和维护的效率也得到了很大的提高。另外可以利用Visual Studio.NET集成环境下开发ASP.NET应用程序,该环境不仅提供了强大的调试能力,而且还集成了所见即所得HTML编辑器,为开发人员开发Web页提供了方便的图形化支持。

3.引入服务器端控件

ASP中,可以给页面手动添加HTML控件,对这些控件的响应有两种办法。一种是在客户端的脚本语言中响应用户对这些控件的输入,另一种是把该页面提交给服务器。这两种办法都存在问题,第一种办法产生的问题是不同的浏览器以不同的方式执行客户端脚本语言,我们很难编写在多种浏览器上都能良好运行的复杂的Web页面。第二种办法存在的问题是,如果我们把Web页面重新提交给服务器,那么Internet的无状态特性就会导致页面上存储在变量中的信息丢失,除非我们编写了复杂的代码,把它们存储在HTML元素或URL查询字符串中。ASP.NET通过服务器控件解决了上述问题。服务器端控件会生成发送给浏览器的HTML代码,显示控件,它们还能生成隐藏的HTML元素来存储它们当前的状态。在提交页面时,这些信息就会传送回服务器,控件将自动处理这些信息,改变HTML,显示控件。

PHP:

1.数据库连接
  PHP可以编译成具有与许多数据库相连接的函数。PHPMySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地更改编码以适应这样的变。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle,  MySQL Sybase的接口,彼此都不一样。这也是PHP的一个弱点。
2
.面向对象编程
  PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。

JSP:

1.将内容的生成和显示进行分离
  使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
  在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTMLWeb浏览器的完全可用性。
2
.强调可重用的组件
  绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
3
.采用标识简化页面开发
  Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
  通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
  JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。
  由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java ServletJSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
  作为Java平台的一部分,JSP拥有Java编程语言一次编写,各处运行的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。

应用范围

ASPASP.NETMicrosoft开发的动态网页语言,也继承了微软产品的一贯传统——只能运行于微软的服务器产品,IIS (Internet Information Server) (windows NT)PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASPCOM的组合来扩充,Unix下的COM实现起来非常困难。

PHP5可在Windows,Unix,LinuxWeb服务器上正常运行,还支持IIS,Apache等通用Web服务器,用户更换平台时,无需变换PHP5代码,可即拿即用.JSPPHP5类似,几乎可以运行于所有平台。如Win NT,Linux,Unix. NTIIS通过一个插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NTUnixLinux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSPJavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。

性能比较

  有人做过试验,对ASP,PHP,JSP三种语言分别做循环性能测试及存取Oracle数据库测试。

  在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了2000020000的循环。而ASPPHP测试的是20002000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB)。

  数据库测试中,三者分别对 Oracle 8 进行 1000 Insert,Update,Select,Delete Jsp 需要 13 秒,Php 需要 69 秒,ASP 需要 73 秒。

前景分析

目前在国内PHPASP应用最为广泛。而ASP.NET JSP由于是一种较新的技术,国内采用的较少。ASP.NET也在慢慢增多。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP
  四者中,JSPPHPASP.NET都有着非常好的应用前景,PHP由于其运行环境代码上的开源,众多的开发爱好者的支持,有着强劲的发展动力。ASP.NET因为Microsoft的支持也有很好的发展,只不过运行环境等都不开源。JSP因为它的安全性,运行效率也有着很大的成长空间。

总之 ASPASP.NETPHPJSP四者都有相当数量的支持者,由此也可以看出四者各有所长。正在学习或使用动态页面的朋友可根据四者的特点选择一种适合自己的语言。