盘点 PHP 和 ASP.NET 的10大对比!

【编者按】本文主要针对开源 PHP 和非开源的 ASP.NET 在性能、成本、可扩展性,技术支持和复杂性等方面进行比较。php

在网上论坛,老是有成百上千的文章和帖子在讨论 PHP 和 ASP.NET,究竟谁才是更好的平台?不过很惋惜,大部分人的观点老是带有偏见的,人们总会有意无心地推广本身喜欢的语言。html

此外,若是你注意过这些争论帖和文章的日期,就会发现大部分的信息都是过期的。太惋惜了,这些搜索排名考前的文章提供的信息却再也不有效。咱们还要考虑到,PHP 和 ASP.NET 都是有周期性的版本升级和优化的。程序员

笔者保证,这两种编程语言均可以在很是庞大的 Web 应用和网站上成功使用,所以,它们处理大型网络应用程序的能力是毋庸置疑的。数据库

内容提要:

关于性能:笔者会阐述影响性能的种种因素,其结果会证实由于速度而选择一种编程语言在大多数状况下是毫无心义的。编程

关于可拓展性:笔者会阐述影响可拓展性的因素,但实际上,只要编程方法正确,两种语言的可拓展性能都十分强大。浏览器

关于成本和技术支持:因为 PHP 是开源的,一般运行在 LAMP(即 Linux,Apache,MYSQL 和 PHP)这些开源平台上。所以,在提供最具成本效益的解决方案和提供大量的资源及支持方面,PHP 是优于 ASP.NET 的。缓存

关于平均部署时间(即附加成本):使用 ASP.NET 进行编码须要的代码量是使用 PHP 的两倍,所以使用 PHP 部署时间成本更低,速度更快。服务器

笔者会在下面仔细说明每一个方面,而且附上看法。网络

1.可拓展性和易维护性

不管你选择 PHP 仍是 ASP.NET 平台,对可拓展性和易维护性都不会有任何影响。Web 应用程序的可拓展性以及易维护性主要取决于如下几个方面:app

  • 编程者的经验
  • 使用最佳的编码实践
  • 使用可靠的编程框架
  • 遵循程序设计指南和标准

2.性能和速度

关于这点,一直以来都存在许多争论,且大部分争论都是不客观且片面的。这些争论并无给你们提供真正有效的信息,只是极力吹捧一种语言而贬低另外一种。

当涉及到测量 Web 应用的速度时,值得考虑的因素很是多。以至于编程语言的运行速度,对当下大部分网站的速度和性能影响,实际上是微乎其微的。

然而,若是要用这种语言完成雅虎或者谷歌这类网站天天都在执行的庞大任务,那么选择一种能够快速执行大型任务的编程语言就十分必要了,这也是谷歌和雅虎选择多种编程语言(大部分都是开源的)的缘由,每种语言都用来执行最适合它的任务。

下面,笔者会分析各类常见和不常见的场景而且解释哪一种任务更优。

第一种常见状况

Web 应用的一种常见的任务是对数据库进行访问和查询,再把结果输出到 Web 服务器,继而浏览器。所以,在这个常见场景中,全部的编程语言都要担当数据库服务器和 Web 服务器之间的通讯或者是接口的角色。在此场景中,编程语言的速度对整个进程几乎没有影响;该进程的速度主要取决于数据库服务器、Web 服务器,客户端的 Web 浏览器和带宽。

如果考虑经常使用的主流数据库服务器,MySQL(如今属于Oracle),PostgreSQL,MSSQL 和 Oracle 都在努力提高速度和性能。咱们看到,每一个版本的数据库服务器升级都会带来新功能和更好的性能,因此笔者认为只要数据库程序员使用优化的实用的 SQL 查询,而且必要状况下采用如缓存一类的先进功能,上述任一款数据库服务器都会有十分优越的表现。

