「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[.NET開発]]
--[[移行・マイグレーション]]

* 目次 [#ce88f61c]
#contents

*概要 [#wa508363]
-以前は、[[PCL>#d6cc234a]]のレベルのクロスプラットフォーム対応しか無かったが、~
[[.NET Core>#ybced451]]の登場により、状況は大きく変わった。

-マイクロソフトは、あらゆる環境に対応する開発ツール群を提供しようとしている。
--Any Developer (どんな開発者にも)
--Any App (どんなアプリケーションにも)
--Any Platform (どんなプラットフォームにも)

>この中の、Any Platform に対応するのが、[[.NET Core>#ybced451]]。

**俯瞰図 [#n8b07f6e]
とりあえず雰囲気を掴むための最新の図。

#ref(XNET.png,left,nowrap,.NETのクロスプラットフォーム対応)

**参考 [#x86dd45a]
-【特別企画】Windowsにこだわらない、サティア・ナデラのMicrosoft - クラウド Watch~
https://cloud.watch.impress.co.jp/docs/special/678748.html
--.NETはマルチプラットフォーム化される
>こういった変化に対応し、さらにMicrosoft独自のテクノロジーを生かしていくためには、~
.NET Frameworkをスタンダードにして、マルチプラットフォームで動作できるようにしていく必要があるのだと思われる。

-「好みのデバイスで好みの開発言語を」--新しいVisual Studioの世界 - ZDNet Japan~
https://japan.zdnet.com/article/35092575/
>.NETスタンダードライブラリを構築して、.NETエコシステムの拡大を目指す。

*用語 [#jee0794a]
色々用語が出てくるので纏める。

**CLI [#r97c0be9]
-共通言語基盤(CLI : Common Language Infrastructure)
-.NET Frameworkの基幹を構成する仕様(ECMA-335 および ISO/IEC 23271)
-CLIは、言語やプラットフォームに依存しない環境を定義しており、~
様々な言語で書いたソースコードを他のプラットフォームでも使える。

***概念 [#a045d4d9]
-共通型システム
--CTS : Common Type System
--プログラミング言語間で共通して用いられる型の集合

-メタデータ
--プログラムの構造に関する情報。
--プログラミング言語上やツールなどから参照できる。

-共通言語仕様
--CLS: Common Language Specification
--相互運用性のためのプログラミング言語に対する規定

-仮想実行システム
--VES: Virtual Execution Evnironment
--CLIに適合したプログラムの読込と実行。
--メタデータを活用して動的に機械語を生成する。

***参考 [#j5154bb4]
-共通言語基盤 - Wikipedia~
https://ja.wikipedia.org/wiki/%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4
-共通言語仕様の概要~
https://msdn.microsoft.com/ja-jp/library/aa735713.aspx

**.NET Framework [#zba914de]
皆さんご存知の.NET Framework。

-.NET Framework - Wikipedia~
https://ja.wikipedia.org/wiki/.NET_Framework

***BCL [#t5566b3a]
-BCL : Base Class Library(基本クラスライブラリ)
-全てのCLI言語から利用可能な共通言語基盤 (CLI) 標準ライブラリ

-基本クラスライブラリ - Wikipedia~
https://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA

***FCL [#faa7f3bd]
-FCL : Framework Class Library
-.NET FrameworkのBCLの意味で使用される、BCLのスーパーセット
-Common Language Infrastructureで定義されている標準ライブラリの.NET Framework実装

***PCL [#d6cc234a]
-PCL : Portable Class Library
-PCLの後継は[[.NET Standard]]。
-Microsoft プラットフォーム間でコードを共有できる~
クロスプラットフォーム アプリ・ライブラリを開発可能。

**[[.NET Core]] [#ybced451]
**TFM [#qe7f85c7]

***[[.NET Core]] [#ybced451]
-Consoleアプリケーション : [[.NET Core]]
-デスクトップ・アプリケーション : [[UWP]]
-Webアプリケーション : [[ASP.NET Core]]

**Mono [#r987a356]
***Mono [#r987a356]
スマホネイティブ・アプリケーション : [[Xamarin]]

**[[.NET Standard]] [#b5de4ecc]
***[[.NET Standard]] [#b5de4ecc]
.NET 実装の動作の統一性を確立、~
クロスプラットフォーム対応を推進する。

-[[.NET Framework>#zba914de]] > [[BCL>#t5566b3a]]
-[[.NET Core>#ybced451]] > [[CoreFx>.NET Core#gd2a8024]]
-[[Mono>#r987a356]] > [[Mono>#r987a356]]

***[[.NET 5]] [#wb6c20f7]

*移行 [#p6d53d28]

**[[.NET Standardへの移行]] [#c97b888a]

**[[.NET Coreへの移行]] [#xd12992f]

**[[ASP.NET Coreへの移行]] [#ob21c056]

**アナライザー [#we621859]
Roslynベースのアナライザー

-参考
--Roslyn ベースのアナライザー - .NET | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/

***.NET API アナライザー [#j9ae38fb]
-C# API の互換性リスクの可能性および非推奨の API の呼び出しを検出する

-参考
--.NET API アナライザー | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/api-analyzer
--NuGet Gallery | Microsoft.DotNet.Analyzers.Compatibility~
https://www.nuget.org/packages/Microsoft.DotNet.Analyzers.Compatibility/

***.NET Portability Analyzer [#j9ae38fb]
-以下のケースで役立つ
--ライブラリでマルチプラットフォームをサポートしたい場合や、
--アプリケーションで他のTFMとの互換性を確保する作業を知りたい場合は、

-参考
--.NET Portability Analyzer - .NET | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/portability-analyzer
--Portability Analyzerを使ってライブラリの.NET Standard準拠を調べよう - ryuichi111stdの技術日記~
http://ryuichi111std.hatenablog.com/entry/2017/03/07/142248

*事例 [#q943536c]

-コンペア~
https://github.com/OpenTouryoProject/OpenTouryo/compare/02-20...SupportNetStandard2&NetCore2

**移行性の評価 [#ufd8a8cd]
-.NET Core2.0移行の移行性に関する報告 - OSSコンソーシアム~
https://www.osscons.jp/jofbwaon0-537/#_537

**移行元 [#n17481e6]
https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20

***ライブラリ [#we603e2f]
https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20/root/programs/C%23/Frameworks/Infrastructure

***サンプル [#o0814556]
https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20/root/programs/C%23/Samples

**移行先 [#e3670d04]
https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2

***ライブラリ [#od2b5ee9]
https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2/root/programs/CS/Frameworks/Infrastructure

***サンプル [#k18eb258]
https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2/root/programs/CS/Samples4NetCore

*参考 [#n7c12b05]
-ASCII.jp:.NET Core / .NET Framework / Xamarin / Monoの関係を整理する (1/3)~
http://ascii.jp/elem/000/001/156/1156721/

-.NET とか Mono とか Xamarin とかいったい何? Microsoftのプロダクト? - (-> % read write unlearn)~
http://hatappo.hatenadiary.jp/entry/2016/06/29/224930

-さいきんの.NETのこととかNuGetとかCoreとかよく分からないよねーって話 - Qiita~
http://qiita.com/acple@github/items/e80bef939583fc2b0e5e

-.NET Core とマルチプラットフォーム~
https://www.slideshare.net/shozon/net-core-66620714

**.NET API Browser [#p5957fa0]
https://docs.microsoft.com/en-us/dotnet/api/index

***.NET Standard [#q93b75dc]
https://docs.microsoft.com/en-us/dotnet/api/index?view=netstandard-2.0

***.NET Framework [#x490e789]
https://docs.microsoft.com/en-us/dotnet/api/index?view=netframework-4.7.1
https://docs.microsoft.com/en-us/dotnet/api/index?view=netframework-4.5

***.NET Core [#v73e6d06]
https://docs.microsoft.com/en-us/dotnet/api/index?view=netcore-2.0

-ASP.NET Core~
https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0

***Mono (Xamarin) [#e8aacd69]
-iOS~
https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinios-10.8
-Android~
https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinandroid-7.1
-Mac~
https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinmac-3.0

***Azure SDK for .NET [#gbc10a74]
https://docs.microsoft.com/en-us/dotnet/api/index?view=azure-dotnet

----
Tags: [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS