CLRとCLI - の違いは何ですか?
-
20-08-2019 - |
質問
私は正確にCLR&CLIの違いは何であるか知りたいですか?私がこれまで読んだことが何より、CLIは、CLRのサブセットであることを示していると思われます。しかし、CLRは必須ですべてではないでしょうか?正確には何CLIを作成するために、CLRの外に残すことができる?
解決
CLR には、<のhref = "HTTPのMicrosoftの実装です。 ecma-international.org/publications/standards/Ecma-335.htm」のrel = "noreferrer"> CLI標準のます。
他のヒント
CLRは、.NETアプリケーションを安全に/実行ホストされた実行環境である。
あなただけの.NETアプリケーションが起動する前に開始し、負荷.NETのプライベートオペレーティングシステムとしてそれを見ることができます。
CLRは、そうでない場合は、意図的なコードの多くを実装するために書き込むことが必要となる任意の.NETアプリケーションの特定の基本的な要件の世話をします。自然の中で全体的で、優れた効率的かつ安全な方法で実行するアプリケーションのいずれかの種類に不可欠な要件[例えば型キャストエラーを避けるため、ダングリングポインタを避けるため、メモリの割り当てを処理し、必要でないときにそれを解放するなど]
一方、CLIは、アプリケーション実行環境とするために書き換えられることなく、異なるコンピュータプラットフォーム上で使用される多数の高レベル言語を可能に生成されたアプリケーション・コードの性質を実装する方法について説明ガイドラインの仕様/セットであります特定のアーキテクチャます。
CLIは、Microsoftが開発し、ISOおよびECMAによって標準化されています。
CLRは、CLIのVES [仮想実行システム]セクションの実用的な実装であり、MS.NETプラットフォーム
のコアコンポーネントの1つを形成します CLRは料理いる間に素人の言語では、CLIは、レシピです: - )
CLR(共通言語ランタイム)がVES(仮想実行システム)のマイクロソフトの実装です。 CTS(共通型システム)と一緒にVESは、CLS(共通言語仕様)とメタデータ仕様は、すべてのCLI(共通言語基盤)仕様の一部です。
VESはCIL(共通中間言語)モジュール(DLLとEXE)をロードし、実行するために実装されなければならない標準化された仮想マシンの仕様です。 VESの実装はまた、ガベージコレクションやセキュリティなどのランタイム・サービスを提供します。
CLRは、.NETアプリケーションのすべての種類は、あなたがコンパイラをスタックC#またはドットNETから別の言語を使用してコードを書くrun.Forインスタンスは、コンパイルして管理モジュールに変換されている.NETの実行環境です。管理モジュールはすべて、覚えておくべき重要な点は、あなたのソースコードをコンパイルするたび、コンパイラは、管理モジュールに変換していることであるIL(中間言語)とmetadata.Aboveです。これはあなたのプロセッサが事実をexecute.Inますマシンコードではなく、明確にするために、ILは、アセンブリlanguage.Similarlyに近い中間言語は、それはまた、オブジェクト指向機械語として有名である。
より詳細な説明については、この記事をチェックします:
http://alevryustemov.com/programming/common-language-runtime/
CLRは、CLI、CTSでの完全な環境で、CLSは、それはまた、ネイティブコードのためのガベージコレクション、メモリ管理、セキュリティ、intemediate言語をincluse統合で動作します... のCLI の実行可能コードの形式の仕様であり、ランタイム そのコードを実行できる環境ます。