ASP.NET Core 階段性總結

来源:http://www.cnblogs.com/liubingbing/archive/2017/01/16/6290827.html
-Advertisement-
Play Games

參考頁面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-middleware.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-exception.html http://www.yuanjiaoch ...


參考頁面:

http://www.yuanjiaocheng.net/ASPNET-CORE/core-middleware.html

http://www.yuanjiaocheng.net/ASPNET-CORE/core-exception.html

http://www.yuanjiaocheng.net/ASPNET-CORE/core-static-files.html

http://www.yuanjiaocheng.net/ASPNET-CORE/setup-mvc.html

http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-design-pattern.html

自從年前用 ASP.NET 5 磕磕絆絆重寫了一個項目後 (2015.12),就沒怎麼關註 ASP.NET 5 相關內容了,為啥?因為實際應用問題太多,而且不是正式版本,變化實在太快,可能你今天瞭解的東西,明天就被否定了,但現在回過頭看,不關註的話就會漏失一些有價值的東西,雖然看看新聞瞭解到了,但還應該去深入的思考下,並且經歷微軟開源一步一步走向成熟的過程,這對於我們來說,也是一個機遇。

這段時間,我覺得主要發生了兩件事:

對我們影響最大的是 ASP.NET 5 重命名為 ASP.NET Core 1.0,我簡單列舉幾個:

  • 搜索資源不匹配,我應該是搜 ASP.NET vNext?還是 ASP.NET 5?還是 ASP.NET Core 1.0 呢?並且以前寫的有關文章資料,都搜索不到了。
  • 程式包名稱變化,這個對已經用 ASP.NET 5 開發的項目影響最大,比如Microsoft.AspNet.Mvc變成了Microsoft.AspNetCore.Mvc.Core,相關程式集名稱都需要更改。
  • 運行命令變更(包含運行時),主要是增加新的東西 CLI,比如dnu restore變成了dotnet restore等等。
  • ...

上面是對於我們開發者所造成的影響,其實對於微軟來說,重命名所帶來的額外工作也非常大,這也就造成了 ASP.NET Core 發佈日期的推遲,就像新聞中所提到的:這是個很好的改變,但為什麼來得這麼遲呢?如果像 ASP.NET vNext 改名為 ASP.NET 5 那麼迅速就好了。

除了 ASP.NET Core 1.0 重命名外,我覺得還有一個最大的變化,就是 dnx 到 cli 的改變,這部分內容需要深入探討下,在探討之前,大家可以先看下這篇博文:K & DN 的前世今生(微軟開源命名變革)

  • k -> dotnet -> dn(最終版)
  • kpm -> dotnet -> nuget -> dotnpm -> dotnetpm -> dnpm(最終版)
  • kvm -> dotnetsdk -> dotnvm -> dotnetvm -> dnvm(最終版)
  • k and kvm -> dotnet -> 合併(否決)
  • kre/xre -> dnx(未經討論確定)

上面是很久之前 GitHub 上一個命名討論的 Issue,現在回過頭看,是不是很有意思呢,因為大家一開始探討的命名就是現在微軟的命名,微軟實在做了太多無用功,cli 是從 dnx 變遷過來的,我們先瞭解下 dnx 是什麼?

The DNX (a .NET Execution Environment) contains the code required to bootstrap and run an application, including the compilation system, SDK tools, and the native CLR hosts.

說白了,我覺得 dnx 就是 ASP.NET 5 應用程式的運行時(某段時間內),為什麼這樣說?我們先瞭解下 dnx 的歷程,dnx 最初被命名為 xre,然後又被命名為 kre,需要註意的是,那時候還沒有 CoreCLR,詳見《魅力 .NET:從 Mono、.NET Core 說起》的文章最後,xre 中的代碼並不是很完善,有很多的代碼都是從 mono 借鑒過來的,包括運行時都是 mono,所以,看上面 dnx 的介紹,它其實就是一個運行時,並且因為 dnx 不是很完善,圍繞它的命令也就改來改去。

後來微軟開發了 CoreCLR,它是一個微軟自己的運行時,GitHub 地址不再放在 aspnet 下,而是放在了 dotnet 下,但其實是 CoreCLR 並不是很完善,從開源地址貼出來後,就一直在開發的狀態,並不能真正的拿來使用 (跨平臺),所以 dnx 一直被 ASP.NET 5 使用著,但後來隨著 CoreCLR 的逐步完善,微軟就開始考慮拋棄 dnx 了,cli 也就誕生了。

需要註意的是,cli 並不是由 dnx 重命名來的,而是演化過來的,它們倆是兩個完全不同的概念,另外,cli 也不是公共語言基礎(Common Language Infrastructure)的簡寫,而是 .NET Core Command Line Interface,翻譯過來就是 .NET Core 命令行介面。

CLI, This repo contains the .NET Core command-line (CLI) tools, used for building .NET Core apps and libraries through your development flow (compiling, NuGet package management, running, testing, ...).
This repo contains the source code for cross-platform .NET Core command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.

上面和 dnx 的定義對比下,就會發現它們是完全不同的,那 cli 到底包含哪些內容,在上面已經有了詳細的解釋,.NET Core 命令行介面及其實現,它的作用就是在應用程式和運行時之間搭起一座溝通橋梁,命名形式以dotnet *開始,我覺得 cli 是微軟以後所有命令實現的一種規範,應該不會再出現雜七雜八的命令了。

最後,看一段 About .NET Core 的內容:

.NET Core is a cross-platform implementation of .NET that is primarily being driven by ASP.NET 5 workloads, but also by the need and desire to have a modern runtime that is modular and whose features and libraries can be cherry picked based on the application’s needs.
.NET Core consists of the CoreCLR runtime and the CoreFX framework libraries. A set of cross-platform tooling can be found in the .NET CLI. The Roslyn compiler and LLILC compiler are sibling projects that support .NET Core. These projects are active on GitHub. You can participate by creating issues or collaborate on development. The main goal of the project is to create a modular, performant and cross-platform execution environment for modern applications.

.NET Core 一開始是 ASP.NET 5 跨平臺的一種實現,後來被逐步變化為 .NET 跨平臺的核心運行時,.NET Core 包含 CoreCLR 和 CoreFX,一個 .NET CLI,Roslyn 和 LLILC 編譯器,主要目標:modular(模塊化)performant(高性能)cross-platform execution environment(跨平臺執行環境)

關於高性能,可以看看最近的這篇新聞:《ASP.NET Core 每秒能處理 115 萬個請求,是 ASP.NET 4.6 的 23 倍(5 萬個請求)》,另外,ASP.NET Core 1.0 的應用示例:《ASP.NET Core 1.0 Hello World



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

-Advertisement-
Play Games
更多相關文章
  • 1 平臺匯流排的簡介 平臺匯流排是一種虛擬的匯流排,相應的設備則為platform_device,而驅動則為platform_driver。匯流排將設備和驅動綁定,在系統每註冊一個設備的時候,會尋找與之匹配的驅動;相反的,在系統每註冊一個驅動的時候,會尋找與之匹配的設備,而匹配由匯流排完成。 我們可以把一個驅 ...
  • 作者:楓雪庭 出處:http://www.cnblogs.com/FengXueTing-px/ 歡迎轉載 前言 雖然Emacs已經可以完成大部分的編輯操作,但有時候為了方便也會用到vim。所以記錄了vim的簡單操作,只要求到達上手即可。 本文簡單記錄了,vim編輯器模式之間的轉換和複製粘貼操作。 ...
  • 之前我們做的按鍵驅動程式都是應用程式主動open設備/dev/buttons而現實情況不能來打開這個設備甚至不知道這個設備的存在。 解決方案:變成通用的驅動程式。接下來我們引入的輸入子系統可以完成該任務。 1.輸入子系統的簡介 1.1 引入輸入子系統的好處: (1)統一了物理形態各異的相似的輸入設備 ...
  • 本系列主要翻譯自《ASP.NET MVC Interview Questions and Answers 》 By Shailendra Chauhan,想看英文原版的可訪問 "http://www.dotnettricks.com/free ebooks" 自行下載。該書主要分為兩部分,ASP.N ...
  • 背水一戰 Windows 10 之 控制項(導航類): AppBar, CommandBar ...
  • 代理delegate: 對象引用指向某個特定類型的對象。 代理指向某個特定類型的方法。 代理四步: 定義自定義代理類:public delegate void first(int i); 實例化代理類:first MyDelegate = null; 實例添加方法:MyDelegate += new... ...
  • AspectCore Project 介紹 什麼是AspectCore Project ? "AspectCore Project" 是適用於 "Asp.Net Core" 平臺的輕量級 "Aop(Aspect oriented programming)" 解決方案,它更好的遵循Asp.Net Co ...
  • 本文版權歸博客園和作者吳雙本人共同所有. 寫在前面 這是一個數據爆發的網路時代,大家習慣於瀏覽圖文直觀帶給我們的快速信息。大圖片的存儲和瀏覽經常會成為Web伺服器的瓶頸。試想如果你的Web伺服器依然將大量圖片存儲在其本地,而單頁面主要的信息在於圖片列表,在訪問量增長後,一定會面臨帶寬、磁碟IO的瓶頸 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...