通常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

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

创业型互联网公司应该选择PHP, JavaEE还是.NET技术路线?的更多相关文章

  1. 回复《我要阻止做java开发的男朋友去创业型公司工作吗?》园友问题

    真的非常开心能收到这么多园友的关心,看到这么多的回复顿感身边处处充满爱.也非常感谢大家踊跃的帮我出谋划策,小女子在此有礼了! 我先来回答一下性别的问题(前面已经暴露了……),我是前端程序媛.大三时和男 ...

  2. 我要阻止做java开发的男朋友去创业型公司工作吗?

    命这样的标题,我没有瞧不起创业型公司,我只是有点急了,因为男朋友今天晚上就要回复招聘公司了.我先来说说来由吧. 前段时间男朋友离职了,从毕业到现在在公司呆了2年多,因为资金不足导致他做的项目被迫停止了 ...

  3. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈?

    前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥 ...

  4. 孟岩:技术路线的选择重要但不具有决定性(什么是核心竞争力?是你独特的个性知识经验组合,正确的态度应该是着重于你要干的事情,然后认真把这件事情做好,然后融会贯通)good

    转自 http://blog.csdn.net/myan/article/details/3247071   孟岩 2008 年的文章,现在看来还是挺有启发, 送给大家,也送给自己. 最近微软在技术上 ...

  5. ITFriend创业败局(一):选择创业方向和寻找合伙人,创业失败的2个关键点

         这次创业惨淡收场,最主要的原因是没有选择一个合适的创业方向,没有找到合适的创业合伙人. 首先要说到创业方向,因为不同的创业方向需要组建不同的创业团队.我个人比较偏好,软件.网络.互联网等有一 ...

  6. 创业 CEO:如何选择投资人

    欢迎来到「创业 CEO」系列,在这个系列中,我们讨论一个创业者如何教会自己成为一位伟大的 CEO,因为历史上最伟大的创业公司,往往都是由这样的人在领导. AppWorks 成立至今,总共参与投资了 2 ...

  7. 【PM面试题】如果让你创业,你会选择什么?

    答案及理由 我会选择可穿戴设备 ,理由有三: 互联网与硬件的结合是未来的大势所趋,通过硬件来采集数据,而通过互联网或者移动互联网将这些设备连接起来,交换数据,让其形成流动的信息. 未来会从卖产品的阶段 ...

  8. INSPIRED启示录 读书笔记 - 第28章 创业型公司的产品管理

    产品设计方式 第一步:创业初期只设三个职位,产品经理.交互设计师和原型开发人员(职位可以兼任) 第二步:快速展开产品设计(高保真原型),邀请真实的目标用户验证产品原型,迭代修改 第三步:随着迭代的深入 ...

  9. 创业型 APP 如何筛选合适的推送平台

    对于中小型 App 开发团队来说,采用何种方式实现适时而精准的消息推送是一件矛盾的事.将相同内容推送给所有终端用户,担心打扰用户.引起用户反感:而个性化的分群推送,又因为团队人少.运营精力不足无法实现 ...

随机推荐

  1. Supervisor 的配置与使用

    环境:ubuntu 14.04 lts  http://supervisord.org/liunx 下有很多守护进程的工具,如 nohup,screen,supervisor 等,supervisor ...

  2. 降低屏幕亮度,减缓眼疲劳 (linux/windows/firefox/android)

    Linux 在Linux上自动调整屏幕亮度来保护眼睛 - 51CTO.COM -- 介绍了Camera和RedShift这两款工具 How to automatically dim your scre ...

  3. 面向.Net程序员的前端优化

    背景 作为web开发人员大家大多了解一些网站的性能优化方法,其实大部分方法都不复杂,例如针对前端js和css的压缩来减少请求大小,通过合并来减少请求次数.这里站在.Net后端程序员的角度来看一下如何最 ...

  4. worksteal thread pool

    worksteal的场景 对于一个线程池,每个线程有一个队列,想象这种场景,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,现象就是有的线程处于饥饿状态,而有的线程处于消化不良的状态 ...

  5. 条件注释判断IE浏览器

    最近在用jquery 2.0 才知道已不支持IE6/7/8 但又不想换回 jquery 1.X; 找了一资料发现条件注释可以解决这个问题 这个也像程序中的条件判断,先来介绍几个单词lt :Less t ...

  6. Netty http client 编写总结

    Apache http client 有两个问题,第一个是 apache http client 是阻塞式的读取 Http request, 异步读写网络数据性能更好些.第二个是当 client 到 ...

  7. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  8. 二十九、EFW框架开发的系统支持SaaS模式和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  9. struts2 using kindeditor upload pictures (including jmagic compressed images)

    Project uses a kindeditor3.4 UploadContentImgAction @SuppressWarnings("serial") @ParentPac ...

  10. css3背景颜色渐变

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...