去年のBuild 2018で発表された.NET Core 3.0ですが、年末にはPreviewがリリースされました。
.NET Core 3.0のリリースは、以下のように順次行われています。
- 2018/12/04 Announcing .NET Core 3 Preview 1 and Open Sourcing Windows Desktop Frameworks
- 2019/01/29 Announcing .NET Core 3 Preview 2
- 2019/03/06 Announcing .NET Core 3 Preview 3
現在は、Preview 3が最新です。
WPFとWinForms
.NET Core 3.0では、Windows向けのみの機能ですが、WPF (Windows Presentation Foundation)やWinForms (Windows Forms)がサポートされるとMicrosoft Build 2018で発表されました。これらの機能がサポートされると、既存のデスクトップアプリも容易に.NET Core 3.0に移行することができます。
年末にPreview版がリリースされ始めたので.NET Core 3.0を使ってWPFやWinFormsアプリを動かしてみたという体験記もいろいろな人が投稿していますね。
高速化
.NET Coreのランタイムエンジンは、速度の面においてもチューニングされていることもあり、魅力を感じていました。Build 2018でのデモでは、アプリのランタイムエンジンを.NET Frameworkから.NET Coreに変更しただけで、アプリ部分の修正はしなくても、実行速度が数倍に速くなっていました
その Microsoft Build 2018 の時のデモのビデオは以下です。
Modernizing Desktop Apps on Windows 10 with .NET Core 3.0 and much more
このビデオの47:15あたりから、.NET Frameworkでの実行デモがあり、実行時間は576ミリ秒です。 ビデオの47:50あたりから、.NET Coreでの実行デモがあり 、実行時間は 209ミリ秒です。アプリそのものは変更せず、ランタイムエンジンを変更しただけで、2倍以上に高速化しています。
ランタイムエンジンがアプリの一部
また、.NET Frameworkは、ランタイムエンジンがOSの一部(システムの一部)としてインストールされ、ランタイムエンジンの更新はOS全体(アプリ全体)に影響がありました。しかし、.NET Coreの場合は、ランタイムエンジンはアプリの一部であり、アプリの一部としてアプリのフォルダーにインストールされます。ランタイムエンジンの更新は、そのアプリのみにしか影響しません。そのため、開発者としては容易にランタイムエンジンを更新することができます。
デメリット
ただし、弱点もあります。ランタイムエンジンに脆弱性が発見されたときで、ランタイムエンジンを更新する必要があるときです。
.NET Frameworkに脆弱性が発見されたときは、マイクロソフトが修正してWindows Update経由で自動的に更新されます。そのため、アプリの開発者はアプリのインストーラーの更新などは必要ありませんでした。
しかし、.NET Coreのアプリの場合、 .NET Coreをアプリの一部としてアプリのインストールフォルダーに抱えています。そのため、.NET CoreのランタイムエンジンはWindows Updateでは更新されません。ランタイムエンジンを更新するためには、アプリのインストーラーを更新してリリースすることが必要となります。
アプリの開発が継続しており、定期的にインストーラーを更新しているアプリであれば問題ありません。しかし、定期的な更新をしていないアプリや開発が終了しているアプリのときに問題になります。ランタイムエンジンの更新のためだけに、アプリのインストーラーを更新して、さらに、ユーザー向けにリリースする必要があります。
ただ、これをデメリットと感じるか、感じないかは、開発者によると思います。