C# 在騰訊的發展

来源:http://www.cnblogs.com/shanyou/archive/2016/09/28/5915056.html
-Advertisement-
Play Games

本文首發我的微信公眾號"dotnet跨平臺", 內容得到大家熱烈的歡迎,全文重新發佈在博客,歡迎轉載,請註明出處. .NET 主要的開發語言是 C# , .NET 平臺泛指遵循ECMA 334 C#和 ECMA 335 CLI 標準的開發平臺 ,包括微軟自行開發的.NET 平臺和 開源實現的Mono... ...


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

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# 還會繼續發揚光大。

3、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。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 命名空間:(記得引入ASPJPEGLib.dll) usingAspose.Words; 1.創建word模版,使用MergeFeild綁定數據 新建一個Word文檔,命名為Template.doc 打開Template.doc必須在菜單的"插入→文檔部件→域”找到MergeField並輸入相應的域 ...
  • Aspose.Cells導出excel,處理Datatable,下載地址編碼(中文),虛擬路徑&物理路徑 ...
  • ColorConsole htmlagilitypack.1.4.9.5 經測試效率比 CsQueryLaster 高 csvhelper Extend Devlib系列一套 itextsharp litedb log4net microsoft.bcl一套,.net4 await 用 MySql. ...
  • ADO.NET:數據訪問技術 就是將C#和MSSQL連接起來的一個紐帶 可以通過ADO.NET將記憶體中的臨時數據寫入到資料庫中也可以將資料庫中的數據提取到記憶體中供程式調用 所有數據訪問技術的基礎 連接資料庫基本格式:需要兩個類1、資料庫連接類 SqlConnection2、資料庫操作類 SqlCom ...
  • 添加引用InTheHand.Net.Personal.dll 首先創建一個藍牙類 然後就是搜索設備 藍牙的配對 客戶端 伺服器端 基本上就是這些吧! ...
  • 只是想簡單說下特性 - Attribute 【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5911289.html 目錄 特性簡介 使用特性 特性的參數 特性的目標 特性的常見用途 創建自定義的特性 使用反射訪問特性 特性簡介 使用特性 特性的參數 ...
  • 前段時間在改Bug打開一個project時,發生了一件奇怪的事,好好的一直不能載入solution底下的這個project,錯誤如下圖所示:大致的意思就是這個project的web server被配置成了IIS Express,但是當前URL被配置成local IIS web server。要想打開 ...
  • 背水一戰 Windows 10 之 控制項(彈出類): MessageDialog, ContentDialog ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...