谷歌,Facebook,YouTube,雅虎和最近因世界杯得到庞大观众数量的 FIFA 都在使用 MYSQL。所以,MySQL 数据库服务器的能力是毋庸置疑的。

基于线上的统计调查,截止至发稿时,PHP 与 MySQL 之间的通讯和接口速度要快于 ASP.NET 和 MSSQL,但并不明显。

第二种常见状况

Web 程序的另外一种常见任务是访问文件系统,找到一个图像再将其发送到 Web 服务器。在这种状况下,编程语言的任务依然不多,与编程语言交流的负担主要落在操做系统与文件系统身上。

基于线上的统计调查,截止至发稿时,Linux 操做系统和 EXT4(文件系统)的性能优于 Windows 操做系统和 NTFS(文件系统)。

第三种常见状况

大多数的 Linux / Unix 服务器的运行都很简约,没有任何额外的非必需的包或 GUI 界面,所以这些操做系统只需使用不多量的 CPU 和 RAM,从而将更多的资源留给数据库和 Web 服务器。

大多数 Windows 服务器运行十分笨重,有许多冗余的包会占用大量的 CPU 和 RAM。

很显然,LAMP 平台要比 ASP.NET 平台更有优点,由于它有更多的可用资源。

第四种 不太常见的状况

ASP.NET 一般使用 C# 编写。通常而言,截止到目前为止,C# 是比 PHP 更快的编程语言。(但这种状况也可能改变,由于编程语言会为了提升速度而不断升级更新)所以,假设为了完成某次计算须要执行2,000,000次循环,那么用 C# 编写的 ASP.NET 程序将比 PHP 程序运行更快。然而,这是一种很是罕见的状况,一次计算循环次数最多为几百次,而不是2,000,000次。并且,在这种状况下,就应该考虑为何要作一个2,000,000次的循环计算。

其余与编程语言无关,但会对性能产生影响的因素还包括:

  • 程序员在编写代码时的知识储备和能力
  • 程序员在编写 SQL 查询语句时的知识储备和能力
  • 所需实现的功能(有些功能在 ASP.NET 平台所需的执行时间长于在 PHP 平台所需的时间,有些则恰巧相反)

说到性能,在此不得不谈及一些专业的应用性能监控工具。能够有效的针对代码、SQL语句等进行优化,下降代码编写方面对性能和速度的影响。

appDynamics

NewRelic

OneAPM

盘点 PHP 和 ASP.NET 的10大对比!
图为OneAPM上监控到的 .NET 应用程序响应时间和吞吐量数据

3.成本

PHP,MySQL 服务器,PostgreSQL 服务器,Apache 服务器和 Linux 操做系统的使用和升级都是免费的。此外,另设一台备援主机,或者须要运行多个服务器以均衡负载或搭建服务器集群,也都没有额外的许可费用。

LAMP (Linux, Apache, MySQL 和 PHP)在托管公司中也更受欢迎。与 Windows 主机相比,LAMP 主机的普及性使得每个月的托管费用更低。

若是你购买了 Windows 操做系统,那么 ASP.NET 和 IIS 就是免费的。微软的 Windows 服务器,SQL 服务器以及将来的更新价格昂贵。例如 Microsoft Server 2008 R2 64位标准版价格在1029美圆左右,而针对小型企业的 Microsoft SQL Server 2008价格在1038美圆上下。

若是这个网站变得受欢迎,有必要另设一台备援主机,或者须要运行多个服务器以负载均衡,搭建服务器集群,那么上述费用将会大幅度提升。

4.支持和资源

因为 LAMP 是开源的,世界各地专业且友好的开发者们一直在对这一开源平台的更新和改进提供源源不断的支持。除此以外,PHP 和 LAMP 平台还有不少其余的资源支持和开发者支持。

我之因此说起“友好”这个词,是由于向开源社区作出贡献的开发者们并非为了获得经济利益。若是你在编码过程当中遇到了功能挑战须要寻求帮助,去 PHP 的论坛上提问,你必定会收到友好的程序员们给出的有用信息。

