筆記-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
  • 如何開始?
  • 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 工具也是用相同方式啟動。

錦上添花

2017 .NET 開發者須知的更多相关文章

  1. ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧

    ASP.NET MVC 預設在 Global.asax 所定義的 RegisterRoutes 方法中可以輕易的定義你希望擁有的網址格式,嚴格上來講這並非 ASP.NET MVC 的專利,而是從 AS ...

  2. 學習 DT device tree 以 ST 的開發板 STM32F429i-disc1 為例

    目標 因為對 device tree 不是很熟悉, 所以就將 device tree, 設為學習目標. 啟動 注意, 這篇隨筆的解說都放在最下面,會標 Explanation_XX,只要搜尋 Expl ...

  3. Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

    前言 不同於iOS, Xamarin 在Visual Studio中針對Android, 可以直接設計使用者介面. 在本篇教學文章中, 筆者會針對Android的專案目錄結構以及基本控制項進行介紹, ...

  4. Visual Studio 跨平台開發實戰(2) - Xamarin.iOS 基本控制項介紹 (转帖)

    前言 在上一篇文章中, 我們介紹了Xamarin 以及簡單的HelloWorld範例, 這次我們針對iOS的專案目錄架構以及基本控制項進行說明. 包含UIButton,, UISlider, UISw ...

  5. Visual Studio 跨平台開發實戰(1) - Hello Xamarin! (转帖)

    前言 應用程式發展的腳步, 從來沒有停過. 從早期的Windows 應用程式, 到網路時代的web 應用程式, 再到近幾年相當盛行的行動裝置應用程式(Mobile Application), 身為C# ...

  6. Sharepoint中WebPart開發時註意的問題

    1. 怎麼樣在WebPart中使用Sharepoint控件? 要在webpart中使用sharepoint控件必須先引用Microsoft.SharePoint.WebControls命名空間,如你現 ...

  7. 免安裝、免設定的 Hadoop 開發環境 - cloudera 的 QuickStart VM

    cloudera 的 QuickStart VM,為一種免安裝.免設定 Linux 及 Hadoop,已幫你建好 CDH 5.x.Hadoop.Eclipse 的一個虛擬機環境.下載後解壓縮,可直接以 ...

  8. .net批量上傳Csv檔資料應用程序開發總結

    應用環境:visual studio 2010開發工具,Database為Sql2008以上版本 最近在生產環境中需要開發一款應用程式,上傳電子檔(.csv)資料至Database 最初方案: 以tx ...

  9. 開博客了, 因為搞Delphi 開發的關於Delphi學習

    開博客了, 因為搞Delphi 開發的關於Delphi學習,之前都是用本地TXT文件保存,發現在本地電腦保存非常不方面,而且只能在一台電腦上保存,不容易查看和修改內容.便於以後的記錄只用,以及經驗交流 ...

随机推荐

  1. python实现XSS过滤(BeautifulSoup和白名单处理)

    下面我做的莫名其妙的代码格式化是因为这个 --.-- 首先大致说一下XSS,就是在HTML里插入恶意的javascript代码,使得在该HTML加载时执行恶意代码,达到攻击的目的. 可能存在的地方呢, ...

  2. [转载]binlog归档

    1.1. 前言 对数据库数据进行备份都是日常的工作(虽然都是自动做的),备份中有一项必备的那就是binglog了.在工作中一般这些备份都会保留一段时间后归档.时间长了归档的数据将会非常大.这时候我们就 ...

  3. chrome使用技巧整理

    查看chrome的相关快捷键:打开chrome,按下F1,点击"键盘和鼠标快捷键". 1.查看版本: 浏览器输入网址:chrome://version/ 2.查看Chrome进程清 ...

  4. AWS上获取监控数据(EC2/RDS都支持)

    方法1:mon-cmd http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/cli/SetupCLI.html(安装连接) ● Step ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

  6. Grails框架使用指南

    Grails框架使用指南,详解Grails框架!cnxieyang@163.com

  7. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  8. SpringMVC框架学习笔记(5)——数据处理

    1.提交数据的处理 a)提交的域名称和参数名称一致 http://localhost:8080/foward/hello.do?name=zhangsan 处理方法 @RequestMapping(v ...

  9. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

  10. Node.js/Vue环境搭配安装

    http://blog.sina.com.cn/s/blog_497ff1a70102x0sw.html 第一次接触Node.js,想创建自己的服务就须配置好Node.js环境 安装Node.js 下 ...