やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

C#の実行環境について調べた(.NET Framework, .NET Core, .NET Standard, MONO)

 私の知識では、.NET FrameworkとMONOしか知らかったので調べてみた。

対象環境

調査

 C#を開発する環境は以下の通り。時系列も以下の通りだと思う。

ソフトウェア 説明
.NET Framework Microsoft製のWindowsでしか使えない閉鎖環境
MONO) LinuxiOSでも使える公開環境
.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 FrameworkWindowsのみ)をターゲットにしたソフトウェアが大多数らしい。実際、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独占というイメージだが。

所感

 今は基礎部分だけでもLinuxC#が使えることは有り難い、と思うべき段階なのだろう。Eto.Formsと組み合わせればGUIの部分は結構できるし。