PHP和ASPNET都可以构建复杂的Web应用程序(例如电子商务站点Intranet和企业门户)但两者之间却存在若干重要差别与PHP不同ASPNET并不是一种语言或分析器而是Microsoft NET Framework中的一组用于构建Web应用程序和XML Web Service的技术同PHP一样Microsoft ASPNET页面在服务器上执行并生成标记(例如HTMLWML或XML)标记将发送给桌面应用程序或移动应用程序但不同的是ASPNET为开发Web页面提供了强大的面向对象的以及由事件驱动的编程模型同时仍保留了PHP开发人员所习惯的那种简单性
PHP与ASPNET比ASPNET应用程序是基于强大的面向对象编程(OOP)模式而不是基于脚本模式这样便可以获得更为严谨的OOP功能例如继承封装和反射虽然大多数基本的简单操作可以轻松地从PHP转换到ASPNET但要转换更为复杂的应用程序却并不这么简单这需要仔细的规划和考虑并采用更符合OOP的方法
本文假设读者具有PHP方面的经验并且对编程和软件开发有着基本了解本文首先从代码方面对两者的基础体系结构的差别进行简单比较并简要介绍一下OOP开发模型然后比较两者的功能最后将使用PHP和ASPNET开发Web应用程序时的语法和常见任务作以对比
注意如果您希望跳过有关迁移的详细信息而只想尝试ASPNET的使用则可以直接跳到建议的后续操作部分
PHP ASPNET体系结构对比
阅读完本文后通过比较语法和语言您将了解PHP和ASPNET是很相似的它们具有类似的功能和语法但是从更基本的体系结构层面来讲PHP与ASPNET却有着很大差别PHP基于独立于平台的处理器/引擎该处理器/引擎用于分析PHP脚本提供数据库连接符合Internet协议以及提供大多数Web应用程序平台所常见的众多其他任务
ASPNET是基于一系列技术(如CLR)构建的框架提供了大量以很好的方式组织的类库这些类库可满足要在Web应用程序中使用的大多数功能的需要您还可以轻松地创建各种组件对该框架进行扩展
虽然PHP也提供了类似的功能(例如PEAR库)但PHP和ASPNET并非完全相同因为ASPNET框架是完全基于OOP模式和OOP概念构建的而PHP则不然这种差别在PHP和ASPNET中类和对象的访问方式方面表现得犹为明显
PHP ASPNET中的面向对象编程
虽然PHP和ASPNET都为应用程序开发提供了OOP模式但它们对各种OOP概念(例如封装和多态)的支持却存在差别例如PHP仅支持部分封装(例如支持在类中声明方法和字段)和部分多态(没有重载和抽象)此外由于PHP的类中不存在私有(private)公有(public)或受保护(protected )函数等概念以及重载因此PHP也不支持这些概念及其访问OOP纯粹主义者可能会说ASPNET以及各种语言也没有完全支持OOP模式中的所有概念对于使用OOP的大多数语言(如C++和Java)来说情况确实如此
这既有积极的一面也有消极的一面消极的一面是对于某些Web开发人员来说学习ASPNET要比学习PHP困难些因为PHP提供的是开发人员创建Web站点时所惯用的脚本模式但是使用过OOP语言和/或V的开发人员会发现ASPNET比较亲切且易于学习
ASPNET支持OOP概念的积极的一面是ASPNET应用程序的大多数部分都会得到很好的设计并且能够对内容逻辑和数据进行清楚的分隔因而从应用程序生命周期的长远角度看这通常更容易为其提供支持此外由于ASPNET本身支持企业技术例如消息队列事务(请参阅NET Framework的SystemEnterpriseServices类)SNMP和Web服务因而可以很容易地开发具有高度可缩放性的强大的应用程序
要大致了解面向对象编程(从Visual Basic的角度)的主要概念请参阅ObjectOriented Programming in Visual Basic
PHP ASPNET编译
PHP
请求PHP页面时HTML和内联PHP脚本将编译为Zend Opcode(Zend操作代码)Opcode是低级的二进制指令是提供PHP页面时实际使用的代码编译后Zend引擎将运行Opcode(与Java的运行时引擎运行字节码类似)然后生成HTML并提供给客户端
有许多商业产品可用来通过优化这些Opcode来加快PHP页面的执行速度其他提高PHP脚本性能的方法还包括对Opcode和生成的HTML进行缓存
ASPNET
当向IIS(Internet信息服务)或其他Web服务器请求aspx页面(或ASPNET支持的任何其他扩展名)时该请求将被传递到ASPNET进行处理如果是第一次请求该页面ASPNET会将其编译为MSIL(Microsoft中间语言)然后CLR(公共语言运行库)会将此MSIL代码转换为机器码最后使用这个编译后的代码运行该请求后续的请求将使用相同的机器码运行(假设该页面未被修改)
需要注意的是因为由CLR生成的二进制代码已经最大限度地进行了优化所以不必再使用其他产品来帮助提高性能
此外还要注意ASPNET中的所有内容在运行前都被编译为机器码甚至HTML文本也被转换为字符串常值控件并按照适当的顺序插入到控件树中
PHP ASPNET功能对比
)thisstylewidth=; border=>
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///gif width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///gif width= onload=javascript:if(thiswidth>)thisstylewidth=; border=> image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///gif width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
PHP ASPNET之间的较量就向你介绍到这里关于PHP ASPNET之间的比较可以在使用过程中对他们再次认识