筆記-Scott Hanselman 的 2017 .NET 開發者須知

转载http://blog.darkthread.net/post-2017-01-16-dotnet-dev-should-know-2017.aspx

Scott Hanselman 前兩天有篇文章-What .NET Developers ought to know to start in 2017,我的工作(甚至生活)跟 .NET 息息相關,重量級人物的觀點自然不容錯過,整理筆記如下:

前言

  • Scott 之前整理過類似的 .NET 須知,結果被大家拿來當作面試時折磨新人的刑具…
  • 清單很長,但並不是每則都必須搞懂弄通,應視自己所需以及學習習慣取捨,有些知道名詞即可,有些應該深入了解。
  • https://dot.net 是 .NET 技術資源的新入口,首頁有個線上 C# 編譯器可以玩玩。

必備知識

  • 新的 .NET 架構,分成 .NET Framework、.NET Core、Xamarin 三種 Runtime,底層是 .NET Standard…
    延伸閱讀:.NET Standard 2.0 是什麼?可以吃嗎?
  • .NET Framework - 用於 Windows 平台
  • .NET Core – 可通行於 Windows、Linux、Mac
  • Mono for Xamarin – 整合 .NET 與手機原生 API,可開發 iOS 及 Android App
  • 主要語言:C#、F#、VB.NET
  • 如何開始?
    • https://dot.net 下載 .NET Core 以及 Visual Studio Code
    • https://docs.microsoft.com 文件入口
    • https://github.com/dotnet Open Source 程式碼
  • Frameworks
    指可使用的 API 集合,例如:.NET 4.6 Framework、.NET Standard 等,有時會以 TFM 表示
  • Platforms 平台
    如 Windows、Linux、Mac、Android、iOS 等,還會進一步區分 x86、x64。
  • TFMs (Target Framework Moniker)
    用來表示平台版本的簡稱,例如 net462(.NET 4.6.2)、net35(.NET 3.5)、uap(Universal Windows Platform),指定 TPM 決定可以使用的 API 範圍。
  • NuGet
    .NET 愈來愈依賴透過 NuGet 下載必要程式庫及核心元件,許多東西不再預先安裝於本機,而是新起專案時才下載,這年頭 .NET 開發者不會 NuGet 恐怕混不下去。
    延伸閱讀:還在揮汗徒手安裝程式庫? 試試NuGet
  • Assembly 組件
    .NET 程式編譯後的產出,多以 DLL、EXE 方式存在,是部署、版本管理、重複利用以及權限控管的基本單位。
    .NET Core 的編譯結果則是一個 NuGet Package,包含組件以及額外的 Metadata。
  • .NET Framework vs. .NET Core
    .NET Framework 聚焦於 Windows 平台(桌機、平板、手機、XBOX),.NET Core 則可跨平台。

應該知道

  • CLR  
    Common Language Runtime (CLR),執行 .NET Framework 的虛擬機器元件(for Windows)
  • CoreCLR
    .NET Core 用的 Runtime
  • Mono
    Xamarin 及 Linux 系統用的 .NET Runtime
  • CoreFX
    .NET Core 的 .NET 類別程式庫,部分程式碼與 Mono 共用。
  • Roslyn
    C# 與 Visual Basic 編譯器,有開放讀、寫、分析程式碼的 API  可供延伸應用。
  • GC
    .NET 使用記憶體回收機制,免除開發者自行管理記憶體的負擔。延伸閱讀:Fundamentals of garbage collection (GC).
  • "Managed Code"
    指使用 .NET 語言開發的程式,相對另一種是 Unmanaged Code,指用 C/C++/VB/Delphi 寫的程式、ActiveX、COM+元件。
  • IL
    .NET 編譯結果非機器碼,而是一種中間語言(Intermediate Language),執行時才由 Runtime JIT 編譯成機器語言。
    Scott 的比喻:C# 是蘋果,IL 是蘋果醬、JIT 及 CLR 再將它磨成磨成蘋果汁。
  • JIT
    Just in Time Compiler,即時將 IL 編譯成機器語言。
  • .NET Framework 的儲存位置在 C:\Windows\Microsoft.NET,而 .NET Core 在 C:\Program Files\dotnet,在 Mac 則為 /usr/local/share。但 .NET Core 允許把 Runtime 包進程式的 Package 一起部署,如此客戶端不需事先安裝 .NET Core Runtime,只要 xcopy 就可以部署(xcopy-deployable or bin-deployable),這種做法稱為:Self-Contained Application,反之則稱為 Shared Framework Apps。
  • async and await
    async 與 await 指令可解決執行耗時動作(例如查詢資料庫,呼叫 Web API)程式卡住的問題。
  • Portable Class Libraries
    一種允許跨平台使用的「最大公約數」性質的共用程式庫,未來建議改用.NET Standard。
  • .NET Core 
    由 .NET runtime、一組 Framework Libraries 以及一組 SDK 工具以及語言編譯器組成,這一切可由.NET Core SDK 取得。
    'dotnet' 程式可用於啟動 .NET Core 程式,它會選取並執行適當的 Runtime,提供組件載入原則並啟動程式,SDK 工具也是用相同方式啟動。

