例として実際のプロジェクトを使用した.NETCore2.2から.NETCore3.1への移行

画像



この記事は、オンラインストアを作成するための無料のオープンソースCMSであるnopCommerceプロジェクトの更新の論理的な続きです。前回、プロジェクトをASP.NETMVCからASP.NETCore2.2に移行した経験についてお話しました次に、.NET Core3.1への移行プロセスについて説明します。.Net Core 3.1の公式サポートは2022年12月まで続くことを考えると、移行のトピックは現在非常に重要です。したがって、更新されたフレームワークのすべてのメリットを享受し、技術革新に遅れずについていき、世界中で人気が高まっていることに追いつきたい場合は、移行を開始するときが来ました。



.NET Core3.1への移行中に解決する必要のあるタスク



, . review .NET Core 3.0 , , , JSON. , .NET Core 2.2 . , . . , .NET Core 2.2.



.NET Core 3.1



. .NET Core 2.2 .NET Core 3.1 Microsoft. , .



Generic Host



.NET Core 2.1 Generic Host Web Host, , (DI) . .NET Core 3. Generic Host, Generic Host Builder Web Host Builder. , WPF - .



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

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


WebHostBuilder, ASP.NET Core 3.1, .





global.json



.NET Core 2.0, . SDK, . SDK .NET Core 3.0 allowPrerelease rollForward. .NET Core SDK.



{
  "sdk": {
    "version": "3.1.201",
    "rollForward": "latestFeature",
    "allowPrerelease": false
  }
}


GitHub.



, , global.json . , . , SDK , , .



ASP.NET Core Module V2



.NET Core 2.2 IIS .NET Core, Kestrel ( - .NET Core) IIS Kestrel. IIS . , , IIS Kestrel . «OutOfProcess».





.NET Core 2.2 ​​ «InProcess». IIS Kestrel, IIS. , Kestrel. , .





.NET Core 3.1 , ASP.NET Core IIS. .



<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Copyright>Copyright (c) Nop Solutions, Ltd</Copyright>
    <Company>Nop Solutions, Ltd</Company>
    <Authors>Nop Solutions, Ltd</Authors>
    <Version>4.4.0.0</Version>
    <Description>Nop.Web is also an MVC web application project, a presentation layer for public store and admin area.</Description>
    <PackageLicenseUrl>https://www.nopcommerce.com/license</PackageLicenseUrl>
    <PackageProjectUrl>https://www.nopcommerce.com/</PackageProjectUrl>
    <RepositoryUrl>https://github.com/nopSolutions/nopCommerce</RepositoryUrl>
    <RepositoryType>Git</RepositoryType>
    <!--Set this parameter to true to get the dlls copied from the NuGet cache to the output of your project-->
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <!--When true, compiles and emits the Razor assembly as part of publishing the project-->
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
  </PropertyGroup>


, Linux -.

, , , .



Endpoint Routing



.NET Core 2.1 Middleware ( ASP.NET Core MVC) HTTP-. , , , , , MVC . .NET Core 2.2 , (Endpoints), .

.NET Core 3.1 Endpoint Routing , . middleware:



  • EndpointRoutingMiddleware — , URL ,
  • EndpointMiddleware




, , , middleware , .



/// <summary>
/// Configure Endpoints routing
/// </summary>
/// <param name="application">Builder for configuring an application's request pipeline</param>
public static void UseNopEndpoints(this IApplicationBuilder application)
{
    //Add the EndpointRoutingMiddleware
    application.UseRouting();

    //Execute the endpoint selected by the routing middleware
    application.UseEndpoints(endpoints =>
    {
        //register all routes
        EngineContext.Current.Resolve<IRoutePublisher>().RegisterRoutes(endpoints);
    });
}


, .

GitHub.



# 8.0



.NET Core C# 8.0. . , , “ ”.





.





nopCommerce, , .. eCommerce .



Windows 10 (10.0.19041.388), IIS 10 (10.0.19041.1) - - Kestrel . Apache JMeter, . , 50 , — 516 , — 50 , — 80 1 5 . MS SQL Server 2017 (14.0.2014.14).



JMeter , . .



20% ( )





(Average) 13.7% ( )





, .. (throughput) 12.7% ( )





, , , . , . ASP.NET Core .





— 1,5 . , 2 . .



, AspNetCoreModule, .NET Core 2.2. .





, .







.NET Core - . , , . .NET Core , . 13%. , , , . , , performance refactoring : .



, , , .NET Core , , .NET Core 3.1.0 ( 3.5.1) — security patch.



, .NET Core 3.1 LTS 2.1, , . LTS .NET Core. .NET 5, .NET Core 3.1 — .



将来的には、nopCommerceアプリケーションをさらに更新し、.NETCoreプラットフォームが提供する新機能をますます追加する予定です。それらの1つはNewtonsoft.Jsonの代わりにSystem.Text.Jsonを使用する動きですこれは、JSONオブジェクトを処理するための、よりパフォーマンスが高く、より安全で、より標準化されたアプローチです。また、C#8.0が提供するできるだけ多くの機能を実装して使用する予定です。



nopcommerce.comで、またはGitHubのリポジトリにアクセスし、プロジェクトの詳細を確認できます




All Articles