05.22 脫離微軟,.Net core更美好

大家好,我是如鵬網的楊中科。我今天想跟大家分享的這個話題叫做《脫離微軟,.Net core更美好》。看起來這個標題好像挺顛覆性的,其實這是一個很實在的問題,因此我給這個話題起了另外一個英文的名字《.Net core without Microsoft》。

大家思考一下,在Java社區的生態體系,無論是對於Java的貢獻獻最大的還是Java的體系中獲益最大的廠商,反而不是Java的“親爹”——Oracle,而是像谷歌、IBM等這樣一些公司。甚至像Python、PHP等這樣的語言都沒有一個“親爹”,而是以開源形式在運作。

既然對於Java貢獻最大的以及從Java獲益最多的不是他的“親爹”Oracle,那麼.Net Core同樣的發展路徑也應該是如此的。我相信各位對於微軟的原罪其實是有一定的認識的。這麼多年來,微軟的態度就是“我做任何的技術都是為了賣windows、都是為了賣office”。當然最近幾年,微軟的態度已經轉變很多了,更加的開放,現在已經好很多了。但是一個人、一個公司的習慣是很難去改的,微軟最近推出了很多技術,變成以賣Azure為目的了。

雖然說微軟的態度已經是非常開放了,微軟的這些新技術幾乎都可以跑在Linux系統下,也可以脫離Azure雲運行。也就是說我們也可以自己搭建這個雲環境去運行它的這些新技術,但是無論是從它的文檔裡邊、它的官方介紹裡邊,或者是從技術成熟度上來講,微軟還是有意無意的偏向於賣Azure、Windows、Office等東西。

因此從社區角度來講,我們要儘可能的像Java和Oracle的剝離關係一樣,去剝離.Net core和微軟的關係。Oracle這個親爹推出的NetBeans、GlassFish、JSF不受待見,反而社區中則在流行Eclipse、IDEA、Tomcat、Spring MVC這些“野種”,這就是社區的力量。

這是我的一個論斷,那麼具體到詳細的這個使用上來講,我認為大家應該去大膽去拋棄整體微軟技術的這樣一套方案(也就是“微軟全家桶”),就是說不要什麼東西都用微軟的。現在是一個混合架構的時代,一個複雜的平臺都不是隻用一個語言。我發現很多的這個開源項目都有.net版的,比如說這個分佈式日誌,有.net版的ExceptionLess了;最近也有看社區裡邊很多朋友說“咱們能不能也出一個.net版本的分庫分表的組件”。我認為:現在最成熟、應用最廣的這個分佈式日誌系統就是ELK(Elastic Search+Logstash/XBeats+Kibana)?當然ELK是用Java開發的,難道我們就因為他是Java開發的,我們就不用他,而是自己開發一套.Net班的分佈式日誌系統?要知道.Net程序是可以輕鬆和ELK結合到一起使用的。

據我瞭解,目前還沒有一個比較成熟的.Net版的“分庫分表(Sharding)”組件。目前最成熟的“分庫分表”組件是用Java開發的MyCat。因為MyCat走的是標準的MySQL通訊協議,所以無論是Java還是.Net、Python、PHP都可以連接MyCat實現分庫分表。因此沒必要再去找一個.Net版的“分庫分表(Sharding)”組件,不需要必須整個系統都得用微軟的整個體系。

比如整個系統裡面分為8個模塊,其中三個組件用.net東西最合適,那這3個模塊就用.Net。比如這系統裡邊通過Identity server來做權限管理是最合適的,那我就用Identity server,但理由絕對不是說因為Identity server是使用.Net開發的,而是因為在項目裡邊Identity server是最合適的。如果要做分庫分表,可能就是用MyCat做來合作就合適,那並不是因為MyCat是用Java開發的,我就拒絕他。

同樣一個道理,Redis是用C開發的,難道咱們就要開發一個.net版的Redis嗎?沒那個必要!這是我的一個觀點,僅供大家這個參考,所以說選擇最合適的技術組合來這個搭配你整個架構。特別是現在微服務架構的流行,我完全可以系統中的20個微服務,其中五個微服務用Java合適,我就用Java,另外8個微服務用.Net合適我就用.Net。每個模塊都是最合適的語言,讓他來做最合適的點,那麼整個公司的這個整個這個團隊也可以更加的多樣化。

我也更倡導這種混合架構的開發。騰訊、淘寶、京東等這些公司都是用多種技術實現的,是混合架構開發。騰訊、網易內部一些系統也是在用.Net Core開發。所以說還是一個開放的心態來做這件事情,這是我的分享的觀點給大家。可能我說的都是錯的,僅供大家參考。

謝謝各位社區裡的朋友,這是我的一個分享,我是如鵬網的楊中科。


分享到:


相關文章: