Heim  >  Artikel  >  Backend-Entwicklung  >  SNS实现采用的技术大多是PHP,如果采用java、 .net是否同样适用?

SNS实现采用的技术大多是PHP,如果采用java、 .net是否同样适用?

WBOY
WBOYOriginal
2016-06-17 08:30:48963Durchsuche

回复内容:

SNS采用的技术可不都是PHP (不局限于国内),特别是国外的新兴公司,基本上没有再用PHP的了,国内到还是蛮常用的。简单说说我知道的几个案例:
  1. Facebook (PHP):Facebook采用PHP是历史原因,而且Facebook的PHP被大量的Hack过了(e.g. Hiphop)。Quora曾经问一个问题,为什么「伟大」的Facebook要用PHP,答案是如果没有PHP,Facebook会更「伟大」。PHP的优点在于成熟稳定,经受考验;缺点在于语法较乱,代码管理不好。Tumblr和Pinboard都用的是典型的LAMP组合。
  2. Twitter (Ruby on Rails):Twitter也不能说全都是Ruby on Rails了,用RoR的地方大概在浅层的实现,真正后台的处理已经改成Scala。Twitter的business logic很简单,RoR的优势并没有完全发挥。RoR的社区很活跃,有许多新技术都诞生于此,而且RoR的程序员都以RoR为骄傲,我的朋友就一直费口舌劝我说转去RoR。
  3. Foursquare (Scala):承接这上一个说,Scala是运行在JVM的语言,继承了Java的优良特性,同时有许多改进,FS用的是Lift这个框架。
  4. 人人网 (Java):人人网一开始应该使用的Structs,后来肯定深度的Hack了Structs。Java做网络开发的缺点在于,成本太高。先不说JVM有多消耗内存,Java在开发效率(注意不是执行效率)要低于PHP, Ruby和Python。而且「Java系」习惯铺一个很大的摊子。所以Java主要运用在企业级别的应用,特别是Java对于Threading的控制。
  5. Stackoverflow (.NET):.NET的初创公司太少了,SO比较奇葩一些。.NET成本高,不仅是开发成本,而且维护成本也高。Windows的服务器很贵,而且用起来不如Linux放心。
  6. 豆瓣 (Python):豆瓣用Python应该是阿北自己习惯咯,当时还没有Django,所以用的是Quixote。Python现在在YC-Funded的公司中很流行,甚至有超过Ruby。原因我觉得一方面是Python在大学中很流行(相比Ruby和PHP就不行了,我们大学甚至连PHP都不教,不认为它是一门语言),大学生毕业之后创业,自然选择熟悉的语言。Python的Framework选择也很多,包括Django, Web.py, Cherry.py, Pylon等等。
主流的就这几种(Scala算不上主流还),还有一些不是很主流的,比如Lua, Erlang, Haskell,主要是functional language,也会有很多有个性的公司在用。然后听说豆瓣说有用Node.js的Socket.io,具体我就不知道了,要豆瓣的同学来回答。 我是搞java的, 可是最近玩wordpress,所以有点感悟。
  其实很多人对比java和PHP,很多人都说java慢、重,本来不觉得的。后来我有点感悟了。其实人们都把PHP这门脚本语言和JSP这个SCRIPTLET做比较了。而不是PHP和java比较。


  在这里假定学习时间是1年的话,搞PHP的同学比起搞java的同学做出来的东西可能更多一点了~所以,从学习曲线来讲, php就像剑法招式,java就像内功,一开始,php比较容易有成就。
   到了2年工作经验的PHP同学和java同学比较,就发现原来java有模板引擎技术,velocity,sitemesh等,可以完全不用JSP的。会感觉PHP的优势降低了,而java mvc比起php代码确实是整洁很多很多~ 这时候,PHP和java各有千秋~

  最后2位同学都好几年工作经验了(假定还是程序员,没有转行^_^),具体php我没深入了解, 但是当项目巨大,需要做数据分析,数据挖掘,爬虫搜索引擎等重大项目的时候,java的优势就越来愈明显起来了。

   最后说说服务器性能问题。这个不得不承认,PHP的服务器(apache或者nginx)比起tomcat,resin是轻量很多的,可能jetty能稍微好一点,但还是比不上PHP的解析器。 从语言层面来讲是肯定适用的,甚至来说大部分高级语言都能做出一个像样的SNS。

