首頁  >  文章  >  类库下载  >  C# 在騰訊的發展

C# 在騰訊的發展

高洛峰
高洛峰原創
2016-10-13 17:14:391483瀏覽

本文首發我的微信公眾號"dotnet跨平台", 內容得到大家熱烈的歡迎,全文重新發佈在博客,歡迎轉載,請註明出處.

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

1、2003 ~ 2007 年

微軟在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的開發與運作工作。

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# 。

2、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#的身影,我還沒有運營公眾號,這個只有內部數據,需要看具體內容請加入鵝廠。

C# 在騰訊的發展

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

C# 在騰訊的發展

在.NET應用被其他語言不斷替代的情況下,2014年c# 的代碼卻發出了洪荒之力,主角就是基於Mono平台的Unity 遊戲開發,是手遊讓C# 爆發了,Unity5. 1版後全力支援VR開發,今後的VR/AR領域C# 將持續發揚光大。

3、2014 ~ 未來

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

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

C# 在騰訊的發展

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

C# 在騰訊的發展

C# 在騰訊的發展

使用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。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 屬性存取器下一篇:C# 屬性存取器