创业型互联网公司应该选择PHP, JavaEE还是.NET技术路线?

通常JavaEE和.NET被定义为构建大型在线系统,因为其支持面向对象设计,异步通讯,MVC等都相对比较完善,而PHP通常用于构建比较轻量的业务,例如SNS服务。因为实施速度快,工程师社区规模大,开源

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

 通常JavaEE和.NET被定义为构建大型在线系统,因为其支持面向对象设计,异步通讯,MVC等都相对比较完善,而PHP通常用于构建比较轻量的业务,例如SNS服务。  

因为实施速度快,工程师社区规模大,开源的方案比较多而且成熟,如果初创企业是帮助建站,在线广告或企业宣传网站建设,或者其他中小型应用,如果恰巧有成熟第三方开源架构可以选择,那么PHP是不错的选择。就好象为企业建站,会发现Wordpress, Joomla, Durpal都是不错的选择,而且非常富有生产力。  
如果业务系统都要自己来搭建,并实现相对复杂的功能,未来也可能会向着比较大规模演进,这个时候不妨考虑一下JavaEE或.NET。不过对于初创公司而言,选择空间并不多,而且不能选择错误,否则创业的钱就不够了。  

在JavaEE和.NET中如果要进行选择,往往人们会认为.NET存在这样几点先天不足,  
1. ViewState传递的数据量过大,.NET项目比较臃肿。而JavaEE更轻量。  
2. .NET只能构建于Windows操作系统,而JavaEE构建于Linux成本更低。  
3. .NET支持的开源框架比较少,而JavaEE支持的开源框架更多。  

但是如果结合创业型公司而言,那么往往思考就没有那么纯粹的技术化思维了。创业公司缺少前期积累,事业和员工都是崭新的,那么还要进行业务模式的论证,说服潜在用户达成合约,其挑战往往高过成熟公司。选择一个总体拥有成本有效的方式就非常重要,而不仅仅抽象的以技术思维判断那种技术路线更加高深或者时髦。  


这里.NET具有一些更加适合创业型公司的特性,  

1. 创业型公司技术团队需要从头搭建,.NET的学习曲线比较好,上手快,在创业初期更有助于帮助创业者节省成本。  
2. Windows虽然需要付费购买版权,不过如果安装Windows Server 2008 标准版简包,其实价格通常也就几千块钱。这个成本很快会发现,因为工程师熟悉Windows所在系统开发及运维上,成本还是很有竞争力的。一个Linux工程师解决技术问题用上几天甚至几周来适应某个开源而缺乏技术支持的软件包和配置,这个成本有的时候并不是一次性的,随着系统升级会发现工程师成本是很高的。特别是当工程师发生离职转岗的时候,这个成本更是高的惊人。完全可以冲抵Windows版权成本。  
3. .NET没有很多可选的开源架构,ASP.NET MVC 2到现在也就是一个View Engine,即便到了MVC 3之后,也只有有数的几个View Engine,而最后使用的其实就是Razor。这可能对与企业是一个限制,但是对于创业企业而言,这恰恰保证了工程师队伍的技术背景的整齐,并减少了很多技术领域的磨合。如果看到Struts 1到Struts 2之间的差异,Spring 2到Spring 3之间的新特性差异,就会知道工程师之间具有共同的语言和默契是多么重要。JavaEE有很多非常优秀的开源架构,还有Hibernate, Lucene, iBatis, Jax-WS等,不过这些丰富的开源架构也可能造成工程师在一起工作,首先要学习和熟悉这个创业公司要用什么技术架构。这个磨合成本对于初创公司,特别是出于商业模式验证阶段的公司而言,还是蛮高的。值得一提的是,在使用Java开发Jax-WS的Web Services应用的时候,序列化以及封装对象的复杂性往往造成工程师调试的困难,而.NET的WCF仅仅需要很简单的配置就可以完成Jax-WS下复杂的工作。这都将节省企业主很多创业资金。 
4. .NET发展到ASP.NET MVC之后,对于jQuery, Joomla, Durpal等开源第三方应用的支持有了很大进步。jQuery已经成为ASP.NET MVC中的一部分。这也使得ASP.NET MVC下的开发可以引入更多开源社区不错的成果。开发更加富有生产力。  
5. Windows的安全性往往受到诟病。不够如果部署Windows Server 2008 64位之后,设置必要的安全策略以及安装安全软件,那么能够被攻击和感染的几率将非常低。而SQL注入的问题其实在各个系统都存在,不管PHP, JavaEE或者.NET,这是需要在软件设计的层面进行设计和解决的。  
6. 支持.NET的商业组件厂商还是蛮多的,也就是说,出现问题可以找到人来付费为你提供技术支持。这样在一些情况下,就要比“我免费给你开源的软件,用得好,Donate一罐啤酒钱给我”的模式支持更快速而质量整齐。  
7. Visual Studio和Eclipse都能支持智能提示,语法高亮显示等功能,不过开发过程中会看到,Visual Studio这个IDE在很多细节上确实能帮助工程师节省大笔时间,特别是项目比较大,需要记忆的变量和方法名称很多的时候,这个优势更加明显。  
8. 的确微软的TFS虽然和Visual Studio集成紧密,但是对于初创公司而言,部署成本和维护成本显然过高了。而SourceSafe也不够强。那么在Visual Studio中集成AnkhSVN这样的插件,就可以方便的使用Subversion进行代码管理。而VisualSVN Server和AnkhSVN都是免费的。github也有相应的开源免费插件可以用。这样都将有助于成本有效。  
9. ViewState在Web Form开发的时候,的确会造成数据传输量大,系统负载大的问题。如果采用ASP.NET MVC的方式进行开发,那么就不一样了,传输的数据量和JavaEE或PHP下已经相差不大,而ViewData和TempData的引入,使得MVC的数据传输实现起来更加简单而高效。  

