.NET技術の対象、関係性を整理する
Microsoftはここ数年、.NET技術の対象プラットフォームを意欲的に拡大しています。
XamarinでAndroid, iOSなどのモバイルOSを、.NET CoreでLinuxサーバプラットフォームを取り込み、なりふり構わず邁進しています。
また、拡大した対象の開発技術のほとんどを無償で使うことができ、従来からの C#er / VBer には嬉しい限りです。
しかしながら、変革速度があまりに速いため、どの技術が何に対応するのか、いまひとつわかりにくい状態になっています。
そこで今回は、主要フォーマットごとの対象や特徴、関係性を整理してみます。
.NET Framework
従来のいわゆる「ドットネット」といえば、こちら。
対象プラットフォームは、Windows
だけです。
クラスライブラリとして参照可能なフォーマットは、.NET Framework
/ .NET Standard
/ Portable Class Library(PCL)
の3種類です。
SI業界にはお馴染みですね。
歴史が長いため実績も情報も多く、サードパーティライブラリが充実しています。
以下のフォーマットは、この.NET Framework
のサブセットを基本としています。
.NET Core
本ブログのテーマ、.NET Core
です。
Windows
/ Linux
/ macOS
の3つのプラットフォームで動作します。
クラスライブラリとして参照可能なフォーマットは、.NET Core
/ .NET Standard
の2種類だけです。
.NET Framework
のうち主要部分の多くが移植されており、Windowsプログラマにとっては敷居が低くなっています。
Windows.Forms
やWPF
などのUI関連機能はオミットされており、Webアプリケーション / API などのサーバサイドがターゲットになりそうです。
今回紹介する中では最後発のフォーマットになるため、まだ日本語情報が少なく、外部ライブラリの対応も現在進行中といったところです。
Xamarin.Forms
Microsoftが先だって買収したXamarin
の中でも、最も意欲的なフォーマットです。
Android
/ iOS
/ Windows Phone
/ Windowsストアアプリ
など、広いプラットフォームを対象としています。
クラスライブラリとして参照可能なフォーマットは、主にPortable Class Library(PCL)
の1つだけです。
しかし、中枢となるXamarin.Forms
プロジェクトを.NET Stadard
フォーマットに変換することで、.NET Standard
フォーマットのライブラリも参照可能になっています。
対象が広い上にUIを制御下に置くため、機能的には各プラットフォームの最小公倍数的な実装になっています。
厳密にはXamarin.Forms
が直接プラットフォームの上で動くわけではなく、各プラットフォーム向けのサブプロジェクトを経由して実行されます。
実質的にPortable Class Library(PCL)
(もしくは.NET Standard
) として動作しており、.NET Framework
サブセットとしては最小限の機能に制限され、開発難易度が高くなっています。
参考:
.NET Standard Library with Xamarin Forms - Xamarin Help
GitHub - adamped/XamarinForms.NetStandard: Sample application showing .NET Standard with Xamarin Forms
Xamarin.Android
Xamarin
の中で、Android
を対象としたフォーマットです。
対象プラットフォームはAndroid
のみ。
しかし参照可能なクラスライブラリフォーマットは多く、.NET Standard
/ Portable Class Library(PCL)
/ Xamarin.Android
/ .NET Framework
の4種類です。
ただし.NET Framework
の全機能が使えるわけではなく、バイナリ参照の際はビルドが通っても実行時に落ちることがあり、注意が必要です。
.NET Framework
サブセットとしては、Portable Class Library(PCL)
より広い範囲の機能が用意されています。
中身はAndroid SDK
のラッパーなので、C# で実装するというよりは、Android-Java を C# に翻訳するように書き進めることになります。
Xamarin.iOS
Xamarin
の中で、iOS
を対象としたフォーマットです。
当然ながら対象プラットフォームはiOS
だけです。
Xamarin.Android
と同様に多くのクラスライブラリフォーマットが参照可能で、.NET Standard
/ Portable Class Library(PCL)
/ Xamarin.iOS
/ .NET Framework
の4種類です。
注意点も同じく、.NET Framework
のサブセットであることを意識する必要があります。
こちらも中身はiOS SDK
のラッパーにつき、Objective-C や Swift を C# に置き換えるような実装になります。
Windows
でも開発が可能ですが、ビルドの際に必ずmacOS
が必要になります。
Portable Class Library(PCL) / .NET Standard
これら2つは、クラスライブラリ専用のフォーマットです。
Portable Class Library(PCL)
はモバイル開発でのクロスプラットフォーム機能集約を目的とした、.NET Framework
の小さなサブセットです。
その後.NET Core
の策定により対象プラットフォームが拡大したため、PCLの後継規格として.NET Standard
が作られました。
こちらもサブセットとしての基本機能範囲は小さいものの、Microsoft公式のNuGetパッケージ
が多く提供されており、PCLよりも難易度が下がっています。
今後最もツブシが効きそうなのは、この.NET Standard
でしょうか。