.NET Core學習之路


1.NET Core環境搭建

 

安裝.NET Core:

.NET Core 包括.NET Core Runtime 和 .NET Core SDK:

  1. NET Core = 應用運行依賴的 .NET Core Runtime
  2. NET Core SDK = 使用.NET Core開發應用.NET Core Runtime 和 SDK+CLI(Software Development Kit/Command Line Interface) 工具

下載地址請到dotnet官方網站dot.net (dot  net),非常的好記,這個網站也是你入門學.NET Core的入口網站,記住這是個必須要去網站。.NET Core 下載的具體地址:https://www.microsoft.com/net/download#core,這里還列出了注意事項:

    a.雖然.NET Core Runtime 和基礎庫已經1.0 RTM,但是開發工具鏈(.NET Core CLI,Visual studio 和Visual Studio Code) 還是預覽版,具體可以參看https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/

     b.在Windows Servers上部署應用 ,可以單獨安裝ASP.NET Core Module for IIS 而不需要安裝.NET Core runtime,可以通過命令行DotNetCore.1.0.0-WindowsHosting.exe OPT_INSTALL_REDIST=0

     c.Mac 系統的最低要求是macOS 10.11 (El Capitan)

     d..NET Core 在Red Hat 系列服務器上支持的要 RHEL 7 Server,包括CentOS 7 以上,具體參看 https://access.redhat.com/documentation/en/dot-net-core/

     e..NET Core 在Ubuntu上面的支持 需要 Ubuntu 14.04 LTS 和  Ubuntu 16.04 LTS

     f.如果之前安裝了.NET Core的beta,rc1,rc2的版本,在安裝之前需要把他們卸載掉,具體參見 stack overflow 的文章。

.NET Core 的具體安裝方法可以參看文章 .Net Core 系列:1、環境搭建

還有Core的CLI命令請參照張大大的博客:.NET Core 環境搭建和命令行CLI入門

上面一段也是摘自張大大的博客,總結的比我好太多了。

2.NET Core基本介紹

2.1 什么是ASP.NET Core

ASP.NET Core 是一個全新的開源、跨平台框架,可以用它來構建基於網絡連接的現代雲應用程序,比如:Web 應用,IoT(Internet Of Things,物聯網)應用和移動后端等。ASP.NET Core可以運行在 .NET Core 或完整的 .NET Framework 之上,其架構為發布到雲端或本地運行的應用提供了一個最佳的開發框架,由開銷很小的模塊化組件構成,這就保持了你構造解決方案的靈活性。你可以跨平台地在Windows、Mac和Linux等設備上開發和運行你的 ASP.NET Core 應用。ASP.NET Core 的源代碼已經在 GitHub 上托管。

2.2 ASP.NET Core的改進

1)    在統一的方案中構建Web UI 和 Web API

2)    集成現代客戶端開發框架和工作流

3)    以雲就緒環境為基礎的配置系統

4)    內置依賴注入

5)    全新、輕量級、模塊化的HTTP請求管道

6)    在IIS或在自己托管進程中托管應用程序的能力。

7)    以.NET Core為基礎,支持並行應用版本控制。

8)    完全以 NuGet 程序包方式分發

9)    一組全新的工具,簡化現代Web 開發

10)  在Windows、Mac和Linux等設備上開發和運行 ASP.NET應用

11)  開放源代碼和社區聚焦

2.3 ASP.NET Core 項目解讀

如上圖:一個ASP.NET Core應用其實就是一個簡單的控制台應用程序,只是它在Main方法中創建了一個 Web 服務器而已,

using System.IO;
using Microsoft.AspNetCore.Hosting;

namespace ProgrammersLiveShow
{
    /// <summary>
    /// 系統初始化信息
    /// </summary>
    /// 修改記錄:
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();
        }
    }
}

Main 使用一個遵循生成器模式的 WebHostBuilder來創建Web應用程序宿主。生成器具有定義web服務器(UseKestrel)和指定啟動類(UseStartup<Startup>())的方法。 上述示例使用的是 Kestrel Web 服務器,但你可以指定其他類型的Web 服務器。在下一節中將展示更多 UseStartup 相關的信息。WebHostBuilder 提供了大量的選項方法,包括指定宿主為 IIS 和 IIS Express 服務器的 UseIISIntegration,指定內容根目錄的 UseContentRoot等。其中Build 和Run方法用於構建 IWebHost的實例,它將被用來掛載應用並開始監聽到來的HTTP請求。

Startup類:

WebHostBuilder上的Startup方法用來指定你的應用程序的啟動類。

該類是定義請求處理管道的地方,也是配置應用需要的服務的地方。Startup類必須是public的,而且必須包含ConfigureServices(IServiceCollection services)和Configure(IApplicationBuilder app)方法。

      a)     ConfigureServices  定義應用程序中用到的服務(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)

      b)     Configure     定義請求處理管道中的中間件

Startup 類的 執行順序:構造 -> configureServices->configure

詳情請參考:Startup 和 Middleware(中間件),總結的很不錯。

project.json

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0"
  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Pls.Service": {
          "target": "project"
        }
      },
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config",
      "Areas",
      "nlog.config"
    ],
    "exclude": [ "bin" ]
  }
}

 具體的解釋請看 project.json 引用(中文版的適合英語不好的人翻翻看)。我挑幾個上面用到的解釋解釋:

  1. dependencies:依賴項,定義項目的包依賴項的一個對象,此對象的每個鍵是包名稱,每個值包含版本信息。有關詳細信息,請參閱 NuGet 文檔站點上的 依賴項解析文章,類型是Object。
  2. tools:定義用作當前項目工具(而不是用作引用)的包依賴項的一個對象。 此處定義的包可用於生成過程中運行的腳本,但不可訪問項目自身的代碼,類型是Object。
     
  3. frameworks:框架,指定此項目支持的框架,如 .NET Framework 或通用 Windows 平台 (UWP)。 必須是有效的目標框架名字對象 (TFM)。 每個值都是一個對象,可以包含特定於此框架的信息以及以下各部分中的屬性,類型是Object
  4. target:限制依賴項以僅匹配 project 或 package,類型是String
  5. buildOptions:其屬性控制編譯各個方面的一個對象。 下面列出了有效屬性。 也可以按框架部分中所述目標框架進行指定,類型是Object。
  6. runtimeOptions:指定在初始化期間向運行時提供的參數,類型是Object。
  7. configProperties:包含用於配置運行時和框架的配置屬性,類型是Object。
  8. System.GC.Server:若要啟用服務器垃圾回收,則為 true;否則為 false。 默認值為 false
  9. emitEntryPoint:若要創建可執行文件,則為 true;否則為 false。 默認值為 false
  10. preserveCompilationContext:若要保留引用程序集和其他上下文數據以實現運行時編譯,則為 true;否則為 false。 默認值為 false
  11. publishOptions:包含編譯配置的屬性的一個對象,類型是 Object。
  12. include:包含文件以及文件夾,類型是String 或帶有通配模式的 String[]。
  13. exclude:指定要從生成中排除的文件,類型是String 或帶有通配模式的 String[]。

 

初心商城:初心商城  MVC/.NET群:159227188

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM