創業型互聯網公司應該選擇PHP, JavaEE仍是.NET技術路線?


          一般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
固然,要支持這樣的規模,也是須要不少的靜態化,動靜分離等設計上的考慮的。
相關文章
相關標籤/搜索