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

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

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

个人认为,这两种编程语言都可以在非常庞大的 Web 应用和网站上成功使用,因此,它们处理大型网络应用程序的能力是毋庸置疑的。

内容提要:

  • 关于性能:笔者会阐述影响性能的种种因素,其结果会证明因为速度而选择一种编程语言在大多数情况下是毫无意义的。
  • 关于可拓展性:笔者会阐述影响可拓展性的因素,但实际上,只要编程方法正确,两种语言的可拓展性能都十分强大。
  • 关于成本和技术支持:由于 PHP 是开源的,通常运行在 LAMP(即 Linux,Apache,MYSQL 和 PHP)这些开源平台上。因此,在提供最具成本效益的解决方案和提供大量的资源及支持方面,PHP 是优于 ASP.NET 的。
  • 关于平均部署时间(即附加成本):使用 ASP.NET 进行编码需要的代码量是使用 PHP 的两倍,因此使用 PHP 部署时间成本更低,速度更快。

下面仔细说明每个方面,并且附上见解。

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

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

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

3.

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 语言。

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 服务器变得更加简单易行。

很可惜,在我看来,微软的服务器在可用性上日渐衰落,服务器管理变得越发笨拙,并且充斥着许多不必要的功能。

很详细的针对PHP和ASP.NET进行对比,帮助大家更好地分析两者的区别,希望对大家进行开发有所帮助。

(0)

相关推荐

  • IIS7 配置大全(ASP.NET 2.0, WCF, ASP.NET MVC,php)

    一.IIS7.0 配置 ASP.NET2.0 1.ASP.NET 2.0 部署 1)首先打开win7 的特性,路径我已标注 下面选中的是ASP.NET2.0, 如果要支持ASP.NET1.1,你的选中IIS6兼容 2.)设置安全选项 3)添加.Net经典应用程序池 4)将站点转换为Application 5)为站点添加 yourmachinename\IIS_IUSRS权限 6.)右键站点-Manage Application-Advanced Setting 设置当前站点为Classic .N

  • PHP中调用ASP.NET的WebService的代码

    其中有个web method像这样的: 复制代码 代码如下: [WebMethod] public string HelloWorld() { return "Hello World"; } ok,一切就绪.在某php文件中如下写法: php5本身就支持SOAP调用Web Service: 复制代码 代码如下: <?php //get localization strings from C# webservice $client = new SoapClient('http://

  • asp.net php asp jsp 301重定向的代码(集合)

    1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了.网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向.下面就以我的www.jb51.net为例 1.1 无www域名转移到www域名 复制代码 代码如下: RewriteEngine on

  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)

    以下是FTP/ASP/PHP/ASP.Net环境配置 一.FTP与ASP安装流程通过远程登录VPS,点击计算机管理>角色1.1首先我们选择自己需要装的配置环境ASP与FTP,所以只要在前面打勾再安装就可以了 1.2:需要安装的配置,确认安装 1.3:安装完成 二.安装PHP环境2.1首先我们通过在线平台安装PHP所需要的软件配置 2.2进入平台>产品>框架>选择PHP5.3.8与Windows Cache Extension 1.1 for PHP 5.3安装 2.3安装确认 2.

  • ASP.NET、ASP、PHP、JSP之间有什么区别?

    Asp:      首先说Asp,它是属于脚本语言,一般连接的数据库为 Access 和 MsSql(SqlServer).当我们开发一个一般的小型数据库网站的时候,一般在3万条记录以下的,一般用Access数据库.      Access数据库的优势就是一般的服务器都支持.      SqlServer数据库的优势就是速度快,比如当记录集在10万以上,可以推荐用Sql的数据库. 这两种数据库在Asp中都是用Sql语法,但Access数据库和SqlServer数据库的使用语法有一定的不同. 在制

  • 支付宝 接口开发帮助(asp,php,asp.net,jsp)

    推荐两文:1.支付宝购买流程 2.支付宝卖家流程 支付宝接口提供最新的ASP.ASP.NET.PHP.JSP等目前网络上最流行的源码包文件,程序员可以下载后按本文介绍更改参数和布置即可!而本文拿ASP.NET(C#)详细介绍. ------------------------------------------------------------------------------------- 摘自:支付宝官方 点击下载 实物商品交易服务集成技术文档和服务介绍 按照文档中的提示进行集成操作.

  • php asp.net 比较 [推荐]

    这些标记告诉预处理器,它们包含代码,并且应对它们作出处理.与 CGI 非常相似,这些代码在服务器上运行,并返回一些内容,这些内容表现为发回给浏览器的结果 HTML 页面的部分外观.开放源代码脚本语言 PHP 和 Microsoft 的 ASP.NET 框架中的语言都属于这种类型:JavaServer Pages (JSP) 和 Perl/Mason 也以这种方式运行. 在本文中,我将重点讲述 PHP - Oracle 已选择合并到其产品中的技术 - 和 ASP.NET.我将概述两者的各种优势和弱

  • flash与asp/php/asp.net通信的方法第1/3页

    一.使用loadVariables 一个例子简单的描述了如何通过GET方法向服务器端的ASP发送请求: 复制代码 代码如下: _root. pushAction = function(URL,) {      this.loadVariables(URL, "GET");  }  var ask = true;  var pushURL = "http://localhost/test/return.asp?ask="+ ask;  pushAction (push

  • 服务器完美设置,支持asp php cgi jsp asp.net mysql!

    首先下载我们要用到的程序: php-4.3.0-installer下载地址: [url]http://www.php.net/get/php-4.3.0-installer.exe/from/cn.php.net[/url] mysql下载地址: [url]http://www.onlinedown.net/mysql.htm[/url] myodbc下载地址: [url]http://www.onlinedown.net/myodbc.htm[/url] perl解析软件下载地址: [url]

  • asp,asp.net,php,jsp下的301转向代码

    使用.htaccess文件来进行301重定向,请见我的另外一篇文章<301重定向,域名更换后跳转到新域名> . 如果空间不支持.htaccess文件,那么我们还可以通过php/asp代码来进行301重定向. 为了将搜索引擎的记录更新到现在的域名上面,做了几个301重定向的东东,给大家分享一下. asp 301转向代码 在 index.asp 或 default.asp 的最顶部加入以下几行: 复制代码 代码如下: <% Response.Status="301 Moved Pe

  • 301重定向代码合集(iis,asp,php,asp.net,apache)

    1.IIS下301设置 Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择"资源的永久重定向". 在IIS中,也可以通过安装ISAPI Rewrite组件来实现如Apache中mod_rewrite的功能,详见ISAPI Rewrite 3下载及常用301规则. 2.ASP下的301重定向代码 <%@ Language=VBScript %> <% Response.Status="301 Mo

随机推荐