1. 程式人生 > >預編譯框架,開發高效能應用

預編譯框架,開發高效能應用

微軟技術暨生態大會(Tech Summit),2018 年在上海世博中心召開。這是最後一次的 Tech Summit 了;明年開始,中國大陸地區就要和其他國家和地區一樣,進行全球 Ignite Tour 了。

我也有幸成為分會場講師團隊的一員,課程是《預編譯框架 - 開發高效能應用》。內容就是我部落格中與 MSBuild / Roslyn / dotnet / NuGet 相關的內容;我們將利用這些知識打造一個高效能客戶端應用。

微軟技術暨生態大會

進入 微軟技術暨生態大會 官網可以瞭解更多內容。如果你和我一樣對微軟技術富有熱情,那麼也歡迎你 買票 一起去上海。

關於課程《預編譯框架 - 開發高效能應用》

利用 Roslyn 在編譯期間提前完成收集和修改所需的各種資訊,我們能將 .NET 的反射耗時降低到近乎為 0!
當前大多數的框架都離不開反射的支援,但是 .NET 的反射很傷效能,而不用反射又很難支撐大型應用;基於 Roslyn 的預編譯框架旨在解決這些效能問題。

本次講題能學到什麼?

  1. 體驗預編譯框架的強大效能
  2. 理解 dotnet build 的編譯過程
  3. 使用 Roslyn 分析和修改專案原始碼
  4. 如何開發自己的預編譯框架
  5. 製作原始碼引用 NuGet 包(而不是 dll 引用 NuGet 包)

其實此課程的計劃課程內容有 2.5 小時,畢竟部落格都有好幾十篇了呢。算上跟我一起研究這項技術的 林德熙的與 Roslyn 相關的部落格,那就更多了,而且還在持續增加中。

不過實際分會場課程中內容眾多,留給每個講師的時間只有 20 分鐘或者 45 分鐘。我有幸獲得了 45 分鐘時長的課程,所以雖然已經算長的了,卻也必須減少和壓縮課程內容。

於是,實際課程會以入門為主,進階內容將作為資料線下學習。注意:即便是“入門”,難度也依然是 300(難度範圍為 0-400),所以你必須擁有一定的 .NET 開發知識和一些應用開發經驗才會理解課程內容。如果你的經驗更偏客戶端應用開發,那麼更能體會本課程內容的目的。

課程大綱

課程大綱是為 2 小時的課程而設計的。所以實際上我只會講大部分內容,以下所有動手實驗和演示的地方都會略過,代之以提前執行和編寫的結果。

實際課程中會略過的部分以斜體表示

  • 引入
    • 一批效能資料
      • 收集:反射 VS 配置檔案 VS 預編譯
      • 呼叫:直接呼叫 VS 最快反射 VS 預編譯
      • 程式集個數:1 個 VS ……
  • 概覽
    • 目錄
      • 瞭解原始碼包 SourceYard 和預編譯框架 SourceFusion
      • 學會編寫編譯期程式碼以提升應用效能
    • 預編譯框架的原理
    • 多個 API 的展示
      • 原始碼包
      • 編譯期類
      • 類模板
      • 擴充套件
  • 教學
    • 目標:學會使用編譯期程式碼代替反射以提升應用的執行效能
    • 教學目錄
      • 理解 dotnet build 的編譯過程
        • 理解 csproj 檔案格式
        • 理解編譯過程
        • 理解 NuGet 打包原理
      • 動手實驗:SourceYard 原始碼包簡化版
        • 編譯期間執行一個 exe 程式
        • 在 exe 程式中接收引數並干預編譯結果
      • 學習使用 Roslyn 分析原始碼
        • 語法視覺化窗格
        • 分析 C# 語法樹
        • 在編譯期間執行程式碼
      • 動手實驗:SourceFusion 預編譯框架簡化版
        • 在編譯期間收集程式集中具有特定標記的所有型別
        • 生成程式碼以快速訪問這些型別的特定方法
  • 回顧
    • 回顧 dotnet build 的編譯過程和 Roslyn 分析原始碼
    • SourceYard 和 SourceFusion 的開源倉庫,歡迎加入

