ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ clr ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΊΠΎΠ΄Ρ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠΎ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ C/C++, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ». Π ΠΌΠΈΡΠ΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π° Π²ΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ. Π‘Π°ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° (ΠΠ‘) Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ. ΠΠ° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ β ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ IL ΠΈΠ· ΠΊΠΎΠ΄Π° Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ΅Π΄Π° CLR Π±Π΅ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π±Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ JIT Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° Π¦Π. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ΅Π΄Π΅ CLR ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΎΠΌ CIL ΠΈΠ»ΠΈ MSIL.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΡΠ΅Π΄Π° CLR ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ Π΄Π°ΠΆΠ΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊ. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ. ΠΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ ΠΈ Π²ΡΠ·Π²Π°ΡΡ Π΅Π΅. ΠΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ Π³ΡΠ°Π½ΠΈΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, C# β ΡΡΠΎ ΡΠ·ΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΏΡΡΠΌΠΎ Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ CLR.
ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΡΠΎΡΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅:
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΡΡΠ΅Π΄Ρ CLR, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΠΎΠ±ΡΠ°ΡΠ°ΡΡΠΈΡ ΡΡ ΠΊ ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² MSIL ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ MSIL Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ MSIL Ρ ΡΠ΅Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄Π»Ρ Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ΄ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ.
Π‘ΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΈ ΡΡΠ΄ ΡΠ»ΡΠΆΠ±, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
ΠΡΠ±ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΡΠ΅Π΄ΠΎΠΉ CLR, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Visual Basic, C#, Visual C++, F# ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΎΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Eiffel, Perl ΠΈΠ»ΠΈ COBOL.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΠΉ, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΡΠ΅Π΄ΡΡΠ². ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΡΡΠ΅Π΄ΡΡΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΊΠΎΠ΄Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, Π° Π½Π΅ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² ΡΠΎΡΡΠ°Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ CLS. ΠΡΡΠΈΠ±ΡΡ CLSCompliantAttribute ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ CLS-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² MSIL
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Microsoft (MSIL), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. Π―Π·ΡΠΊ MSIL Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ MSIL Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ MSIL ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅.
ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ΄ MSIL, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠ΄Π΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π° ΡΠΈΠΏΠ°, ΡΠ»Π΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. MSIL ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌ (PE) ΡΠ°ΠΉΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ°Ρ Microsoft PE ΠΈ COFF, ΡΠ°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡ ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ΄ MSIL ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ ΡΡΠ΅Π΄Ρ CLR. ΠΠ°Π»ΠΈΡΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π½Π°ΡΡΠ΄Ρ Ρ MSIL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π±Ρ. ΠΡΠΎ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ·ΡΠΊΠ΅ IDL. Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ MSIL Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
ΠΡΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ·ΡΠΊ MSIL ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠ±ΠΎΡΠΎΠΊ MSIL, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Ρ ΡΠ°Π·Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ API ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΡΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΏΠ°ΠΌΡΡΡ Π½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎΡΡ Π² PE-ΡΠ°ΠΉΠ»Π΅ MSIL Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ MSIL ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°Π³ΡΡΠ·ΡΠΈΠΊ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π·Π°Π³Π»ΡΡΠΊΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΡΠΈΠΏΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠΈΠΏ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°Π³Π»ΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ MSIL Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π°Π³Π»ΡΡΠΊΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π²Π΅Π΄ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ NGen.exe
Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ MSIL-ΠΊΠΎΠ΄ ΡΠ±ΠΎΡΠΊΠΈ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΡΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅, ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ. Π§ΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π²ΡΠ·Π²Π°Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ. ΠΠ³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠΈΠΌ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΠ·ΠΎΠ²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠ±ΠΎΡΠΎΠΊ, ΡΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ MSIL Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΡΠΈΠ»Π΅ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ (Ngen.exe). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°Π±ΠΎΡΠ° Ngen.exe ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π² ΡΡΠ΅Ρ Π°ΡΠΏΠ΅ΠΊΡΠ°Ρ .
Ngen.exe Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· MSIL-ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π° Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π·Π° ΡΠ°Π·.
ΠΠ½Π° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ°Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° Π½Π° Π΄ΠΈΡΠΊΠ΅.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π°
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ MSIL-ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ΄Π°. MSIL-ΠΊΠΎΠ΄ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π½Π° ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. ΠΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ΅ΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π΅ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ. Π’ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΈΡ Π·Π°ΡΠΈΡΠ΅ ΠΎΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠ΄Π°.
Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π°ΡΡΠ΅Π³ΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΈΠΏ ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ;
Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ;
ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠΌΠΈ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° MSIL Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π»ΠΈ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΊΠΎΠ΄ MSIL, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ MSIL ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ΄Π΄Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
Π‘ΡΠ΅Π΄Π° CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΈ ΡΡΠ΄ ΡΠ»ΡΠΆΠ±, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ MSIL-ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈ Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ. ΠΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ JIT-ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΡΠ΅ΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ, ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
Π Microsoft Windows Vista Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ Π±ΠΈΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ COFF. Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π±ΠΈΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Mscoree.dll, Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ _CorValidateImage ΠΈ _CorImageUnloading ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° _CorValidateImage Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ΄ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π² ΠΎΠ±ΡΠ°Π·Π΅ Π½Π° ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Windows _CorValidateImage ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π·, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠΎΡΠΌΠ°ΡΠ° PE32 Π² ΡΠΎΡΠΌΠ°Ρ PE32+.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ Π½Π° ΡΠΊΡΠ°Π½ Π²ΠΎΠ·ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ CLR?
CLR (Common language runtime) β ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ ΡΡΠ΅Π΄Π°. ΠΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌ), ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π±ΡΡΡ Β«ΡΠ°Π²Π½ΠΎΠΏΡΠ°Π²Π½ΡΠΌΠΈ Π³ΡΠ°ΠΆΠ΄Π°Π½Π°ΠΌΠΈΒ» ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ CLR ΡΡΠΎΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π²ΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΏΡΠ°Π²Π»ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ. Π Π²ΡΠ΅ ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ·ΡΠΊΠΎΠ² (c#, VisualBasic, Fortran). ΠΠ°, CLR Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ (ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅) ΠΈ ΡΠ΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° (ΡΡΠ½ΠΊΡΠΈΡ) ΠΎΡ ΠΊΡΠ΄Π° Π²Π·ΡΡΡ ΠΈ ΠΊΡΠ΄Π° ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΠΌΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° IL ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ β Π½Π°Π±ΠΎΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ Π΄Π°Π½Π½ΡΡ
, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ
ΡΠΎ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π° ΡΡΠΎ ΡΡΡΠ»Π°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΡΠΈΡΠ»Π°). ΠΠ½ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ·ΡΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² (IDL). ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ Ρ IL ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½ΠΈ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² *.exe ΠΈΠ»ΠΈ *.dll.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΡΡ ΠΏΠΎΠ»Ρ, Π³ΠΎΠ²ΠΎΡΡΡΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠΈΠΏΡ(ΠΊΠ»Π°ΡΡΡ).
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ Π²ΠΈΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ILdasm.exe. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠ°ΡΡΡ *.exe ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
Π Π°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΈΠ· ΡΠ΅Π³ΠΎ ΠΆΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π°Ρ ΡΠ°ΠΉΠ» ConsoleApplication_Test_Csharp.exe, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ Π²ΠΎΠ·ΡΠ°ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°):
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡΠΈΠΏΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. Π Π32 (Π΄Π»Ρ 32 ΠΈ 64 Π±ΠΈΡΠ½ΡΡ
ΠΠ‘) ΠΈΠ»ΠΈ Π Π32+ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 64 Π±ΠΈΡΠ½ΡΡ
ΠΠ‘)
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ (ΡΠ»Π°Π³ΠΈ, Π²Π΅ΡΡΠΈΡ CLR, ΡΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π° Π² Main())
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ β 2 Π²ΠΈΠ΄Π° ΡΠ°Π±Π»ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
:
1) ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠΈΠΏΡ ΠΈ ΡΠ»Π΅Π½Ρ
2) ΡΠΈΠΏΡ ΠΈ ΡΠ»Π΅Π½Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΠΎΠ΄ IL β ΠΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° C#. ΠΠ°ΡΠ΅ΠΌ IL ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (0001 0011 1101β¦ ) ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ CLR (Π° ΡΠΎΡΠ½Π΅Π΅ JIT)
Π Π°Π±ΠΎΡΠ° JIT
Π ΡΠ°ΠΊ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°?
Π‘ΠΏΠ΅ΡΠ²Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π°Π½Π°Π»ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ (32 ΠΈΠ»ΠΈ 64 ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ). ΠΠ°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π²ΡΠ±ΡΠ°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° MSCorEE.dll ( C:\Windows\System32\MSCorEE.dll Π΄Π»Ρ 32ΡΠ°Π·ΡΡΠ΄Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²)
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ MSCorEE.dll, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ CLR, ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠΎΡΠΊΡ Π²Ρ
ΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ Main() Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ System.Console.WriteLine(Β«Hello β), IL Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΠ΅ ΡΠ°ΠΌΡΠ΅ Π½ΡΠ»ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ) ΠΡΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Jiter ΠΈΠ»ΠΈ just-in-time compiler.
Π‘ΠΏΠ΅ΡΠ²Π°, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Main() ΡΡΠ΅Π΄Π° CLR Π½Π°Ρ
ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΏ Console).
ΠΠ°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ ΠΈΡ
Π² Π·Π°ΠΏΠΈΡΠΈ Π²Π½ΡΡΡΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ βΡΡΡΡΠΊΡΡΡΡΒ» (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π² ΡΠΈΠΏΠ΅ Console).
ΠΠ°ΠΏΠΈΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°Π΄ΡΠ΅ΡΠ°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (Ρ.Π΅. ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄).
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ WriteLine Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ JiT-compiler.
JiTer ‘Ρ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
JiTer ΠΈΡΠ΅Ρ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΡΠΎΠ΄Π° (ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° WriteLine(string str) ).
ΠΠ°ΡΠ΅ΠΌ, ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ IL Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ), ΡΠΎΡ
ΡΠ°Π½ΡΡ Π΅Π³ΠΎ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΡΠ»Π΅ JIT Compiler Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Β«ΡΡΡΡΠΊΡΡΡΠ΅Β» Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ° (Console) ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π°Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½Π° Π°Π΄ΡΠ΅Ρ Π±Π»ΠΎΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ Main() ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ WriteLine(string str) ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. Π’.ΠΊ. ΠΊΠΎΠ΄ ΡΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠΈΠ½ΡΡ JiT Compiler. ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΌΠ΅ΡΠΎΠ΄ WriteLine(string str) ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Main().
ΠΠ· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΒ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΠΊΠΎΠ³Π΄Π° JIT ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ IL ΠΊΠΎΠ΄ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΡΠΎ Jiter Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΠ½ΠΎΠ²Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² Ρ 86 ΡΡΠ΅Π΄Π΅ JIT Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π² Ρ 64 ΠΈΠ»ΠΈ IA64 ΡΡΠ΅Π΄Π°Ρ β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π°. Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄
IL ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, Ρ.Π΅. ΠΈΠ· Π½Π΅Π³ΠΎ Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ IL β ΠΊΠΎΠΌΠ°Π½Π΄Ρ NOP (ΠΏΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
Π§Π΅ΠΌ ΠΆΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΎΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ?
ΠΠ΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
Π ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² 2 ΡΡΠ°ΠΏΠ°:
1) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ C# ΠΊΠΎΠ΄ Π² IL
2) Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ IL ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏ. Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ° ΡΠ°ΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° JIT).
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
β ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· DLL ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ P/Invoke (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ CreateSemaphore ΠΈΠ· Kernel32.dll).
β ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ COM-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (ΡΠ΅ΡΠ²Π΅Ρ).
β Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ (ΡΠ΅ΡΠ²Π΅Ρ). ΠΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ COM β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΈ ΡΠΎΠ³Π΄Π° Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ /clr ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Visual Π‘++ ΠΊΠΎΠ΄ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ IL ΠΌΠ΅ΡΠΎΠ΄Ρ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ³Π΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ ( __asm ), ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ( __enable, _RetrurAddress )). ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΡΠΎ ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Ρ 86 ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ°Π½Π½ΡΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ IL ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ (ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ) ΠΈ Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° (ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π‘++ ΠΊΠΎΠ΄Π°).
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ²
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΈΠΏΠΎΠ² CTS, ΠΏΡΠΈΠ½ΡΡΠΎΠΉ Microsoft.
CTS (Common Type System) β ΠΎΠ±ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Π² CLR (ΡΠΈΠΏ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ β ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΠΊΠ»Π°ΡΡΠ° C#). ΠΡΠΎ β ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΏΡΠΈΠ·Π½Π°Π½Π½ΡΠΉ ECMA ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ECMA ΡΡΠ°Π½Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ CLI ( Common Language Infrastructure)
β CTS ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π‘++)
β ΠΡΠ΅ ΡΠΈΠΏΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ System.Object (Object β ΠΈΠΌΡ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠ΅Π½Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ², System β ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½)
ΠΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ CTS Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π½ΠΎΠ².
ΠΠΎΠ»Π΅ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠ°ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠΏΡ.
ΠΠ΅ΡΠΎΠ΄ β ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠΌΠ΅Π΅Ρ ΠΈΠΌΡ, ΡΠΈΠ³Π½Π°ΡΡΡΡ(ΡΠΈΡΠ»ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΈΠΏΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΎΠ·Π²Ρ. Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ) ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ β Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ (get/set) Π° Π΄Π»Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ ( = ). Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΈΠΏΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π‘ΠΎΠ±ΡΡΠΈΠ΅ β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Public β ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΡΠ±ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ
Private β ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΠΈΠΏΠ°
Family (protected) β ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ±ΠΎΡΠΊΠΈ
Assembly (internal) β ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΡΠΎΠΉ ΠΆΠ΅ ΡΠ±ΠΎΡΠΊΠΈ
Family or Assembly
(protected internal) β ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ + Π»ΡΠ±ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ· ΡΠΎΠΉ ΠΆΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.
CLS (Common Language Specification) β ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠΏΡΡΠ΅Π½Π½Π°Ρ ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ. ΠΠ½Π° ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΈΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² CLR. CLR/CTS ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
CLS. ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ IL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ CLR/CTS. Π―Π·ΡΠΊΠΈ (C#, Visual Basic) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ CLR/CTS (Π² Ρ.Ρ. ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΡ CLS).
ΠΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ CLS
ΠΡΡΠΈΠ±ΡΡ [assembly: CLSCompliant(true)] Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΈΠ·Π²Π½Π΅ ΡΠΈΠΏΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: UInt32 Abc() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Visaul Basic, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠΆΠ΄Π΅Π½ΠΈΠ΅: Π΄Π²Π° ΠΎΡΠΊΡΡΡΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π° Abc() ΠΈ abc() β ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠ²ΡΠ΅ ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π»ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ Π±ΡΠΊΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ. VisualBasic Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π°.
Π£Π±ΡΠ°Π² public ΠΈ ΠΎΡΡΠ°Π²ΠΈΠ² ΡΠΎΠ»ΡΠΊΠΎ sealed class SomeLibraryType ΠΎΠ±Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡΡΠ΅Π·Π½ΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ SomeLibraryType ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ internal ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅Π½ ΠΈΠ·Π²Π½Π΅ ΡΠ±ΠΎΡΠΊΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ/Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π² C#?
ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄? Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
12 ΠΎΡΠ²Π΅ΡΠΎΠ²
Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, API ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Win32). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²ΡΡ ΠΎΠ΄ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ.
Π²ΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ NUnit Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ UnitTesting ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°. ΠΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΡΠΎ Π·Π° Π·ΠΎΠ»ΠΎΡΠΎ. Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΠΎΠΌ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ!
ΡΡΠΎΠΉ Ρ ΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΡ ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ΅.
ΡΡΠΎΠΆΠ΅Π½ΡΠ° ΠΊΠΎΠ΄ ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ, Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½.
ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅, Π΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΌΠ°ΡΠΈΠ½-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΠΌΠ°ΡΠΈΠ½-ΡΠΎΠ²Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ°ΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ x86. ΠΠ΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ (ΡΠΎΠ΄Π½ΠΎΠΉ) ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½, ΠΈΡΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ ΠΠ‘ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ½ Π½Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ½ΠΎΠΉ, Π½ΠΎ Π±ΡΡΡΡΡΠΉ. ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΡΠ΅Π·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΠΎΠ²Π°Ρ , ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:
NUnit Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ AppDomain, ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ±ΠΎΡΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π²Π½Π° null.
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΠΎΠ΄:
ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ «Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡ ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π΅» Ρ ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΊΠ°Π·Π°Π½ΠΈΡ ΡΡΠ»ΡΠ³, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°ΠΌΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΌΠ΅ΠΆΡΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ, ΠΊΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ΅ΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Microsoft ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ (MSIL) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄.
ΠΠΠ-Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΠΎΠ΄:
Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ common language. ΠΠ΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠ΅Π΄Π΅ CLR Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ»ΡΠΆΠ±Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΈ Ρ. Π΄.).
OTOH,unmanged code ΡΡΠΎ-ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΊ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΈΠΊΠ°ΠΊΠ°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π°Π»Π΅Π΅.
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄.
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ β ΡΡΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠ΅Π΄Π΅ CLR. ΠΠΎΠ΄ ΡΡΡΠΎΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΊΠΎΠ΄Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ) Π΄Π»Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ΄ C#, Visual Basic, ΠΈ JScript ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎΠ΄ Visual C++ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅(/CLR). ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π£ΠΠ ΠΠΠΠ―ΠΠΠ«ΠΠ ΠΠΠΠΠ«ΠΠ.
ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ (Manifest) β ΡΠΎΡΡΠ°Π²Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ ΡΠ°Π±Π»ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ:
ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΡΠ΅ΡΡΠΎΡ ΠΠ ΠΠΠΠΠ’ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ IL-ΠΊΠΎΠ΄. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ IL-ΠΊΠΎΠ΄Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ (Just In Time β Π² Π½ΡΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ), ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ CLR ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΡΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ IL-ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ CLR ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΌΠΈΠ½ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ.
Π ΡΡΠ΅Π΄Π΅ CLR Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
CLR Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² Π·ΠΎΠ½Π΅ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΠΈΡΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ CLR, ΠΎΡΠ½ΠΎΡΡΡΡΡ:
Π‘ΡΡΡΠΊΡΡΡΠ° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ CLR (ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π΄Ρ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅.
Π‘ΡΡΠΎΠ³ΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ², Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ CLR Code Manager ΠΈ Garbage Collector ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ: Code Manager ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Garbage Collector β ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ.
Exception Manager Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
AppDomain (Π΄ΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) β ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ±ΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π² CLR (CLR-ΠΏΡΠΎΡΠ΅ΡΡ), ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π² ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. CLR ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΠΠΠΠ ΠΠ ΠΠ¦ΠΠ‘Π‘Π. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ AppDomain). ΠΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. CLR ΠΈΠ·ΠΎΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΡ ΠΏΠ°ΠΌΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ².