Sparkieの答えはそれを理解しました。少し補足させてください。
「.NET is cross platform」は、フレームワークと元々作成された世界の両方が変化し進化したため、あまりにも曖昧な声明です。
短い答えは次のとおりです。
.NETおよびその派生物であるCommon Language Infrastructure Standardを強化する基礎となるエンジンはクロスプラットフォームであり、コードを複数のプラットフォームに移動させる場合と同様に、適切なプラットフォームで適切なAPIを使用して配信することを計画する必要があります各プラットフォームで最高の体験。
電話からメインフレームへの違いが大きすぎるため、CLIファミリは「一度だけ書き込み、どこでも実行」アプローチを試みていません。代わりに、プラットフォーム固有のAPIとランタイム機能のユニバースが登場し、各プラットフォームで優れたエクスペリエンスを作成するための適切なツールを開発者に提供しています。
考えてみてください:プログラマーはWindows PCやUnixサーバーをターゲットにしなくなりました。世界は、PC、ゲーム機、強力な携帯電話、セットトップボックス、大型サーバー、分散したマシンクラスターなど、魅力的なプラットフォームに囲まれています。 すべてのプラットフォームに適合するサイズは、小さなデバイスでは肥大化しただけで、大規模なシステムでは力不足に感じるだけです。
Microsoftの.NET Framework製品はクロスプラットフォームではなく、Windows上でのみ動作します。Microsoftの.NET Frameworkには、Windows Phone 7、XBox360、Silverlightを介したブラウザーなど、他のシステムで実行されるバリエーションがありますが、それらはすべてわずかに異なるプロファイルです。
現在では、主要なメインストリームOS、電話、モバイルデバイス、組み込みシステム、およびサーバーをすべて.NETベースのテクノロジーでターゲットにできます。各ケースで使用するCLI実装を示すリストを次に示します(このリストは包括的なものではありませんが、ケースの99%をカバーする必要があります)。
- x86およびx86-64ベースのPCコンピューター:
- Windowsの実行->通常、.NETまたはSilverlightを実行しますが、ここで完全なMonoを使用することもできます。
- Linux、BSD、またはSolarisの実行->完全なMonoまたはSilverlightの実行
- MacOS Xの実行->完全なMonoまたはSilverlightの実行
- Androidの実行-> Mono / Androidサブセットを実行します
- ARMコンピューター:
- Windows Phone 7の実行:Compact Framework 2010を実行します
- Windows 6.5以前の実行:古いCompact Frameworkを実行します
- Androidデバイス:Mono / Androidを実行します
- PowerPCコンピューター:
- 完全なLinux、BSD、またはUnixオペレーティングシステムで完全なMonoを実行する
- PS3、Wii、またはその他の組み込みシステムで組み込みMonoを実行します。
- XBox360では、CompactFrameworkを実行します
- S390、S390x、Itanium、SPARCコンピューター:
- その他の組み込みオペレーティングシステム:
- モバイルプロファイルで.NET MicroFrameworkまたはMonoを実行します。
ニーズに応じて、上記で十分かどうかが決まります。どこででも同じソースコードを実行することはほとんどありません。たとえば、XNAコードはすべてのデスクトップで実行されることはありませんが、.NETデスクトップソフトウェアはXNAまたは電話で実行されることはありません。通常、コードを変更して、.NET Frameworkの他のプロファイルで実行する必要があります。私が知っているプロファイルのいくつかを以下に示します。
- .NET 4.0プロファイル
- Silverlightプロファイル
- Windows Phone 7プロファイル
- XBox360プロファイル
- モノコアプロファイル-.NETプロファイルに従い、Linux、MacOS X、Solaris、Windows、およびBSDで使用可能です。
- .NET Micro Framework
- iPhoneプロファイルのモノ
- Androidプロフィールのモノ
- PS3プロファイルのモノラル
- Wiiプロファイルのモノ
- Moonlightプロファイル(Silverlightと互換性あり)
- Moonlight拡張プロファイル(Silverlight + .NET 4 APIのフルアクセス)
したがって、これらのプロファイルはそれぞれ実際にはわずかに異なり、これは悪いことではありません。各プロファイルは、ホストプラットフォームに適合し、意味のあるAPIを公開し、意味のないAPIを削除するように設計されています。
たとえば、ホストブラウザーを制御するSilverlightのAPIは、電話では意味がありません。また、XNAのシェーダーは、同等のサポートがないPCハードウェアでは意味がありません。
.NETは、ハードウェアとネイティブプラットフォームの基本的な機能から開発者を隔離するソリューションではないことにすぐに気付くと、より良い結果が得られます。
つまり、いくつかのAPIとスタックは複数のプラットフォームで利用できます。たとえば、ASP.NETはWindows、Linux、Solaris、MacOS Xで使用できます。これらのAPIは.NETとMonoの両方に存在するためです。ASP.NETは、XBoxやWindows Phone 7など、Microsoftがサポートしているプラットフォームの一部では利用できず、WiiやiPhoneなどのMonoがサポートしている他のプラットフォームでもサポートされていません。
次の情報は11月21日時点でのみ正しいものであり、Monoの世界では多くのことが変更される可能性があります。
同じ原則を他のスタックにも適用できます。完全なリストには適切なテーブルが必要になります。これをここで提示する方法はわかりませんが、特定のプラットフォームには存在しない可能性のあるテクノロジーのリストです。ここにリストされていないものは何でも利用可能であると想定できます(私が見逃したものの編集を送ってください):
Core Runtime Engine [どこでも]
- Reflection.Emitのサポート[WP7、CF、Xbox、MonoTouch、PS3を除くすべての場所]
- CPU SIMDサポート[Linux、BSD、Solaris、MacOSX。まもなくPS3、MonoTouch、MonoDroid]
- 継続-Mono.Tasklets [Linux、BSD、Solaris、MacOS、PS3、Wii]
- アセンブリのアンロード[Windowsのみ]
- VMインジェクション[Linux、BSD、MacOS X、Solaris]
- DLR [Windows、Linux、MacOS X、Solaris、MonoDroid]
- ジェネリック[PS3およびiPhoneの制限事項]。
言語
- C#4 [どこでも]
- サービスとしてのC#コンパイラ(Linux、MacOS、Solaris、BSD、Android)
- IronRuby [どこでも、execpt WP7、CF、Xbox、MonoTouch、PS3]
- IronPython [どこでも、WP7、CF、Xbox、MonoTouch、PS3]
- F#[どこでも、execpt WP7、CF、Xbox、MonoTouch、PS3]
サーバースタック
- ASP.NET [Windows、Linux、MacOS、BSD、Solaris]
- ADO.NET [どこでも]
- LINQ to SQL [どこでも]
- Entity Framework [どこでも]
- コアXMLスタック[どこでも]
- XMLシリアル化[どこでも、WP7、CF、Xboxを除く]
- LINQ to XML(どこでも)
- System.Json [Silverlight、Linux、MacOS、MonoTouch、MonoDroid]
- System.Messaging [Windows; Linux、MacOS、およびSolarisではRabbitMQが必要です]
- .NET 1エンタープライズサービス[Windowsのみ]
- WCF [Windowsで完了; Silverlight、Solaris、MacOS、Linux、MonoTouch、MonoDroidの小さなサブセット]
- Windowsワークフロー[Windowsのみ]
- カードスペースID [Windowsのみ]
GUIスタック
- Silverlight(Windows、Mac、Linux-Moonlightを使用)
- WPF(Windowsのみ)
- Gtk#(Windows、Mac、Linux、BSD)
- Windows.Forms(Windows、Mac、Linux、BSD)
- MonoMac-ネイティブMac統合(Macのみ)
- MonoTouch-ネイティブiPhone統合(iPhone / iPadのみ)
- MonoDroid-ネイティブAndroid統合(Androidのみ)
- Media Center API-Windowsのみ
- クラッター(WindowsおよびLinux)
グラフィックライブラリ
- GDI +(Windows、Linux、BSD、MacOS)
- クォーツ(MacOS X、iPhone、iPad)
- カイロ(Windows、Linux、BSD、MacOS、iPhone、iPad、MacOS X、PS3、Wii)
モノラルライブラリ-クロスプラットフォーム、.NETで使用できますが、手動でビルドする必要があります
- サービスとしてのC#4コンパイラ
- Cecil-CIL操作、ワークフロー、CILの計測、リンカー
- RelaxNGライブラリ
- Mono.Data。*データベースプロバイダー
- 完全なSystem.Xaml(.NETがスタックを提供しないセットアップで使用するため)
MonoTouchは、iPhoneで実行されるMonoを意味します。MonoDroidは、Android上で実行されるMonoを意味します。PS3およびWiiポートは、ソニーおよび任天堂の資格を持つ開発者のみが利用できます。
正式性の欠如をおIび申し上げます。