12月4日に、.NET Core 2.2がリリースされました。 「1週間前に誰がニュースに驚いたのか?」-あなたは尋ねます、あなたは正しいでしょう...そして、ところで、あなたはすでに更新されていますか? )
ケースに移ります。 新しいリリースには、ランタイムの診断の改善、Windows用のARM32のサポート、およびSQLクライアント用のAzure Active Directoryのサポートが含まれています。 このリリースの最大の改善点はASP.NET Coreです。
ASP.NET Core 2.2とEntity Framework Core 2.2は同日にリリースされました。
Windows、macOS、およびLinux用の.NET Core 2.2は、すでに次のリンクで待機しています。
.NET Core 2.2のサポートは、 Visual Studio 15.9 、Visual Studio for Mac、およびVisual Studio Codeにあります。
Dockerコンテナーは、.NET CoreとASP.NET Coreの両方についてmicrosoft / dotnetで入手できます。
このリリースに関する最も完全な情報は、 .NET Core 2.2リリースノートに記載されています 。 追加の指示、既知の問題、およびそれらを回避する方法があります。 dotnet / core#2098のコメントで、このドキュメントで見つかった欠陥をお知らせください。
階層型コンパイル
マルチレベルコンパイルは、ランタイムがJITコンパイラをよりインテリジェントに使用して、アプリケーションの起動段階とその動作中のパフォーマンスを最大化する段階の両方でパフォーマンスを向上させる機能です。 これを行う機能は、.NET Core 2.1のオプション機能として追加され、その後.NET Core 2.2プレビュー2でデフォルトで有効になりました。 .NET Core 2.1と同じように、オプションにしました。 ただし、.NET Core 3.0では完全に切り替える予定です。
ランタイムイベント
通常、現在のプロセスのGC、JIT、またはThreadPoolなどのランタイムサービスを監視して、アプリケーションの寿命中にこれらのサービスがどのように動作するかを理解することは理にかなっています。 Windowsシステムでは、これは通常、ETWを使用して実行され、現在のプロセスのETWイベントを監視します。 この方法はまだうまく機能しますが、ETWを使用することは常に可能とは限りません。可能な場合は困難になる可能性があります。 たとえば、権限が不十分な環境やLinux / macOSで実行しています。
.NET Core 2.2以降、CoreCLRイベントはEventListener
クラスで処理できます。 これらのイベントは、GC、JIT、ThreadPool、およびinteropeの動作を説明します。 これらは、WindowsのCoreCLR ETWプロバイダーの一部として現在利用可能なものと同じイベントです。 このアプローチにより、アプリケーションはイベントを処理したり、トランスポートメカニズムを使用してイベントをテレメトリ集約サービスに送信したりできます。
これは、イベントをサブスクライブする方法です。
internal sealed class SimpleEventListener : EventListener { // EventSource. protected override void OnEventSourceCreated(EventSource eventSource) { // EventSource .NET runtime . if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime")) { EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1)); } } // . protected override void OnEventWritten(EventWrittenEventArgs eventData) { // . Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}"); for (int i = 0; i < eventData.Payload.Count; i++) { string payloadString = eventData.Payload[i] != null ? eventData.Payload[i].ToString() : string.Empty; Console.WriteLine($"\tName = \"{eventData.PayloadNames[i]}\" Value = \"{payloadString}\""); } Console.WriteLine("\n"); } }
SqlConnectionでのAccessTokenサポート
SQL Server用のADO.NETプロバイダーであるSqlClientは、Azure Active Directoryを使用したSQL Serverへの接続の認証を許可するAccessTokenプロパティの設定をサポートするようになりました。 この機能の使用を開始するには、Microsoft.IdentityModel.Clients.ActiveDirectoryのNuGetパッケージに付属するActive Directory Authentication Library for .NETを使用してアクセストークンを取得する必要があります。
Azure ADを使用してSQL Serverへの接続を認証する方法は次のとおりです。
// , ADAL.NET var authContext = new AuthenticationContext(authority); var authResult = await authContext.AcquireTokenAsync(appUri, clientCredential); // SQL Server var sqlConnection = new SqlConnection(connectionString); sqlConnection.AccessToken = authResult.AccessToken; await sqlConnection.OpenAsync();
詳細については、 ADAL.NETおよびAzure Active Directoryのドキュメントを参照してください。
メインの前にコードを実行する
.NET Coreでは、mainメソッドを開始する前にコードを埋め込むことができます。これは、Startup Hookを使用して行われます。 これらのフックにより、ホストは、コードを再構築または変更することなく、デプロイ後にアプリケーションの動作をカスタマイズできます。
ここで、ホスティングプロバイダーは、AssemblyLoadContextなど、アプリケーションへのメインエントリポイントの読み込み動作に影響を与える可能性がある設定を含む、独自の構成とポリシーを作成することを意味します。 このフックを使用して、トレースを構成したり、テレメトリを実装したり、コールバックを接続したり、特定のランタイム環境に固有のその他の動作設定を行うことができます。 フックは、エントリポイントに関して完全に分離されたエンティティであるため、アプリケーションコードを変更する必要はありません。
より詳細な説明はドキュメントにあります 。
Windows ARM32
.NET Core 2.1以降、Linux ARM32に既に存在するものと同様のWindows ARM32のサポートを追加しています。 Windowsは、 Windows IoT Coreのおかげで、しばらくの間WIN32をサポートしています。 Windows Server 2019リリースの一部として、NanoserverにARM32サポートが追加されました。 .NET Coreは、NanoserverとIoT Coreの両方で使用できるようになりました。
ARM32用のNanoserver Dockerコンテナは、いつものように、Docker Hubのmicrosoft / dotnetに表示されます。
今日、Windows ARM32用の.NET Coreアセンブリを公開したいと考えていますが、それらを公開しても意味のない遅れたバグにつまずきました。 2019年1月頃に.NET Core 2.2.1のアセンブリが表示されることを願っています。
サポートされているプラットフォーム
.NET Core 2.2は、次のオペレーティングシステムでサポートされています。
- Windowsクライアント:7、8.1、10(1607+)
- Windowsサーバー:2008 R2 SP1 +
- macOS:10.12+
- RHEL:6+
- Fedora:26+
- Ubuntu:16.04+
- Debian:9+
- SLES:12+
- openSUSE:42.3+
- アルパイン:3.7+
サポートされているハードウェアプラットフォーム:
- x64-Windows、macOS、およびLinux
- x86-Windows
- ARM32-Linux(Ubuntu 16.04 +、Debian 9+)
- ARM32-Windows(1809+; 1月に利用可能)
おわりに
.NET Core 2.2は、プラットフォームの主要な機能強化を備えたリリースです。 試してみて、あなたがそれについてどう思うか教えてください。 さらに、ASP.NET Core 2.2およびEntity Framework 2.2の改善点を理解することは理にかなっています。
1月1日からのDotNextのチケットの価格が上がることを忘れないでください。 個人-1000人、標準-2000人。 アーリーバードに関する詳細はサイトにあります 。