什么时候使用PHP或ASP.NET?[关闭]


46

我已经在使用PHP和ASP.NET开发Web应用程序方面进行了广泛的工作,但是客户经常问我的问题之一是要继续开发php网站还是asp.net网站。

所以自然而然地想到的第一件事就是回答这样的问题:

PHP是开源的,而ASP.NET是Microsoft的。

通常说完这样的话,客户的脸上就会一片空白。显然,一个是开放源代码而另一个不是开放源代码的事实并没有真正使它们困惑。这是有充分理由的,因为当我第一次听到它的时候,并没有告诉我太多。

通过与两家公司的合作,我知道在网站开发方面各有千秋。

我的问题是,到目前为止,ASP.NET和PHP有何区别?

  1. 特征
  2. 安全
  3. 可扩展性
  4. 构架
  5. 平均开发时间

我正在尝试汇总事实清单,以便与客户进行比较,以便可以在适当的开发平台上做出明智的选择。


7
我都用过,我认为Visual Studio和ASP.NET更加健壮。仅凭IDE赢得了我。
松饼人

7
PHP将永远对我情有独钟,因为这是我的第一个Web编程语言。但是经过2年的ASP.NET C#,我简直无法退缩……Vis​​ual Studio IDE很棒!
Dal

是的,我希望php具有某种主要的IDE,但是我想那会杀死PHP开源的精神。绝对是要考虑的因素。
爱德华

2
6.项目整个生命周期的成本?
VirtuosiMedia

@VirtuosiMedia我没有提到的另一个重要因素。
爱德华

Answers:


39

功能安全性可扩展性或多或少都将是相同的。用PHP可以完成的事情可以用ASP.NET来完成。

框架 —同样,谈到框架的功能时,它或多或少是相同的。但是,比语言本身更具体,您需要考虑:

  • 您的开发人员最满意的是什么。 知识=效率
  • 在逐个项目的基础上,一种语言的框架可能比另一种框架的框架更自然。比语言本身更具体意味着框架不能帮助但很适合某些任务而不太适合其他任务。

平均开发时间 - 使用PHP,对于一个很小的项目,您的平均开发时间可能会更好,因为网络主机很容易找到,而开发机器也很容易设置。但是,只要您拥有优秀的开发人员,或者已经为其中任何一个做好了准备,那么任何更大的事情都将是一个洗礼。


您应该考虑的主要问题是您的客户希望与之绑定的技术堆栈。 两者都不能(轻松地)相互融合。他们可能拥有熟悉彼此的开发人员。

  • 如果您的客户喜欢连接到Microsoft的想法,请使用ASP.NET。对于将来的MS支持,升级等,某些客户会感到更加放心。

  • 如果他们喜欢开源和Linux服务器的想法,请使用PHP。由于网络主机,免费软件等的可转移性,这可能使某些客户端感兴趣。

最后,如果他们不在乎,那就选择您最喜欢的东西。除此之外,没有什么其他的。


8
为“ +1”表示“您应该主要考虑的是客户希望与之联系在一起的技术堆栈。”
系统停机

安全性分支是否没有资源可以查看每个平台的性能?
爱德华

3
@loyalpenguin-这本身就是一个问题。我不确定您所说的“每个平台的性能如何”是什么意思,但是,如果您谈论的是平台安全漏洞(几乎总是可以快速修补),那么您的担心就最少了。在大多数情况下,每种语言都像编写代码的开发人员一样“安全”。
妮可

好点。最后一个问题,我将如何摆脱那个更安全的问题?
爱德华

