私の知識では、.NET FrameworkとMONOしか知らかったので調べてみた。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch(9.0) 2018-06-27
- Mono 5.16.0
- MonoDevelop 7.6 build 711
調査
- https://www.infoq.com/jp/articles/varieties-dotnet
- https://msdn.microsoft.com/ja-jp/magazine/mt842506.aspx
C#を開発する環境は以下の通り。時系列も以下の通りだと思う。
ソフトウェア | 説明 |
---|---|
.NET Framework | Microsoft製のWindowsでしか使えない閉鎖環境 |
MONO) | LinuxやiOSでも使える公開環境 |
.NET Core | オープンソースな最新.NET環境 |
.NET Standard | 全.NET環境に共通する基本API群 |
きっと以下のような流れなのだと勝手に妄想した。ちゃんとした歴史は知らない。
昔は.NET Frameworkしか存在しなかった。これはMicrosoftが自社製OSのWindowsでしか動作しないC#環境である。 不満を持ったコミュニティが対抗場であるMONOを開発し、オープンソースとして公開した。特定OSやコード非公開などの問題を打破し、クロスプラットフォームやオープンソースを実現した。
クローズドソースではバグの修正すらも企業次第でありユーザにとっての不利益が大きすぎた。それは商品の品質、そして企業への信用にも関わり、営利団体にとってもオープンソース化は一定の検討を余儀なくされる。
Microsoftなどの大企業もオープンソースの波にのり、.NET Coreを開発。.NET Frameworkの一部だけはオープンソース化された。.NET Standardは他の.NET環境に共通する基本API群である。
オープンソース化されない部分
現状、.NET Framework(Windowsのみ)をターゲットにしたソフトウェアが大多数らしい。実際、MonoDevelopでNuGetにてパッケージをインストールしても弾かれて使えないものが多数ある。また、WPF, WindowsForms, ASP.NETなどWindowsAPIと紐付いて他のOSでは使えない部分が多数ある。
以上のことから、.NETやC#は未だMicrosoftの手中であり、Windowsが主戦場であることが実態なのだろう。はたしてLinux上でどれだけできるのか。Windows上のそれと比べて劣ることは間違いない。
Entity Framework Core
Entity Framework (EF) Core は人気の Entity Framework データ アクセス テクノロジの軽量版であり、拡張性に優れ、プラットフォームに依存しません。
Linuxでも使えるの? 名前空間がusing Microsoft.EntityFrameworkCore;
でMicrosoft
という固有名詞が入っていると、Windows独占というイメージだが。
所感
今は基礎部分だけでもLinuxでC#が使えることは有り難い、と思うべき段階なのだろう。Eto.Formsと組み合わせればGUIの部分は結構できるし。