C# 在騰訊的發展(做者是微軟連續10年的MVP)

本文首發個人微信公衆號"dotnet跨平臺", 內容獲得你們熱烈的歡迎,全文從新發布在博客,歡迎轉載,請註明出處.html

.NET 主要的開發語言是 C# , .NET 平臺泛指遵循ECMA 334 C#和 ECMA 335 CLI 標準的開發平臺 ,包括微軟自行開發的.NET 平臺和 開源實現的Mono 以及 微軟最新開發的.NET Core。 從2007年加入公司自今一直在使用C#, 對這門語言在 騰訊的使用狀況有大概的瞭解,最近有空整理了一下相關的狀況,破除江湖傳言 」國內互聯網公司都不用C# 」。java

一、2003 ~ 2007 年linux

微軟在2002年發佈.NET 1.0,2003年發佈 .NET 1.1。因爲.NET的開發效率高,2003年開始騰訊的OA系統也開始採用.NET進行開發,早期的OA系統是使用cgi來開發的,2007年我接手OA的單點登陸系統時裏面還有cgi 的兼容性代碼,那個cgi的兼容性代碼還存在着內存泄漏問題,一直到2013年 OA登陸的重構 才把它移除。2003年OA開發團隊開始迅速的從幾我的發展到2006年的30多人規模,公司的快速發展也要找更多的開發人員,在toby的介紹下2007年加入了騰訊,我從加入公司開始就一直負責騰訊OA基礎服務,簡稱TOF的開發運營工做。docker

2003到2007 這幾年是.NET在騰訊快速發展的幾年, 最先的OA工做流-品高工做流產品也是用.NET開發的,2004年引入並作了二次定製性開發, 我到公司後也接手維護過這一個工做流引擎,品高公司再也不維護這一個版本, 2008年引入K2 工做流引擎替代它。 公司的門戶www.oa.com 曾經是使用微軟的SharePoint 2003系統二次開發而成,他是由toby 負責的,他是微軟2005~2007年的MVP,也是在微軟的社區活動上認識了toby,後來也在他的引薦下加入騰訊,工做到如今。當年不只僅OA是用.NET開發的,公司內不少的業務運營系統也是用.NET開發的,開發的初版的TAPD 也是用.NET開發的,在我到公司以前他們組建瞭如今的研發管理部用PHP重寫了TAPD,這也就開始了PHP替代asp.net的進程 ,還有不少系統,財經/HR/SCM/公司論壇BBS/ITIL/BOSS等等的系統,能夠說這是.NET在騰訊的頂峯時期。從2007年開始日後的時間裏asp.net開發的系統逐步使用Python/PHP等替換,幸運的是,騰訊支付業務(前身財付通)的清算,風控等業務從創立至今還在使用C#,最近我有幸轉崗到了支付清算業務,繼續發揮光大C# 。c#

二、2007 ~ 2014 年安全

2007 ~ 2014年這個時間段的劃分,正是按照微軟的鮑爾默時期,微軟丟掉互聯網和移動互聯網時期。 2007年初加入騰訊時,和toby一塊兒前往微軟總部參加微軟MVP 全球峯會,比爾蓋茨告別CEO,CEO交給了鮑爾默,一個幹銷售的CEO一心想着賺更多錢的,死抱着Windows不放,致使互聯網公司都排斥使用Windows,.NET 有着天生的跨平臺理想,卻始終沒有實現,致使了不少人認爲.NET只能跑在Windows上,觀念一旦造成就很難改變,在此期間開源的.NET 實現Mono項目卻在移動互聯網領域找到了落腳點, 基於Mono的商業項目Xamarin和Unity 分別在移動開發和遊戲開發領域佔據重要地位。微信

2007年初我加入騰訊,接手民哥維護騰訊OA基礎服務TOF,這一干就是9年,在這期間有不少同事出去創業了,民哥帶領了一班兄弟去開創了公司的內網安全領域,其間開發的安全運營平臺也是用.NET 開發,2013年開始也逐步用C++替代.NET開發了。公司的業務剩下使用.NET開發的項目已經不是不少,掰着指頭就能夠數得過來,目前還有財經/行政/HR/財付通/互娛一些運營系統仍是使用.NET開發。若是隻能部署在Windows平臺上,這些系統早晚要被替換掉。所以,我在作騰訊OA基礎服務TOF的維護的同時,業餘時間在研究Mono跨平臺開發,經過博客,微搏宣傳Mono項目,並在實踐中進行實踐。網絡