關於講師 —— 呂毅

演講嘉賓

在這裡,你可以看到主題演講、分會場課程以及動手實驗室的各位講師,可以去了解每一位講師以及他們的課程。當然,你也可以看到我。

講師頁面

歡迎你的加入

最後,歡迎你一起參加微軟技術暨生態大會,我們一起去與微軟大咖,各位微軟 MVP,社群技術牛人交流技術。

課程課件使用 希沃白板 5 製作,這是一款專門針對教學場景設計的互動課件工具。

希沃白板 5

相關連結

SourceYard 原始碼包

SourceFusion 預編譯框架

更多 MSBuild / Roslyn / dotnet / NuGet 相關的知識

相關推薦

編譯框架開發高效能應用 - 課程 - 微軟技術暨生態大會 2018

微軟技術暨生態大會(Tech Summit),2018 年在上海世博中心召開。這是最後一次的 Tech Summit 了;明年開始,中國大陸地區就要和其他國家和地區一樣,進行全球 Ignite Tour 了。 我也有幸成為分會場講師團隊的一員,課程是《預編譯框架 - 開發高效能應用》

編譯框架開發高效能應用

微軟技術暨生態大會(Tech Summit),2018 年在上海世博中心召開。這是最後一次的 Tech Summit 了;明年開始,中國大陸地區就要和其他國家和地區一樣,進行全球 Ignite Tour 了。 我也有幸成為分會場講師團隊的一員,課程是《預編譯框架

在Java開發做了10年後推薦此框架顛覆Java應用

黑馬程式設計師 2018-12-07 10:47:22 為什麼說Spring Boot是顛覆性的呢?因為它徹底改變了Java應用開發的模式。 Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的

【Statement和PreparedStatement有什麽區別?哪個性能更好?編譯語句防止sql註入問題】

dstat () 驅動程序 對象 生成 from result 查詢語句 驅動 答:與Statement相比,①PreparedStatement接口代表預編譯的語句,它主要的優勢在於可以減少SQL的編譯錯誤並增加SQL的安全性(減少SQL註射攻擊的可能性);②Prepar

Android6.0系統的framework層中加入自己的共享庫服務,在系統編譯之後系統啟動提示找不到類的問題

共享庫服務我們取名為myserver 系統預編譯(預優化):目的是加快系統的啟動時間,如下設定: device\atc\evb3561sv_w_no2\BoardConfig.mk ### add by zhaojr for odex # Enable dex-preop

XCode5 免證書真機除錯開發IOS7應用程式