存在即合理,PHP、Python和Ruby等动态语言在SNS和大量WEB2.0项目中流行肯定是有原因的。

一般来说大部分项目初创阶段都会选择成本最低,效率最高的手段打磨出产品原型,尽快发布上线以获得及时的用户反馈情况来论证项目模式的可行性,这个阶段看重 起步快、开发快、迭代快。
当产品上线运营并在获得一定成功过后,一般就会倾向于 运行稳定、性能高、扩展方便,这个时候就要具体项目具体分析了。如果当前的技术体系可以满足项目的发展需求,那这种情况最好,不需要对技术架构做大的变动(我觉得FB算这一种,他们大部分的上层应用还是PHP,而且在这种背景下他们才搞出了HIPHOP和HHVM)。但是如果之前的技术体系无法支撑可遇见地规模化发展,那变更技术体系便势在必行了(比如淘宝)。

一个大型项目选择技术体系的时候(没有历史技术包袱的情况下),语言本身的特性并不是最重要的,还要优先考虑到成本(不同的技术体系对服务器软硬件成本影响是很大的,特别像.NET这种土豪才敢用的体系一般的SNS这种前期超低现金流的项目是不敢随便上的,不同技术体系的工资差距也很大的,说到这里为广大PHPer抹把泪)、团队规模(3个人的团队你要用J2EE何必呢)、开发效率(SNS这种项目一般前期是需要很快迭代出功能原型的,动态语言的开发效率和部署效率一般来说是高于静态语言的)、招聘难易度等因素。

我是PHP的重度使用者,也是Python狂热粉丝,曾经也做过好几个J2SE和J2EE的项目,现在业余时间都在琢磨Golang。还是那句话,语言没有优劣,只有适不适合。 此事跟语言无关。 市场不是问题。问题在于成本。 java最大的问题在于它太“重”,对硬件的要求太高。用来做SNS产品,硬件投入是非常巨大的。校内网早期的时候效率问题非常明显,当时的开心网用php实现,运行效率上差距非常大,这个在后来被千橡收购以后有所改善。
PHP这种语言的好处在于你所会遇到的问题基本都有人遇到过了,而且有非常漂亮的解决方案,最重要的是它们是免费的!可是用到Java的话,涉及到大规模分布式的解决方案,都是投入要求非常巨大的,小团队承受不起。

当然,如果你有钱砸,用什么语言都不是问题,大规模网站用java也许会更稳定,可控性更强,但是对于创业公司来说,PHP, Python, Ruby都是更好的选择。 是跟风的结果吧,看到做SNS的Facebook火了,大家做SNS就都选PHP了,看到做问答的Quora火了,做问答的就基本都选用Python了,这直接造成了Python成为2010年的年度编程语言,一度排名到了前五,但是随着Quora变冷,Python的热度已经降下来了。 并不都是用 PHP,除了 PHP 之外相信用 Python 和 Ruby 的也不在少数。比较有名的如 Twitter 用的是 Ruby,知乎和豆瓣等用的是 Python。

Java 和 .NET 面临的问题很可能是成本过高,特别是 .NET,因为 ASP.net 受到微软的专利保护,很难完全在 Mono 下实现,这使得其很难在 Linux 下使用。而 Windows 的服务器,且不考虑其软件的授权成本,Windows 所消耗的基本资源也要远高于 Linux,因此同样性能的服务器用 Linux 做网站能够承受的负载要大的多。所以从成本上考虑 .NET 不是特别适合于做大型网站。可以很明显的看到,在全球访问量排名前列的网站,除了微软自己的,没有什么是用 .NET 做的,这是一个很明显的证据。

至于 Java,我个人不是特别了解,因此暂不做过多评论。不过个人感觉 Java 的内存消耗相当惊人。 淘宝用的是java 还有一个重要的,就是学习成本吧,会什么用什么得了,互联网讲究的是快速,什么熟用什么
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn