通常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. Linux 求文件交集 差集等

    使用comm命令 假设两个文件FILE1和FILE2用集合A和B表示,FILE1内容如下: a b c e d a FILE2内容如下: c d a c 基本上有两个方法,一个是comm命令,一个是g ...

  2. 袭击Mercurial SCM(HG)

    这个叫水银的源代码管理工具尽管默默无闻,但还是得到了非常多团队的使用. 为了迎合某些团队的须要,我们也要用它来管理我们的代码. 今天的任务是先袭击学习.磨刀不误砍柴工. 对工具的掌握越快.工作的效率就 ...

  3. DataGridView中添加CheckBox列用于选择行

    DataGridView中添加CheckBox列用于选择行 1,编辑DataGridView,添加一列 CheckBox ,Name 赋值为 "select",如下图: 2,取消 ...

  4. 使用before、after伪类制作三角形

    使用before.after伪类实现三角形的制作,不需要再为三角形增加不必要的DOM元素,影响阅读. <!DOCTYPE html><html><head>    ...

  5. 【经验谈】XmlSerializer的坑

    XmlSerializer我想现在用的人可能不多了,大家都在用Json.我现在所在的公司依然在用,所以发现了这个坑.当然这个坑存在很久了只是没用过所以才发现. 事情是这样的,测试那边说系统偶尔会报找不 ...

  6. CSS基础(六):浮动深入

    参考了<CSS彻底设计研究>的文章,说的很不错,所以拿来做笔记. 浮动 在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素边界:而在竖直方向和兄弟元素依次排列,不能并排.使用浮 ...

  7. 15个实用的CSS在线实例教程

    前端技术可以说是必须学习的一个技术,现在做网站都需要懂DIV.CSS,在国内很多企业招网页设计师都要求会写基本的前端代码,所以前端技术是 必须了解的,对网页设计师本身也有帮助,今天向大家推荐一些不错的 ...

  8. Android中使用自身携带的Junit新建一个测试工程

    1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ ...

  9. Logcat 不显示日志的另一个原因. 跟cocos2dx关系不大.

    在Android真机调试时,如果在eclipse中看不到LogCat信息,提示是: $ adb logcat info: log device is empty! 原因是系统默认关闭了log,需要将其 ...

  10. 介绍cms

    在这篇文章中,我们先来定义下什么是CMS(Content Management System)系统,在网站中它是如何帮你来变更内容的. 最后我将展示如何登录Umbraco系统. 简单来说CMS是一个系 ...