也谈php和net比较

首先说明比较的不是语言更多的是结构上方法上的东西。本人在现在工作主要是以asp.net开发为主。之前主要从事php的开发,php开发算不上高手也能算个熟手了。net开发可以说只是个新手。不过不管怎么说项目也做了不少。对net开发也有些感受。所以今天想说说,希望php转net的朋友,或者做net但有意学习php的朋友们看到我们的站点能有点帮助。由于php更多做的是web开发(国外也有用php做winform的软件,只是没什么人用)所以本文基本是说的web开发上的比较。

好,废话不说,下面我们开始正文。

1.不管做什么开发环境和运行环境就一定需要配置的,我们先比较下2这的开发环境和运行环境。net开发几乎只要安装了vs基本都完成了,没有什么拖泥带水的,可以用简单来形容。但是php就没

那么省事了。往简单里说你最少需要现状个lamp或者wamp这样的集成环境,这还没完。你还需要装上一个于海燕编辑器。一般来说eclipse for php就可以了。不过环境配置还需要你多用心。所以从整体将net的开发环境搭建的简单程度和迅捷程度几乎是完胜php。但是开发完了你还需要发布你的项目到服务器。这就涉及到程序运行环境。net项目需要iis和相关的net framework。可以说也是比较简单的。iis的配置和管理也几乎是傻瓜的。反观php则没那么简单了。你需要分别安装 php mysql apache 以及一对相关的配置。当然如果你没有洁癖也可以使用lamp、wamp 或者是其他集成环境来达到效果。不过apache 的管理主要基于配置文件。许多参数需要一个个修改设置。从域名绑定到端口开启再到项目目录几乎离不开配置文件修改。在复杂性方面自然是弱于iis的。但是配置的可收缩空间却也更大但是出问题的概率也更大,从我使用中看,iis出问题的概率是远低于apache的。但是iis的安全和稳定性却又比apache差一点。这也是许多开源项目的特点:“配置较复杂,问题较多,但一旦配置运行后效果却非常好的”。至于这方面那个更好我也不好评价,毕竟是仁者见仁,智者见智的事情。

2.说完环境,我们来看看web开发中最主要的一点数据库操作方面的对比(由于现在数据库实在太多,我们只拿2者开发中使用较多的数据库做比较,即mysql和mssql)。

在日常开发中php的数据库连接基本都是mysql_connect这函数解决的,相对比较简单。net连接也非常简单,SqlConnection()基本能达到类是效果。个中数据库连接字符串之类的,我们就不一一详述。反正大体讲是基本相当。2者在数据库操作方面也基本一致。都有许多对应的函数或方法可用。这里稍微提及下的是net 对存储过程的支持是我们非常喜爱的。说实话mysql本身也支持存储过程只是在日常的php开发中使用的很少或者说基本不使用。但是也不排除我见识孤陋的原因。不过从我看到的许多php开源项目来讲也鲜有使用存储过程,触发器,视图等一类的东西。所以这点上php不如net。

