Π―Π·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Application Program Interface, API): Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² .NET Framework FCL (Framework Class Library). Π .NET Framework Software Development Kit (SDK) Π²Ρ ΠΎΠ΄ΠΈΡ ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ CIL — ILASM, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π―Π·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ .NET, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π½Π΅ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ), Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° CIL, ΡΠΎ ΠΈ Π²ΡΠ±ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ Π»ΠΈΡΠ½ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. Π’Π΅ΡΠΌΠΈΠ½ «ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ» Π² ΡΠ»ΠΎΠ²ΠΎΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ «ΠΎΠ±ΡΠ΅ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ ΡΡΠ΅Π΄Π°» ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ CLR Π±Π΅Π·ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΊ ΡΠ·ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Microsoft ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ CIL, Π΄Π»Ρ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Π‘#, C++, Visual Basic ΠΈ JScript.
Π .NET Framework Software Development Kit (SDK) Π²Ρ ΠΎΠ΄ΠΈΡ ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ CIL — ILASM, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ CIL. Π Π°Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Perl, Python, Eiffel ΠΈ Π΄Π°ΠΆΠ΅ COBOL.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Application Program Interface, API): Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² .NET Framework FCL (Framework Class Library).
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° CIL, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (managed module), ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π΄Ρ CLR. Π€Π°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ EXE, DLL ΠΈΠ»ΠΈ NETMODULE. Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
- β’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π° Windows Portable Executable (Π Π);
- β’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ CLR, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ CIL ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ;
- β’ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ Π²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ;
- β’ ΠΊΠΎΠΌΠ°Π½Π΄Ρ CIL, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ — ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ CIL-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΌ ΡΠ΅Π±Ρ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ (ΠΊΠ»Π°ΡΡΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Ρ. ΠΏ.) ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡΠ° ΡΠ°Π±Π»ΠΈΡ. Π ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ (TypeDef) ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΠΈΠΏΡ. Π Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π² ΡΡΠ΅ΡΡΠ΅ΠΉ — ΠΏΠΎΠ»Ρ, Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ — ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ Ρ. Π΄. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΠΏΡ (ΡΠΈΠΏΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ), ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΠΏΡ, ΠΈ Π΄Ρ.
Π€ΠΎΡΠΌΠ°Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠΎΡΡΠ°Π²Π΅ .NET Framework SDK ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° ILDASM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.