這個跨度的時間有7年,我也一直在進行騰訊OA基礎服務TOF的升級改造工做,在2014年完成了最完整的一次重構,支撐起公司內網API調用千萬級別的蛻變,具體可看個人文章介紹《先定個小目標, 使用C# 開發的千萬級應用》。公司其餘使用.NET開發的系統也在不斷的演化,得以繼續生存下去,固然也有不少的同窗再也不使用C#,轉而使用其餘語言來重寫系統。2013年公司code平臺第一次推出了騰訊年度代碼報告:http://code.oa.com/v2/report/2013 ,開發語言前10 中不見C#的身影,我尚未運營公衆號,這個只有內部數據,須要看具體內容請加入鵝廠。架構

clip_image002

2014年的騰訊年度報告http://code.oa.com/v2/report/2014 〈2014騰訊代碼報告出爐 C#代碼量增加一倍〉奇蹟般的c# 排到了第七,增加了1700W行,這是什麼魔力讓他增加如此迅速,開發者也增加到了1563人。

clip_image004

在.NET應用被其餘語言不斷替代的狀況下,2014年c# 的代碼卻發出了洪荒之力,主角就是基於Mono平臺的Unity 遊戲開發,是手遊讓C# 爆發了,Unity5.1版本後全力支持VR開發,從此的VR/AR領域C# 還會繼續發揚光大。框架

三、2014 ~ 將來

2014 年更換了CEO,薩特亞·納德拉接任CEO,正式開始推行開放策略,開始擁抱Linux,開源,.NET Core持續2年的開發在2016年6月27日發佈RTM,在這兩年時間內微軟轉型也很成功,微軟股價走出了一個完美的大底,如今剛剛開始上漲。

微軟在這兩年時間內也完成了對Mono的開發商Xamarin 的收購,經過成立.NET基金會,效仿Apache基金會的運做來推進.NET平臺的發展,目前已經吸取Unity,RedHat,samsung等業內企業加入。微軟也完成了對.NET 的平臺演進規劃,下面這張圖是它的將來全貌:

clip_image006

2014年C# 在騰訊的發展藉助於手遊的發展使出洪荒之力,2014年的發展也很好,成爲最有潛力的開發語言,咱們來看下2015年騰訊年度代碼報告http://code.oa.com/v2/report/2015

clip_image008

clip_image010

使用c# 的人數從1563 上升到2068,代碼增加也是千萬級,據我所知這些增加都是Unity所帶來的,在新的VR 領域還會看到C#的增加,在傳統的服務端應用開發方面還在繼續降低,形勢不樂觀。隨着微軟發佈.NET Core 1.0, 在Windows、OS X和Linux系統上可用了。.NET Core是一個跨平臺,開源代碼,模塊化的.NET平臺,能夠用來建立現代網絡應用,微服務,庫和控制檯應用程序。.NET Core如今在Red Hat Enterprise Linux和OpenShift上是可用的。另外,.NET Core徹底被Red Hat支持並經過微軟和Red Hat之間的集成混合支持合做關係進行擴展。

這是自.NET創始以來最大的轉變而且會在下一個十年引領.NET的發展。咱們已經以知足當今世界的須要爲目標重建了.NET基礎: 高度分佈式的雲應用,微服務和容器。.NET框架和.NET核心以及Xamarin 都是微軟重要的產品,將繼續分別在Windows、Linux跨平臺雲計算和跨平臺移動領域發展。這個.NET框架和傳統的ASP.NET將繼續與你現有的工做負載相關。你能夠共享代碼而且在整個.NET體系中重用你的技能,因此你能夠決定用什麼而且何時用,包括運用了Xamarin的移動應用程序。

微軟在.Net Core 1.0 公告 列出了.NET Core 使用狀況,遊戲《崛起時代(Age of Ascent)》的開發商 Illyriad Games,報道稱在Azure Service Fabric上使用了ASP.NET Core以後,性能提高了10倍。網易,一家中國領先的IT公司,爲內容、遊戲、社交媒體、通訊和商業提供在線服務,須要在不斷變化的遊戲空間保持領先優點也選擇了.NET Core爲後臺服務。相比之前的java後臺架構:「.NET Core縮短了咱們發佈週期的20%並節約了30%的工程資源成本」。當談到吞吐量改進和成本節約時說到:「另外,它使在生產方面的虛擬機數量成半減小成爲可能」。

總結

C#語言經歷10幾年的發展,已經從1.0發展到7.0,可是.NET平臺從新迴歸跨平臺的設計初衷,版本號從新迴歸到1.0,從新出發。C#語言在騰訊的使用狀況也經歷了高峯到低谷,咱們也要從新出發,我也轉崗到支付業務,經過和同事們一道努力進軍tlinux,docker。

http://www.cnblogs.com/shanyou/p/5915056.html#!comments

相關文章
相關標籤/搜索