@loyalpenguin当我说这是一个不同的问题时,我的意思是“平台安全问题是否是引起Web应用关注的主要原因?如果是,我如何分析各个平台(例如, PHP,ASP.NET,Java,Ruby on Rails等?” 对我来说,我不确定这实际上引起关注的一个主要原因。
妮可

29

只是为了给我基于我的答案的背景知识,我已经进行了6年以上的专业PHP开发,最近3-4个月我一直在使用ASP.NET MVC,并且我一直在进行C#编程的时间与PHP编程差不多。

对我来说,这更多的是PHP vs C#参数,而不是PHP vs ASP.NET。

功能/可扩展性
我认为ASP.NET在这里胜出,而这更多是因为能够使用C#这样的语言。C#是一种比PHP更好的语言,它具有面向对象的支持。我也是一个喜欢静态类型语言的人(即使考虑过C#4.0,我相信您也可以做动态类型变量)。就语言功能而言,PHP在C#之上具有的唯一优点是可选参数,但这是C#4.0中已添加的另一件事(不确定它的工作程度,因为我还没有尝试过)。

安全
我可能会说这是两者之间的洗礼。我认为他们两个都有适当的功能来帮助提高安全性,但是确保他们的应用程序安全最终是程序员的工作。

框架
好PHP似乎有更多的主流框架(CakePHP的,笨,Symfony的,Zend框架)和其他很多比ASP.NET更小的框架。ASP.NET具有Microsoft的2个主要框架,WebForms(有点废话)和ASP.NET MVC(我开始涉足ASP.NET开发的原因)。尽管PHP具有更多框架,但我发现ASP.NET MVC 3框架比任何一个PHP框架都要好。

平均开发时间
我认为对于较小的项目,PHP的开发时间要好得多,但是随着您的项目规模的扩大,C#在这方面的伸缩性会更好。

成本
应该提高的是成本。PHP在这方面赢得了胜利。尽管您可以在Linux上的Mono上运行ASP.NET,但它确实有其自身的问题。

如果您正在做一个中小型项目和/或成本是一个因素,PHP就是赢家。如果您正在做一个大型项目,我会选择带有C#和ASP.NET MVC的ASP.NET。


3
Web窗体确实有好处。例如,成千上万的可随时使用的控件可用于快速构建Web应用程序,这对在网站上销售客户非常有帮助。
爱德华

1
我同意@ryanzec WebForms不是废话,并且从不同的角度来看,它与ASP.NET MVC一样好。从商业环境中第一个版本的Preview 2开始,我就使用ASP.NET MVC框架。另外,我在过去7年以上的时间里都使用过WebForms。此外,您再也无法争辩ASP.NET的成本了,Microsoft提供了免费工具,现在它比PHP提供的工具要好。微软还提供了SQL Compact和SQL Server的免费版本。如今,.NET的第三方托管可与Linux相提并论。
Nickz 2011年

尽管我同意托管ASP.NET的成本已经提高,但是我仍然可以找到比VPS Windows托管更便宜的VPS LAMP托管。
ryanzec 2011年

关于WebForm的要点,还说这很残酷,那不是我的杯水。的确,您可以更快地完成工作,但是一旦您尝试做一些超出组件提供的功能,或者一旦您对现有组件进行大量修改,则难度将成倍增加。同样,对于Web开发来说,系统与回发和内容一起工作的整个方法似乎也很笨拙。我更喜欢ASP.NET MVC,因为我认为它可以100%地控制所创建的内容并适合于Web开发。
ryanzec 2011年

8

PHP vs ASP.NET就像比较苹果和橘子,针对不同的解决方案。

PHP是用于小型启动解决方案的更合适的框架。PHP可以在Linux或Windows上运行,而无需太多要求。Microsoft ASP.NET是一个工业实力框架,它具有您无法想象的所有内容。ASP.NET是功能非常丰富的现成环境。许多人会说ASP.NET很昂贵,几年前就是这种情况,但现在已经不复存在了。首先,这些工具是免费的(正式版),数据库选项是免费的(SQL Compact或SQL Server 2005或更高版本的Express)。购买托管现在非常便宜,因此问题不是哪个更好,而是什么适合您的解决方案。就我个人而言,我更喜欢ASP.NET,但这是因为我在公司环境中工作,而灵活性和可伸缩性非常重要,因此解决方案决定了框架。

一件非常重要的事情是您最擅长什么语言?这应该是决定的最终因素。

如果您的目标是说服客户,那么asp.net是一个更好的选择。大公司名称的支持语言使客户感到自在。在这种情况下,最好的选择是(Microsoft)ASP.NET和(Oracle)Java JSP。

编辑:功能丰富-ASP.NET提供了两种方法来构建网站WebForms和MVC方法。由于它是.NET框架的一部分,因此您必须具有非常强大的功能,例如WF(工作流),DLR(动态语言运行时),并行Linq,Linq,路由,各种形式的数据状态管理:HTTPContext项目,ViewState,运行时缓存,页面输出缓存,三种不同类型的会话实现InProc,状态和SQL Server。ASP.NET实现各种形式的安全性,例如成员资格提供程序和角色提供程序。我不想打包PHP,但是ASP.NET却不在同一个联盟中。


5
我总是听到一个借口,“ Microsoft = Expensive”,这就是为什么我首先学习PHP的原因。但我必须同意,事实已不再如此。
爱德华

是的,现在的竞争环境还算不错,如今很难知道要使用哪种语言。
Nickz 2011年

“工业实力框架”到底是什么意思?“您能想到的一切以及更多”?“开箱即用的功能非常丰富的环境”?ASP.NET如何处理这些东西,而PHP却不是?除非您已说明,否则这只是Microsoft广告语言。
妮可

设计目标-php最初代表个人主页,旨在简化简单的服务器端脚本。asp.net旨在与Java ee竞争作为企业级解决方案。多年来,php已吸收了许多功能,但是这种“功能添加”在语言不一致和平台怪癖中消失了。我经常使用php,但是它被设计为一种网络语言,而不是一种通用的编程平台
bunglestink 2012年

6

与这两者进行了广泛的合作,您已经知道答案会因问题和客户而异。从一般意义上讲:

  • PHP非常适合需要预算的项目。例如,您不会受到巨额数据库许可费用的打击。
  • ASP.NET非常适合需要Microsoft提供的那种支持和开发人员文化的项目。

如果您要为客户编制事实清单,请以您所知道的为依据。无论您的发现有多大偏见,您的研究都可以使您获得要点。


8
当.Net自动与“大数据库许可费”相关联时,这使我感到不快。当然,您必须知道.Net可以与各种RDBMS(免费和不收费)进行交互,当然PHP也可以(免费和不收费)进行交互(这并不是说Microsoft是唯一一个收取高额许可费的流行RDBMS)。
quentin-starin 2011年

3
更不用说Express和Web版本的SQL Server具有更高的许可费(对于Express,则免费)。
quentin-starin 2011年

对不起,不是故意的。MS似乎完全可以卖得更好,而且我假设数据库引擎比Express还要大。
弗雷德·威尔逊

1
不以个人观点来看,我似乎只是经常看到这种联系。
quentin-starin 2011年

1
@loyalpenguin:以我的经验,很少找到.Net 支持的存储引擎。我无法评论PHP是否如此。
2011年

1

.net控件比在PhP平台上可以找到的更好。以Infragistics为例,LAMP等效于什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.