PHP ASP.NET的较量

2012 年 9 月 28 日6090

PHP和ASP.NET都可以构建复杂Web应用程序(例如电子商务站点、Intranet和企业门户),但两者之间却存在若干重要差别。与PHP不同,ASP.NET并不是一种语言或分析器,而是Microsoft .NET Framework中一组用于构建Web应用程序和XML Web Service技术。同PHP一样,Microsoft ASP.NET页面在服务器上执行并生成标记(例如HTML、WML或XML),标记将发送给桌面应用程序或移动应用程序。但不同的是,ASP.NET为开发Web页面提供了强大的、面向对象的以及由事件驱动的编程模型,同时仍保留了PHP开发人员所习惯的那种简单性。

PHP与ASP.NET比,ASP.NET应用程序是基于强大的面向对象编程(OOP)模式,而不是基于脚本模式。这样便可以获得更为严谨的OOP功能,例如继承、封装和反射。虽然大多数基本的简单操作可以轻松地从PHP转换到ASP.NET,但要转换更为复杂的应用程序却并不这么简单,这需要仔细的规划和考虑,并采用更符合OOP的方法。

本文假设读者具有PHP方面的经验,并且对编程和软件开发有着基本了解。本文首先从代码方面对两者的基础体系结构的差别进行简单比较,并简要介绍一下OOP开发模型,然后比较两者的功能,最后将使用PHP和ASP.NET开发Web应用程序时的语法和常见任务作以对比。

注意:如果您希望跳过有关迁移的详细信息,而只想尝试ASP.NET的使用,则可以直接跳到建议的后续操作部分。

PHP ASP.NET体系结构对比

阅读完本文后,通过比较语法和语言,您将了解PHP和ASP.NET是很相似的,它们具有类似的功能和语法。但是,从更基本的体系结构层面来讲,PHP与ASP.NET却有着很大差别。PHP基于独立于平台的处理器/引擎,该处理器/引擎用于分析PHP脚本、提供数据库连接、符合Internet协议以及提供大多数Web应用程序平台所常见的众多其他任务。

ASP.NET是基于一系列技术(如CLR)构建的框架,提供了大量以很好的方式组织的类库,这些类库可满足要在Web应用程序中使用的大多数功能的需要。您还可以轻松地创建各种组件,对该框架进行扩展。

虽然PHP也提供了类似的功能(例如PEAR库),但PHP和ASP.NET并非完全相同,因为ASP.NET框架是完全基于OOP模式和OOP概念构建的,而PHP则不然。这种差别在PHP和ASP.NET中类和对象的访问方式方面表现得犹为明显。

PHP ASP.NET中的面向对象编程

虽然PHP和ASP.NET都为应用程序开发提供了OOP模式,但它们对各种OOP概念(例如封装和多态)的支持却存在差别。例如,PHP仅支持部分封装(例如,支持在类中声明方法和字段)和部分多态(没有重载和抽象)。此外,由于PHP的类中不存在私有(private)、公有(public)或受保护(protected )函数等概念以及重载,因此PHP也不支持这些概念及其访问。OOP纯粹主义者可能会说,ASP.NET以及各种语言也没有完全支持OOP模式中的所有概念,对于使用OOP的大多数语言(如C++和Java)来说,情况确实如此。

这既有积极的一面,也有消极的一面。消极的一面是:对于某些Web开发人员来说,学习ASP.NET要比学习PHP困难些,因为PHP提供的是开发人员创建Web站点时所惯用的脚本模式。但是,使用过OOP语言和/或V的开发人员会发现ASP.NET比较亲切且易于学习。

ASP.NET支持OOP概念的积极的一面是,ASP.NET应用程序的大多数部分都会得到很好的设计,并且能够对内容、逻辑和数据进行清楚的分隔,因而从应用程序生命周期的长远角度看,这通常更容易为其提供支持。此外,由于ASP.NET本身支持企业技术,例如消息队列、事务(请参阅.NET Framework的System.EnterpriseServices类)SNMP和Web服务,因而可以很容易地开发具有高度可缩放性的强大的应用程序。

要大致了解面向对象编程(从Visual Basic的角度)的主要概念,请参阅Object-Oriented Programming in Visual Basic。

PHP ASP.NET编译

PHP

请求PHP页面时,HTML和内联PHP脚本将编译为Zend Opcode(Zend操作代码)。Opcode是低级的二进制指令,是提供PHP页面时实际使用的代码。编译后,Zend引擎将运行Opcode(与Java的运行时引擎运行字节码类似),然后生成HTML并提供给客户端。

有许多商业产品可用来通过优化这些Opcode来加快PHP页面的执行速度。其他提高PHP脚本性能的方法还包括对Opcode和生成的HTML进行缓存。

ASP.NET

当向IIS(Internet信息服务)或其他Web服务器请求.aspx页面(或ASP.NET支持的任何其他扩展名)时,该请求将被传递到ASP.NET进行处理。如果是第一次请求该页面,ASP.NET会将其编译为MSIL(Microsoft中间语言)。然后,CLR(公共语言运行库)会将此MSIL代码转换为机器码。最后使用这个编译后的代码运行该请求。后续的请求将使用相同的机器码运行(假设该页面未被修改)。

需要注意的是,因为由CLR生成的二进制代码已经最大限度地进行了优化,所以不必再使用其他产品来帮助提高性能。

此外还要注意,ASP.NET中的所有内容在运行前都被编译为机器码。甚至HTML文本也被转换为字符串常值控件,并按照适当的顺序插入到控件树中。

PHP ASP.NET功能对比

下图对PHP和ASP.NET中的某些主要功能进行了比较。

PHP和ASP.NET的功能对比

PHP ASP.NET之间的较量就向你介绍到这里,关于PHP ASP.NET之间的比较,可以在使用过程中对他们再次认识。

【编辑推荐】


    ASP.NET数据库编程技术浅析
    ASP.NET笔试题小汇总
    ASP.NET笔试题浅析
    PHP与ASP.NET比较的浅析
    ASP.NET JSP PHP之间的取舍

【责任编辑:李彦光 TEL:(010)68476606】

(0票)

(0票)

(0票)

(0票)

(0票)

(0票)

原文:PHP ASP.NET的较量 返回开发首页

0 0