寫在前面:之前寫了一篇申請IDP的教程(http://blog.csdn.net/it_magician/article/details/8658670),整個過程最長可能會在半個月左右。對於那些等不及需要聯機除錯,或者不打算申請IDP的個人自學者或越獄機開發者,其實還有一個方法可以實現真機除錯,那就是破

Android肝帝戰紀之基於上篇單Activity+多Fragment框架開發電商式導航欄多Fragment切換

電商式導航欄,多Fragment切換 介面構思示意圖 設計思路 在底部的LinearLayout中新增相應的圖示,然後設定tag繫結相應的 Fragment陣列對應的下標值,再點選切換的時候,根據獲取到的tag值,取出陣列中對應下標的Fragment,在

82歲學程式設計開發應用獲得5.3萬次下載這位老奶奶的程式設計路

我總會收到類似這樣的私信「小甲,我已經畢業三四年了,我目前在XX企業上班,每天上班

SQL或HQL編譯語句能夠防止SQL注入但是不能處理%和_特殊字元

最近專案在做整改,將所有DAO層的直接拼接SQL字串的程式碼,轉換成使用預編譯語句的方式。個人通過寫dao層的單元測試,有以下幾點收穫。 dao層程式碼如下 //使用了預編譯sql public Li

vs在專案中去掉編譯去掉自動生成的stdafx.h等檔案

以VS2012為例。 專案建好後去掉預編譯頭: 新建專案時按預設方式已經選擇了預編譯,在後期要如何取消或關閉預編譯呢? 專案---->屬性---->配置屬性---->C/C++---->預編譯頭---->建立/使用預編譯頭 選擇不使用預編譯頭,

uni-app 是一個使用 Vue.js 開發跨平臺應用的前端框架開發者編寫一套程式碼編譯到iOS、Android、微信小程式等多個平臺。

uni-app 是一個使用 Vue.js 開發跨平臺應用的前端框架,開發者編寫一套程式碼,可編譯到iOS、Android、微信小程式等多個平臺。 uni-app在跨端數量、擴充套件能力、效能體

Ember.js v3.8.0-beta.1 釋出JS Web 應用開發框架

   Ember.js 3.6.0-beta.2 已釋出,Ember.js 是一個 JavaScript 框架,它極大地減少了構建任何 Web 應用程式所需的時間、精力和資源。它致力於通過完成大多數 Web 開發專案中涉及的所有常見、重複且至關重要的任務,幫助開發人員

Java 開發基於Zookeeper,Springvue.js的高併發多使用者模組化微信商城系統(四) Java微框架Spring Boot的應用

一、簡介 從最初學習Java這門語言開始,就已經開始接觸Spring。在過去的一段時間裡,Spring Boot在社群中熱度一直很高。Spring Boot不是一門新技術,從本質上來說,Spring Boot就是Spring,它做了那些沒有它你也會去做的Spr

Ember.js 3.7 釋出JS Web 應用開發框架

   Ember.js 3.7 已釋出,Ember.js 是一個 JavaScript 框架,它極大地減少了構建任何 Web 應用程式所需的時間、精力和資源。它致力於通過完成大多數 Web 開發專案中涉及的所有常見、重複且至關重要的任務,幫助開發人員達成目標。 Ember.js

力軟敏捷開發框架至美UI強大功能組件開發一個加速度!

src str 能夠 nal 辦公 主從表 可視化 程序 多個 力軟敏捷開發框架,軟件行業的3D打印機、整合框架,給用戶和開發者最佳的.Net框架方案。 力軟敏捷開發框架是一套集快速開發+通用權限管理+工作流+即時通訊+微信組件+手機APP開發於一體的敏捷開發框架。 能幫企

NDK開發使用cMake方式 - 添加其他的編譯

csdn per highlight 方式 make ati lists sdn jni NDK 開發使用cMake方式,網上能找到不少的教程,這裏推薦一篇博文: http://blog.csdn.net/wl9739/article/details/52607010 關於

CentOS7基於FPM模式編譯LAMP實現多虛擬主機應用wordpress

lamp、wordpress該實驗需要的軟件環境:apr-1.6.2.tar.gz httpd-2.4.27.tar.bz2 php-7.1.10.tar.xzapr-util-1.6.0.tar.gz mariadb-10.2.8-linux-x86_64.tar

error C1853: “DebugBigBuffer.pch”編譯頭文件來自編譯器的早期版本或者編譯頭為 C++ 而在 C 中使用它(或相反)

view height 編譯 ont 彈出 對話 ngs 編譯器 -c <pre id="best-content-1299104064" mb-10"="" style="font-size: 14px; line-height: 28px; ">該錯誤是因為

使用SPRY框架提升Web開發效率

javascript web js spry 一、SPRY能做什麽?Spry 框架是一個JavaScript 庫,Web 設計人員使用它可以構建能夠向站點訪問者提供更豐富體驗的 Web 頁。有了 Spry,就可以使用 HTML、CSS 和極少量的 JavaScript 將XML 數據合並到 H

使用SSM框架開發企業級應用~Chapter01-初始MyBatis

art resource tty 破解 sele 存儲 方法 select 絕對路徑 什麽是MyBatis? MyBatis是一個開源的數據持久層框架,內部封裝了通過JDBC訪問數據庫的操作,支持普通的SQL查詢,存儲過程和高級映射,幾乎消除了所有的JDBC代碼和參數的