【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“转 ASP NET和PHP性能比较 - 计算机理论“提供大家参考,希望对大家有所帮助!
转
ASP NET和PHP性能比较 尽管使用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开发人员所习惯的那种简单性。
ASP.NET应用程序是基于强大的面向对象编程OOP模式而不是基于脚本模式。
这样便可以获得更为严谨的OOP功能例如继承、封装和反射。
虽然大多数基本的简单操作可以轻松地从PHP转换到
ASP.NET但要转换更为复杂的应用程序却并不这么简单这需要仔细的规划和考虑并采用更符合OOP的方法。
本文假设读者具有PHP方面的经验并且对编程和软件开发有着基本了解。
本文首先从代码方面对两者的基础体系结构的差别进行简单比较并简要介绍一下OOP开发模型然后比较两者的功能最后将使用PHP和
ASP.NET开发Web应用程序时的语法和常见任务作以对比。
注意如果您希望跳过有关迁移的详细信息而只想尝试
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 请求PHP页面时HTML和内联PHP脚本将编译为Zend OpcodeZend操作代码。
Opcode是低级的二进制指令是提供PHP页面时实际使用的代码。
编译后Zend引擎将运行Opcode与Java的运行时引擎运行字节码类似然后生成HTML并提供给客户端。
有许多商业产品可用来通过优化这些Opcode来加快PHP页面的执行速度。
其他提高PHP脚本性能的方法还包括对Opcode和生成的HTML进行缓存。
ASP.NET 当向IISInternet信息服务或其他Web服务器请求.aspx页面或
ASP.NET支持的任何其他扩展名时该请求将被传递到
ASP.NET进行处理。
如果是第一次请求该页面
ASP.NET会将其编译为MSILMicrosoft中间语言。
然后CLR公共语言运行库会将此MSIL代码转换为机器码。
最后使用这个编译后的代码运行该请求。
后续的请求将使用相同的机器码运行假设该页面未被修改。
需要注意的是因为由CLR生成的二进制代码已经最大限度地进行了优化所以不必再使用其他产品来帮助提高性能。
此外还要注意
ASP.NET中的所有内容在运行前都被编译为机器码。
甚至HTML文本也被转换为字符串常值控件并按照适当的顺序插入到控件树中。
功能对比 表1对PHP和
ASP.NET中的某些主要功能进行了比较。
表1PHP和
ASP.NET的功能对比 大概得出的结论是 PHP拥有更小的代码路径这意味着更少的分析和执行PHP页面服务器端代码这将带来更高效的内存和使用率以及更快的运行。
ASP.NET在内存使用和执行时间方面耗费非常大这大部分归因于较长的代码路径。
涉及到复杂、数据库交互、OO逻辑等
asp.net胜出。
其他简单的操作php胜出。
上一篇:
无法破解的软件注册码算法
下一篇:
首鼠两端