.NET Core學習之路

1.NET Core環境搭建

 

安裝.NET Core:html

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

  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,這裏還列出了注意事項:github

    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/web

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

     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/api

     e..NET Core 在Ubuntu上面的支持 須要 Ubuntu 14.04 LTS 和  Ubuntu 16.04 LTS服務器

     f.若是以前安裝了.NET Core的beta,rc1,rc2的版本,在安裝以前須要把他們卸載掉,具體參見 stack overflow 的文章。網絡

.NET Core 的具體安裝方法能夠參看文章 .Net Core 系列:一、環境搭建架構

還有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:限制依賴項以僅匹配  或 
    projectpackage,類型是String
  5. buildOptions:其屬性控制編譯各個方面的一個對象。 下面列出了有效屬性。 也能夠按框架部分中所述目標框架進行指定,類型是Object。
  6. runtimeOptions:指定在初始化期間向運行時提供的參數,類型是Object。
  7. configProperties:包含用於配置運行時和框架的配置屬性,類型是Object。
  8. System.GC.Server:若要啓用服務器垃圾回收,則爲 ;不然爲 。 默認值爲 。truefalsefalse
  9. emitEntryPoint:若要建立可執行文件,則爲 ;不然爲 。 默認值爲 。truefalsefalse
  10. preserveCompilationContext:若要保留引用程序集和其餘上下文數據以實現運行時編譯,則爲 ;不然爲 。 默認值爲 。truefalsefalse
  11. publishOptions:包含編譯配置的屬性的一個對象,類型是 Object。
  12. include:包含文件以及文件夾,類型是String 或帶有通配模式的 String[]。
  13. exclude:指定要從生成中排除的文件,類型是String 或帶有通配模式的 String[]。

 

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

相關文章
相關標籤/搜索