Net Core學習筆記

Net Core

官網:https://dotnet.github.io/
linux

Net Core Api:nginx

https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-1.1git

https://docs.microsoft.com/en-us/aspnet/core/api/
github

簡介

ASP.NET Core 是一個跨平臺的高性能開源框架。具備以下優勢:docker

ASP.NET Core 徹底做爲 NuGet 包的一部分提供。 藉助 NuGet 包,能夠將應用優化爲只包含必需的依賴項。 較小的應用圖面區域的優點包括:提高安全性、減小維護和提升性能。數據庫

Net Core 與 Net Framework

NetCore是一個開源的模塊化的Framework,不論是Web或移動設備都在同一個Framework下運行。apache

並且NetCore也能夠在不一樣的操做系統上運行,包括Windows、Linux、MACOS。實現了跨平臺。npm

NetCore在發佈程序時不用事先安裝NetFramework而是經過Nuget下載。避免下載安裝NetFramework編程

 

如上圖所示,NetCore和NetFramework都是Net Standard Library的實現,一種是跨平臺,一種是Windows下特有api

Net Standard Library是跨操做系統的關鍵所在,定義了一組接口,每一個操做系統都有各自的實現。

Net Core經過nuget能夠動態下載當前操做系統的實現,從而實現跨操做系統。

Net Core依賴於Nuget,容許本地application在部署時動態下載,比Net Framework更簡單快速輕便 

Net Core構成體系

Net Core的系統構成,最上層是應用層,用於UI開發。

CoreFX是公共庫,實現了Net Standard Library。包括了經常使用的系統級操做。

Net Core包含兩種運行時(Core CLR、Core RT),

CoreCLR是一種基於即時編譯程序的運行時。使用跨平臺開源的編譯器RyuJIT,

Core RT是使用提早編譯器(AOT)的運行時。既可使用RyuJIT來實現AOT編程也可使用其餘編譯器。

Roslyn編譯器

用於將C#或VB代碼編譯爲程序集(assembly),編譯過程是一個管道時的處理過程一共包含4個步驟

1. Parser解析:根據語法對源代碼進行解析

2. Declaration聲明:爲代碼生成元數據,元數據是一個數據表的集合,描述了數據類型和成員

3. Bind綁定:將生成的IL代碼與描述它的元數據綁定在一塊兒,生成託管模塊

4. Emit生成:將一個或多個託管模塊合併生成程序集

RyuJIT編譯器

RyuiJIT負責在程序運行中須要執行某一個方法,須要將已經編譯好的IL轉換成本機的機器碼。

新一代的JIT編譯器,第一次實現了AMD64的架構。

介紹

.Net Core是ASP.NET的一個重要的從新設計。

.Net Core是一個新的開源和跨平臺框架,用於構建現代基於雲的互聯網鏈接的應用程序。

.Net Core應用程序能夠在Net Core或完整的Net Framework上運行。

能夠在Windows、Mac、Linux上跨平臺開發和運行ASP.NET Core應用程序。在Github上開源

優勢

  • 生成WebUI和WebAPI的統一場景
  • 集成新式客戶端框架和開發工做流
  • 基於環境的雲就緒配置系統
  • 內置依賴項注入
  • 輕型的高性能模塊化HTTP請求管道
  • 可以在IIS、Nginx、Apache、Docker上進行託管或在本身的進程中自託管
  • 定目標到NetCore時,可使用並行應用版本控制
  • 簡化新式Web開發的工具
  • 可以在Windows、MacOS、Linux進行生成和運行
  • 開放源代碼和更完善的開源社區

ASP.NET Core徹底做爲nuget的一部分,藉助nuget包,能夠將應用優化爲只包含必須的依賴項。

