今天這篇文章不黑也不吹,就和大家嘮嘮一些我的所見及所聞,如有不妥之處請各位看官見諒。
從我之前的一些博客文章看,大家也能知道之前是一個微軟技術棧的程序員,也就是主要C#,.net MVC的東東,后來換了工作,算是國內的一二線的一些互聯(lián)網(wǎng)公司,所以在技術方向和儲備上都有一些調整,開發(fā)語言也慢慢跳出微軟技術棧,工作中使用了其他的開源開發(fā)語言,新項目基本是開源語言,框架也使用了不少,所以就.net 和 類java一樣的開源語言框架都有一定的了解,今天有時間就談談為什么好多公司的開發(fā)語言慢慢從C#變成了JAVA了。
這個因素其實會占很大的比重,小的公司初始的技術框架選擇都是由架構師確定的,后來就很少改變了,公司大了之后,引入CTO,CTO肯定不會就具體的框架和模塊發(fā)號施令,更多的是在一個全局的角度去看公司現(xiàn)有的一些核心系統(tǒng),比如商城系統(tǒng)的訂單及數(shù)據(jù)中心的日志數(shù)據(jù)系統(tǒng)這些宏達的模塊。
在公司架構來看,每一個項目都是部門級別的,最后不太可能每個公司每個部門有不同的開發(fā)語言,自設鴻溝,核心系統(tǒng)之間語言和通信肯定是相同相似的。
當然我們的職能部門,如OA系統(tǒng),運營系統(tǒng),更多的是給公司內部人員或者職能人員使用,可以使用另一種語言,因為這兩套系統(tǒng)基本在核心系統(tǒng)之外,不太需要和其他系統(tǒng)聯(lián)系起來,最簡單的我們想不到公司數(shù)據(jù)平臺接入OA系統(tǒng)有什么戰(zhàn)略意義。
于是問題來了為什么架構師和CTO會選JAVA作為第一語言呢?
總結而來就是 CTO架構師過去的技術經(jīng)驗基本決定了公司技術的選型,在架構師CTO這個圈子,大家都在用JAVA順勢而為。
首先一個發(fā)展的比較好的公司或者成長經(jīng)歷了擴張的公司,都會衍生出好幾個核心系統(tǒng),而不是簡單的一套三層架構搞定的。
多個系統(tǒng)在之后會經(jīng)歷SOA等服務化的分割,然后需要通信,需要事務管理,需要日志監(jiān)控,需要異步處理,然后在網(wǎng)上一搜,發(fā)現(xiàn)基本每個方向的優(yōu)秀解決方案都是有java的影子,或多或少會影響我們的選型,單就RPC框架來說開源生態(tài)就有好幾種,并且背后的推手都是雅虎,google,facebook這樣的一等一的互聯(lián)網(wǎng)公司,但是.net背后基本也就是互聯(lián)網(wǎng)能力不夠的微軟和算不上2線的stackoverflow了吧。
生態(tài)大家也都知道就是mysql+linux+tomcat 對抗 sqlserver+windows+iis,微軟收費大家知道,跨平臺這件事java完勝,最后發(fā)現(xiàn)搭建一套虛擬機集群linux是多么的順手,一套win的虛擬機集群即傷財又傷神。
總結:框架開源語言豐富,并且好多框架背后都有facebook,google這樣的巨頭做推手,.net的后盾就少很多。linux在虛擬化這件事基本完勝win,高昂的授權費如果有上千臺服務器的話,這將是一大比費用。
就是說不同圈子社區(qū)對于新技術的敏感性,由于開源社區(qū)受眾眾多,一個新概念的出現(xiàn),開源社區(qū)就會如雨后春筍般出現(xiàn)文章及概念或者框架DEMO了,微軟社區(qū)除了官方的推進,其余都屬于打醬油,而且微軟主要精力基本在他的AZure上了。
以炒了一年多的微服務,兩年多的大數(shù)據(jù)為例,我們已經(jīng)將大數(shù)據(jù)用在了生產環(huán)境中,docker也在測試中,這些激進的想法和實踐在.net方向上肯定很難這么快推進吧。
微服務有spring boot等概念,先不說效果怎么樣,起碼社區(qū)在推進,但是基本沒有聽過微軟針對于微服務有什么新框架出來。
總結來說,不黑不吹,過去兩年公司和項目的需要,自己學習了java web,spring這一套,研究了hadoop,hive的大數(shù)據(jù)框架,正在學docker,正式環(huán)境嘗試前后端分離快速開發(fā)h5界面,這些嘗試在之前的經(jīng)歷中都是沒有的,可能是隨著工作經(jīng)驗增長,能力有所提高就比較自信敢在生產環(huán)境嘗試,之前也是受限于.net的系統(tǒng)本身業(yè)務方向原因,更多的經(jīng)歷耗費在了業(yè)務上,而不是處理技術問題吧。
相信微軟在解決跨平臺這件事,社區(qū)積累出現(xiàn)優(yōu)秀框架,整個微軟技術將會更加優(yōu)秀。
聯(lián)系客服