创业型互联网公司应该选择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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [教程]使用Lite MP4 Tool专业制作MP4(AVC)视频格式 – 指导教程

    [教程]使用Lite MP4 Tool专业制作MP4(AVC)视频格式 – 指导教程LiteMP4Tool教程,详细教程,MP4教程

    2022年7月2日
    30
  • CBOW全称_skip的形式

    CBOW全称_skip的形式skip-gram结构是利用中间词预测邻近词cbow模型是利用上下文词预测中间词一、CBOW1、CBOW之所以叫连续词袋模型,是因为在每个窗口内它也不考虑词序信息,因为它是直接把上下文的词向量相加了,自然就损失了词序信息。CBOW抛弃了词序信息,指的就是在每个窗口内部上下文直接相加而没有考虑词序。2、CBOW过程简单介绍如下(实际算法会用到哈夫曼编码等降维技巧,这里仅以理解为目的简介基本原理):输入为C个V维的vector。其中C为上下文窗口的大小,V为原始编码空间的规模。例如,

    2022年9月6日
    5
  • 利用Python制作微信机器人(一)

    利用Python制作微信机器人(一)双十一时候,阿里云服务器打折。于是直接买了三年的阿里云服务器。自己也明白有一个云服务器说白了就是有一个公网IP+7*24h不关机的电脑。但买完服务器后,就不知道用这服务器来做点什么炫酷的事情了。这两天看到有某位海王做了个自动回复消息的机器人来给女朋友们回消息,是否可以用这个服务器来做一个自动回复消息的机器人。…

    2022年6月23日
    25
  • 程序发生崩溃dump文件_failed to create dump file

    程序发生崩溃dump文件_failed to create dump file之前在winxp和win7没有问题,用了win10就出问题了.解决办法:VirtualProtect函数使用VirtualProtectEx代替即可!所有代码如下:#ifndef__DUMP_H__#define__DUMP_H__#include<stdlib.h>#include<stdio.h>#include<ostream>#if…

    2022年9月12日
    2
  • java怎么删除数组中的某个元素_js数组删除元素的方法

    java怎么删除数组中的某个元素_js数组删除元素的方法问题在Java开发中,可能会碰到需要删除数组中某个元素的场景。解决方案Javaapi中,数组虽然是一个对象,但是其并没有提供add()或者remove()等操作元素的方法,要删除元素的话,可以通过将数组对象转换成List再进行remove(),这个方法今天不在这里展开,这里介绍的是另外一种方法,直接通过Java的操作对数组元素进行移除。流程如下:要删除一个数组中index位置的元素,使…

    2025年7月30日
    1
  • 数据库建模工具有哪些(uml类图工具)

          SybasePowerDesigner -一个高端数据建模工具。你可以下载一个45天试用版。ERWin -一个高端数据建模工具。可下载试用版。RationalRoseEnterprise -一个高端UML工具,恰如其分的数据库建模支持。可下载试用版。VisioProfessional -一个价格低廉的绘图工具,可用来生成数据模型、UML图等。企业版还支持针…

    2022年4月16日
    51

发表回复

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

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