1. 程式人生 > 其它 >.NET Core詳解(1)——基礎瞭解

.NET Core詳解(1)——基礎瞭解

一:.NET Core 的有點和特性

  1.跨平臺

    ASP.NET 4.x 應用程式只能在 IIS 上託管,而 ASP.NET Core 應用程式可以託管在 IIS,Apache,Docker 甚至自己把自己託管在程序中(俗稱:自託管)。 從開發方式上來看,您可以使用 Visual Studio 或 Visual Studio Code 來構建.NET Core 應用程式。您也可以使用 Sublime 等第三方編輯器。

  2.MVC與Web API統一的程式設計模型

  3.依賴注入

  4.可測試性

  5.開源

  6.模組化

二:建立專案

  建立一個 “ASP.NET Core Web 應用程式”,並選擇空模板;

  1.專案檔案    

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App
" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> </ItemGroup> </Project>

  TargetFramework:此元素用於指定應用程式的目標框架,即開發者希望為應用程式提供的API程式集;

  AspNetCoreHostingModel:此元素指定應如何託管 Asp.Net Core 應用程式。它表示程式應該託管 InProcess(程序內)還是 OutOfProcess(程序外)。 InProcess 的值指定我們想要使用程序內託管模型,即在 IIS 工作程序(w3wp.exe)中託管我們的 asp.net core 應用程式。 OutOfProcess 的值指定我們要使用程序外託管模型,將 Web 請求轉發到執行 Kestrel 伺服器的後端 ASP.NET Core 應用程式;

  PackageReference:顧名思義,此元素用於包含對為您的應用程式安裝的所有 NuGet 包的引用;

  實際上,用VS2019建立ASP.NET Core Web 應用程式的專案檔案:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>

  2.專案中的Main方法

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

   ASP.NET Core 應用程式最初作為控制檯應用程式啟動,而Program.cs檔案中的Main()方法就是入口。

  3.啟動類Startup

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    { }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }
}

    啟動類只有兩個重要方法:

      ConfigureServices()方法配置應用程式所需的服務;

      Configure()方法配置應用程式的請求處理管道;