錦上添花

  • GAC
    Global Assembly Cache,完整版 .NET Framework 在 Windows 平台上保存與管理共用程式庫的地方,可使用"gacutil /l"查看清單
  • Assembly Loading and Binding
    組件載入與繫結的原理
  • Profiling (memory usage, GC, etc.)
    觀測 C# 或 .NET Core 程式碼執行狀況(記憶體用量、GC頻率等)效能,Visual Studio 有不少內建工具。
  • LINQ - Language Integrated Query(編按:我認為依其普遍性應足以列為 .NET 須知)
  • Common Type System and Common Language Specification
    定義 .NET 通用型別及通用語言規範
  • .NET Native
    未來 .NET 除了編譯成 IL,還可以編譯成原生機器語言,明顯提升效能及破解防護力。
  • .NET Roadmap
    微軟制定的 2017 .NET 發展計劃
  • "Modern" C# 7
    C# 7 值得一看的新特色
  • Reactive Extensions
    Reactive Extensions (Rx) 是一組使用 Observable Sequence 與 LINQ 式查詢的非同步與事件基礎程式庫,可用來建立複雜的事件基礎程式以及使用 LINQ 語法以非同步方式處理資料流。

转载于:https://www.cnblogs.com/luhe/p/6826286.html

2017 .NET 開發者須知相关推荐

  1. 基於IIS的WCF的分布式多層架構開發實現

    曾用.NET Remoting,基於IIS,為公司實現過分布式多層架構,客戶端采用Web Browser瀏覽,當時,公司領導告訴我可能會有多臺中間服務器用於系統,又不想每臺電腦的去安裝程序,所以,我最 ...

  2. 用 AsyncDisplayKit 開發響應式 iOS App

    原文:Using AsyncDisplayKit to Develop Responsive UIs in iOS 作者:ZIAD TAMIM 譯者:kmyhy 在 2011 年,我認識了一位非常聰明 ...

  3. 快速android app开发,快速學會開發 Android App

    快速學會開發Android App 作者:吳玉舒 / 臺灣大學計算機及資訊網路中心程式設計組幹事 智慧型手機發展迅速,其中以Android和iOS為主要的平台,根據 2012年6月Nielsen 的調 ...

  4. android this context,Android應用開發中關於this.context=context的理解

    在Android應用開發中,有的類里面需要聲明一個Context的成員變量,然后還需要在該類的構造函數中加上this.context=context;這行代碼.為什么要這么寫呢?不寫不行么? 先看下面 ...

  5. oracle开发方案,oracle報表開發方案

    PL/SQL也是一門語言,后台開發經常會用到. 目前做要到一個功能,關於"報表任務調度",說明白了就是做幾張報表,每天統計一次新數據,用於在PC頁面上顯示,我苦思冥想了幾天,總結出 ...

  6. 【转贴备忘】[教程]iPhone 實機開發 Part 1 - HelloWorld

    http://bbs.weiphone.com/read-htm-tid-222380-page-1.html 最近小弟開始在研究 iPhone 的開發,無奈找到的資料都是舊的,也不知道怎麼放到 iP ...

  7. h-bulider怎么搭建php环境,使用Apache+Dreamweaver(或者H-builder)搭建php開發環境

    使用得工具說明php+Apache服務器+Dreamweaver+mysql數據庫 下載安裝好wamp,可以在網上直接百度下載,為了方便,我給放個百度雲的鏈接.wamp下載:鏈接:http://pan ...

  8. Scala開發教程(1): 開始神奇的Scala編程之旅

    前面寫了四篇Scala Play Framework開發教程,起了個頭,個人覺得Scala應用會越來越廣泛,因此開通了Scala中文社區論壇以達到推廣Scala開發的目的.該論壇設立了Scala編程( ...

  9. B.開發中間層和持久層注意事項和技巧()

    1  注意事項: 1.1bean 的 setId 使用 private 修飾,以免其他類可以修改 2   技巧 2.1 使用 0.開發前的準備 1.看清楚需求Doc.流程圖,等文檔 2.弄清表的結構關 ...

最新文章

  1. [POJ 3164]Command Network(最小树形图,朱刘算法)
  2. mysql迁移至postgresql_PostgreSQL来自欧罗巴Patroni系列技术主题一
  3. InVEST model中生境质量
  4. php 判断访问类型,php如何判断访问系统的用户设备类型(代码示例)
  5. 计算机远程桌面连接命令行,远程桌面连接命令,小编教你win7远程桌面连接命令的使用教程...
  6. H5唤醒Android App
  7. Express的使用
  8. 波士顿大学 计算机专业,波士顿大学本科计算机专业课程设置是怎样的?
  9. 人工智能测试-人工智能质量工程技能简介
  10. 小虎队《爱》 —— 米扑科技公司司歌
  11. GitHub快速学习-三
  12. 定制化centos7
  13. rio隐藏的团队列表
  14. 有什么好用的苹果群控软件?
  15. 【软件测试】测试点总结,收取短信验证码的测试(详全),你的即用宝典......
  16. AI语音识别常见算法简介--目录参考
  17. 【UWP通用应用开发】使用Toast通知与动态磁贴
  18. Python 模块 UUID 学习使用
  19. 2022 - 8 洛谷
  20. Task3 特征工程(智慧海洋)

热门文章

  1. c语言指针要点,C语言指针的重点有哪些?
  2. kotlin ++ --_顺便说一句-探索Kotlin代表团
  3. 公司成立两周年感言_对我的副项目成立一周年的一些反思
  4. java http请求 工具类_Java 实现 Http 请求工具类
  5. (已解决)ubuntu20.04 jar xvf XXX.zip报错-java.io.EOFException:Unexpected end of ZLIB input stream
  6. java培训教程分享:Java中怎样将数据对象序列化和反序列化?
  7. 学习Python遇到的热门问题整理
  8. springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
  9. Dynamics CRM 导入用户数据错误 could not retrieve salesperson role
  10. 部分人说 Java 的性能已经达到甚至超过 C++,是真的吗?