3.语言特性方面我也想做个简单的比较,先说熟的php,php语言面向对象有,但不是太好。为什么这样说。是因为我一直对php这个“->”符号比较反感。你说几乎所有的编程语言的类都可以一个点或者一个冒号就得到下级的方法或者属性,为什么php要弄个这玩意。有人说php中"."是连接字符用的(其实也不挨着,毕竟连接字符串是家双引号的),但是“->”这玩意又长又难看。创新的未免太无聊了把。你完全可以一个"-"或者一个“>”干嘛要2个?不要看平时多输一个字符多按一下键盘没什么的。但是当你大量使用php面向对象的特性做开发时。你会发现你比别人多写了几千、几万个字符,可以说即费键盘又费力气还无形中把源文件变大了增加了不少磁盘开销(上面开个玩笑)。 下面我们来说说net的语言特性,我想说的是完胜php。几乎所有面向对象的特性都支持从命名空间到继承重载你能想到的都有。(这里提下:据说php下个版本将支持命名空间,不知道是不是真的,要是是真的话还不错啊。毕竟语言需要体系化的东西

上面只是我的一点片面之见,毕竟我对这net的了解还少没那么深入也只能说到这里了。

4.速度比较,这个真的不好比较,毕竟php和net的机制不一样。自己也没做过什么实验。不过从直觉感官上讲,我觉得php比net要快一些。(大家不要喷啊,我说了只是我感觉上的。)但是不一定说的对,毕竟我对php比对net要熟悉写,写出的代码也相对要更优化些。所以有所差异也是可以理解的,抑或是net本省首次编译所以感觉慢点也是正常的(毕竟自己一般都是第一个访问的人,或者其他原因)。不过网上几乎都是说net在运行数度上优于php的。这点我也不质疑,毕竟人家有专业的测试过程,而我只是凭借自己的感觉而已。不过我相信net的大数据吞吐量应该完胜php,但是php也可以memcached这类分布式系统,所以单系统吞吐量也不见得就那么主要,不然新浪和yahoo这样的大型项目也不会选择php了。

4.说完性能我们说说开发工具,php的开发工具选择比较多。不过大致可以分为eclipse系,主要的有zend studio、国内的eclipsePHP和eclipse for php等等,其他也有一些杂牌的开发工具如PHPDesigner2008、delphi for php等等。整体上讲php开发多且全,选择想多较多。有所见即所得的也有直接编写代码的。但是php的debug相对net的vs可能要弱很多。再说net的开发工具主要是以vs为主,当然你也可以以dreamware或SharpDevelop来编写net代码。只是没那么全面了,毕竟SharpDevelop目前对web开发支持还没那么全面。所以我们只谈vs。整体上讲vs非常强。几乎可以说vs一出什么问题都解决的差不多了。

但是由于net的选择相对少,所以这局也许只能是个平手,毕竟eclispe也不少弱旅。相对而言我还是更喜欢eclipse一点。扩展性好,也易于转移一点。绿色版的还是我比较喜欢的。

5.平台支持。这个不想多说,php完胜net。有人说net也有Mono,我承认是有但是应该没那么完美。而php计划是通用到无需修改代码就能移植的地步。所以这局相信php完胜net是没什么疑问的。

6.实施成本,我觉得php可能还是完胜net。mysql php本身都是免费的东西。linux apache也都有免费的版本(我没说全部)。你使用php需要的只是时间和精力,但是你要是实施net还需要金钱。毕竟不论windows server,vs还是mssql到目前为止还没有免费的说法。有人也许说你可以用mono,但我想问的是难道mono的服务器就不收钱了?

7.开发周期,这个几乎是一致的基本可以持平,虽然net可以控件拖拉,但是本省也不能避免美工的整合,而php虽然没有控件但是代码前台也要写,所以基本没什么差别。至于c#和php各有各的优势,二者的开发也都比较迅速,开发速度上谁胜谁都不是那么容易。所以基本可以持平。但是这里要提一个就是2者的区别。

php的模版引擎可以说我我的最爱。我每次修改一个项目只要小改下php代码,套上新的模版,一个项目就ok了,而net的三层或工厂也是我的最爱。代码维护异常简洁。所以更有特色又各有优势。真的难以取舍。

8.结论,首先声明结论是我的一点看法,大家一笑而过,一看而过。

如果你做大型项目且维护需求可能比较大,那么你可以选择net以后维护会给你省不少事情,但前提是你得有钱(不过有多少做大型项目的会没钱那),当然你也可以选择php,但是需要你的技术员能受得了穷折腾,毕竟apache和liunx不是那么好玩的。但是php开发成本和效率也一定能达到你的要求,你却不一定有钱,当然你要是有钱你可以选择更稳定的linux服务器版本。

如果你做小型项目你可以选择php,毕竟他的开发异常迅速,但你要有耐心,毕竟apache和liunx的配置还是见很费神的事情,毕竟php很多功能要你一个一个实现。当然你也可以选择net毕竟他的很多东西只要拖拖控件写些代码就能完成(不过要有性能可能还得自己写,不过话说回来了,小项目对性能可能就没那么多要求了),至于net的成本我觉得也可以不计(你懂的!)。

所以我觉得,语言就是仁者见仁,智者见智的事情。怎么选看你的实际情况。如果一点要分个伯仲之间,我选择net(毕竟这文是要发在cnblog的)。

posted @ 2011-07-08 11:07  kwor  阅读(814)  评论(1编辑  收藏  举报