ASP.NET 更依赖于微软数量有限的开发者作出的改进和更新。能帮助解决 ASP.NET 的贡献者相对较少。

5.部署时间

与 PHP 相比,ASP.NET 须要大量或者说更多行的代码去完成复杂的特性和功能,在开发过程当中花费更多的时间。

此外,PHP 是在服务器端被编译的,所以,当改变功能时,无需额外步骤就能看到改变。相反的是,ASP.NET 的代码每次修改都须要进行编译。也就是说,开发过程当中 ASP.NET 要比 PHP 消耗更多的时间。

6.编译器和工具

PHP 和 MySQL 都有独立编译器的,PHP 的开发者能够得到数量更丰富的编译器。

大多数 ASP.NET 程序员都依赖于 Microsoft Visual Studio 编译器开发 .NET程序。(许多 ASP.NET 程序员对 Microsoft Visual Studio 是又爱又恨)

这是彻底不一样的编程风格——使用 PHP 的程序员及开源开发者们更喜好文本编辑器,例如 VI,VIM,Notepad ++。

VI 和 VIM 是很是高级的独立编辑器。开发者彻底掌握这些编辑器的性能后,能够快速、高效且独立地进行复杂的编程。所以,他们能更加灵活地控制代码。当涉及到使用或与 JavaScript,Ajax,JQuery 等平台集成时,因为熟悉开源环境且使用 VI 或 VIM 手打代码,PHP 开发者每每更有优点。

7.平台独立性

PHP 具备平台独立性,能够在 Linux,Unix,Mac OS X,Windows 中的任何平台运行。ASP.NET 则只能在 Windows 平台上运行。

8.热门网站都运行在什么平台上?

下面的表格列出了当下流行站点所使用的平台和语言。
Note: Please don't confuse C with C# (pronounced C Sharp) — they are completely different programming languages. ASP.net is mostly programmed in C# (C Sharp) or Visual Basic and not C.
注:请勿混淆 C 与 C#,他们是两种彻底不一样的编程语言。ASP.NET 一般使用 C# 或者 Visual Basic 进行编程,而非 C 语言。

站点 创建时间 服务器平台 编程语言
Google.com November 1998 Linux C, Java, C++, PHP & MySQL
Facebook.com February 2004 Linux PHP, MySQL and C++
YouTube.com February 2005 Linux C, Java and MySQL
Yahoo.com August 1995 Linux C++, C, Java, PHP & MySQL
MSN.com (owned by Microsoft) August 1995 Windows ASP.net
Live.com (owned by Microsoft) August 2008 Windows ASP.net
Wikipedia January 2001 Linux PHP & MySQL
Amazon.com October 1995 Linux & Solaris C++, Java, J2EE
WordPress.com November 2005 Linux PHP & MySQL

9.流行程度

LAMP 平台要比 Windows 平台更加流行。基于 Netcraft 2010年7月针对205,714,253个 Web 服务器进行的数据调研显示,有112,945,968(54.90%)的 Web 服务器托管在 Apache 上,有53,217,620(25.87%)的 Web 服务器托管在 Windows 上,剩余的则托管在其余平台上。

10.可用性和易部署性

关于 Linux 的不友善误传已久。

实际上,这取决于使用者的平台搭建经验和知识储备程度。

但不得不说,时下流行的改进后的 Linux 发行版给笔者留下了深入的印象。诸如 Ubuntu,小红帽,CentOS,openSUSE 以及 Fedora 等发行版,不只易于安装部署,还提供简单直接的 GUI 界面,使得配置 Linux 服务器变得更加简单易行。

很惋惜,在笔者看来,微软的服务器在可用性上日渐衰落,服务器管理变得愈加笨拙,而且充斥着许多没必要要的功能。

原文地址:http://www.comentum.com/php-vs-asp.net-comparison.html

相关文章
相关标签/搜索