从上面几点可以看到,貌似Windows环境下的开发和实施成本比较高,但是将工程师的成本计算在内。这个成本就很可能倒置过来了,Windows环境下的.NET会更加适合企业创业阶段来选择。  

事实上,采用Windows系统下的.NET进行系统搭建的成功案例有很多,  
StackOverFlow.com,全球最大技术问答社区  
ctrip.com,携程网,在线商旅服务企业之一  
Expedia.com,全球最大订票与订房企业  
Dianping.com,大众点评网,在线点评网站  

创业公司很少有需求搭建几十台乃至数百台服务器。我们可以做一个类比,从这里可以看到基于.NET可以承载的业务量也是蛮大的。  
StackOverFlow.com访问量每月9,500万PV,其服务器构成  

10 Dell R610 IIS web servers (3 dedicated to Stack Overflow):  

1x Intel Xeon Processor E5640 @ 2.66 GHz Quad Core with 8 threads  

16 GB RAM  

Windows Server 2008 R2  

2 Dell R710 database servers:  

2x Intel Xeon Processor X5680 @ 3.33 GHz  

64 GB RAM  

8 spindles  

SQL Server 2008 R2  

2 Dell R610 HAProxy servers:  

1x Intel Xeon Processor E5640 @ 2.66 GHz  

4 GB RAM  

Ubuntu Server  

2 Dell R610 Redis servers:  

2x Intel Xeon Processor E5640 @ 2.66 GHz  

16 GB RAM  

CentOS  

还有其他一些Linux服务器用于Nagios,日志,备份,路由等等。  

具体资料可以参考,  

http://highscalability.com/blog/2011/3/3/stack-overflow-architecture-update-now-at-95-million-page-vi.html

当然,要支持这样的规模,也是需要很多的静态化,动静分离等设计上的考虑的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120797.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于CommandType.StoredProcedure输出参数访问问题

    关于CommandType.StoredProcedure输出参数访问问题MSDN解释:当您将 Command 对象用于存储过程时,可以将 Command 对象的 CommandType 属性设置为 StoredProcedure。当 CommandType 为 StoredProcedure 时,可以使用 Command 的 Parameters 属性来访问输入及输出参数和返回值。无论调用哪一个 Execute 方法,都可以访问 Parameters 属性。但是,

    2022年7月26日
    6
  • scala中map与flatMap浅析

    scala中map与flatMap浅析在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合。由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referentialtransparency)的和没有副作用(NoSideEffect)。任何一种函数式语言中,都有map函数与fa

    2022年5月4日
    60
  • mysql添加唯一索引语句_mysql修改唯一索引语句

    mysql添加唯一索引语句_mysql修改唯一索引语句查看索引showindexfrom数据库表名altertable数据库addindex索引名称(数据库字段名称)PRIMARYKEY(主键索引)ALTERTABLE`table_name`ADDPRIMARYKEY(`column`)UNIQUE(唯一索引)ALTERTABLE`table_name`ADDUNIQUE(`column`)INDEX(普…

    2022年9月20日
    0
  • MyEclipse安装SVN插件[通俗易懂]

    MyEclipse安装SVN插件[通俗易懂]1.下载SVN插件下载地址:链接:https://pan.baidu.com/s/1SCB9U9VYUH9Rh9NzmzRERA提取码:9e9e下载完解压即可2.在MyEclipse中安装SVN插件1.找到MyEclipse在安装目录下的dropins文件夹2.在driopins文件夹内新建一个SVN文件夹3.将解压文件内的这两个文件夹复制到driopins文件夹下的SV…

    2022年7月21日
    9
  • [java面试题]最长的回文字符串中出现确定[通俗易懂]

    [java面试题]最长的回文字符串中出现确定

    2022年1月16日
    51
  • Python中.format()常见的用法

    Python中.format()常见的用法format()格式化输出format():把传统的%替换为{}来实现格式化输出format()常见的用法:其实就是format()后面的内容,填入大括号中(可以按位置,或者按变量)'

    2022年7月3日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号