知識マップ: .NET Native AOTとは - JITやtrimmingとの違い

記事「.NET Native AOTとは - JITやtrimmingとの違い」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

.NET Native AOTは、実行時JITを使わずpublish時にネイティブコードへ事前コンパイルする発行方式で、起動時間とメモリ占有を改善しやすく、.NETランタイム未インストールの環境にも配りやすい。ReadyToRunがILを残しつつJITを一部前倒しする方向であるのに対し、Native AOTは実行時JIT自体を前提にしない分、trimmingがほぼ前提になり、自由なリフレクションや動的コード生成、built-in COMとは相性が悪くなる。WindowsのNative AOTにはbuilt-in COMが無く、WPFはtrimmingとの相性の悪さから、WinFormsはbuilt-in COM marshallingへの依存の重さから、いずれも.NET SDK側でtrimmingのサポートが無効化されており、最初のNative AOT候補としては慎重に扱うべきとされる。COMが必要な場合は、ComWrappersを前提に設計し直すことが有力な選択肢になる。

.NET Native AOTの知識マップNative AOTがJITやReadyToRunとどう違い、trimmingやリフレクション・built-in COMとどのように衝突し、WPFやWinFormsがなぜ慎重な扱いになるのかを示す図両立しない前提とする前提とする両立しない両立しない両立しない推奨される対応両立しない前提とする用いるのは非推奨用いるのは非推奨利用する軽減する前提とする利用する前提とするNative AOTJIT(Just-In-Time)コンパイルReadyToRuntrimming(トリミング)リフレクション動的コード生成(Reflection.Emit等)built-in COM interopComWrappers / source-generated COMWPFWindows Formssource generatorSystem.Text.Jsonのsource generationself-contained発行single-file発行.NET(Core以降)

概念間の関係(全16件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Native AOT
.NETアプリを単一のネイティブバイナリへ事前コンパイルする発行方式。非対応リストにC++/CLIが明記されている。
ReadyToRun
ILを残したまま、JITの仕事の一部をpublish時に前倒しする発行方式。実行時JITもまだ使う場面がある。
ComWrappers / source-generated COM
built-in COMを使わずにCOM相互運用を実現する、source generatorベースの仕組み。
WPF
XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。
Windows Forms
デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。
System.Text.Jsonのsource generation
reflectionに頼らずJSONのシリアライズ・デシリアライズコードをビルド時に生成する仕組み。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。