使用ASP.NET Core MVC生成WebAPI和WebUI

  • ASP.NET Core MVC提供生成Web API和Web應用所需的功能:
  • MVC模式使WebAPI和Web應用可測試
  • ASP.NET Core 新增Razor頁面是基於頁面的編程模型,可簡化Web UI生成並提升工做小綠綠
  • Razor標記提供了適用於Razor頁面和MVC視圖的高效語法
  • 標記幫助程序使服務器代碼能夠在Razor文件中參與建立和呈現HTML元素
  • 內置的多數據格式和內容協商支持使WebAPI可訪問多種客戶端,包括瀏覽器和移動設備
  • 模型綁定自動將HTTP請求中的數據映射到操做方法參數
  • 模型驗證自動執行客戶端和服務端驗證

客戶端開發

ASP.NET Core 與經常使用的客戶端框架和庫(包括:Angular、React、BootStrap)無縫集成。

面向Net Framework 的ASP.NET Core

ASP.NET Core由Net Standard庫組成。面向Net Core有如下幾個優點

  • 跨平臺
  • 提升的性能
  • 並行版本控制
  • 新API
  • 開源

使用命令建立Net Core

使用dotnet命令,能夠建立Net Core項目

dotnet new : 直接建立一個 Hello World項目(控制檯)

dotnet new -t:能夠指定生成項目,Console,Web,Lib,xunittest(例如:dotnet new -t Web)

dotnet restore:還原項目依賴包

dotnet run:執行項目

dotnet ef : 須要添加  Microsoft.EntityFrameworkCore.Tools.DotNet 只能修改csproj文件

<ItemGroup>
     <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>

dotnet ef -h:幫助說明

dotnet ef migrations add initial:執行遷移

dotnet ef database update:更新代碼到數據庫

應用啓動

Startup類

Startup 提供了應用程序的入口,而且每一個應用程序都存在,充當應用程序的啓動點。NetCore會在主程序集中搜索名Startup類。

使用Hosting:Application能夠配置鍵。若是類的命名符合Startup,則會加載它。多個同名類,會根據命名空間加載。

選擇其中的一個,匹配項目的根命名空間優先,不然按照字母排列中的命名空間的第一個類。

Configure方法

Configure方法用於指定如何相應每個HTTP請求。更加複雜的管道配置,能夠封裝 中間件,並擴展到IApplicationBuilder上。

方法必須接受一個IApplicationBuilder參數,能夠指定一些額外的服務,IHostingEnvironment、ILoggerFactory。

這些服務會被注入進來

ConfigureServices方法

用來配置用於應用程序內的服務。 經過參數獲取一個IServiceCollection實例並可選的返回IServiceProvider。

ConfigureServices須要在Configure方法以前被調用。由於MVC的某些功能須要從ConfigureServices中請求某些服務。

而這些服務須要在接入請求管道以前先被加入CongureServices中。

IServiceCollection中使用擴展方法來包裝含有大量配置細節的ConfigureServices。

可以使用 EF、Identity、MVC。經過依賴注入能夠將服務加入到服務容器中,使其在容器中可使用。

在這裏也可使用默認的依賴注入

services.AddSingleton<ITodoRepository,TodoRepository>();

中間件

中間件是用於組成應用程序管道來處理請求和響應的組件。

管道內的每一個組件均可以選擇是否將請求交給下一個組件,並在管道中調用下一個組件以前和以後執行某些操做。

請求委託被用來創建請求管道,請求委託處理每個HTTP請求。

經過IApplicationBuilder類型的Run、Map、Use擴展方法來配置,並在Setup類中傳給Configure方法。

位於請求管道內的中間件組件負責調用管道中下一個組件,或適時短路調用鏈。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NPM和Bower

參考文獻:

npm和bower   .net Core爲什麼改變   .net core系列文章

若是咱們引用jQuery或者Bootstrap,會提示讓咱們使用Bower,那麼介紹一下Bower的概念

Npm和Bower二者都是包管理器,是.Net Core新出的特性。

 

 

 

 

 

 

 

 

 

佔位符

相關文章
相關標籤/搜索