ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΈΠ»ΠΈΡΡ TlbExp ΠΈ RegAsm Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΡΠ½ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. RegAsm ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° .NET Π² ΡΠ»ΡΠΆΠ±Π°Ρ COM, Π° Π·Π°ΡΠ΅ΠΌ TlbExp β Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ² COM ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π΅ ΠΈΠ· ΡΠ·ΡΠΊΠΎΠ² Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΡ .NET.
Π‘Π»ΡΠΆΠ±Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
ΠΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ COM ΠΈ .NET. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π΄ΡΡΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅ β ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ΄ΠΎΠΌ .NET ΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΌ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΈΠ»ΠΈ, ΠΊΡΠ°ΡΠΊΠΎ, PInvoke.
ΠΠ΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ΅ΡΠ²ΠΎΠ΅, ΠΎ ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ, β ΡΠ΅ΡΠΌΠΈΠ½Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ.
ΠΠ΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄ C# ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠΎΠ΅Π½ Π² Π±Π»ΠΎΠΊ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° unsafe. ΠΠΎΠ΄ Π² ΡΠ°ΠΊΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ΄ΠΈΠΎΠΌ C++, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ΅ΠΊΠ°. ΠΠ½ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡ ΡΠ°ΡΡΠΎ Π°ΡΡΠΎΡΠΈΠΈΡΡΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET.
Π‘ΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ .NET Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠ΅Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Π΄Π΅Π»ΡΡΡΡΡ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΠΌ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°).
Π‘Π»ΡΠΆΠ±Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΊΠΎΠ΄Ρ .NET Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΈ Ρ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ.
ΠΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΊΠΎΠ΄Ρ
Π₯ΠΎΡΡ .NET ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² Π»ΡΠ±ΠΎΠΉ DLL, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π² DLL, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Windows API. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ user32.dll, gdi32.dll ΠΈ kernel32.dll. ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΡΡΠΈΡ DLL Π΄Π»Ρ ΠΊΠΎΠ΄Π° .NET Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌ Π»ΡΠ±ΠΎΠΌΡ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Declare Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Win32 API Π΄Π»Ρ ΠΊΠΎΠ΄Π° VB6:
[sysimport(dll="user32.dll")]
public static extern int MessageBoxA(int Modal, string Message, string Caption, int Options);
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ .NET Π²ΡΠ·ΠΎΠ²Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² Windows API, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΠΊΠ½ΠΎ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π Π°ΡΡΠΈΠ±ΡΡΠ΅ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ DLL, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΊΠΎΠ΄Π° .NET ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ API:
MessageBoxA(0, "PInvoke worked!", "PInvoke Example", 0);
Π₯ΠΎΡΡ Π·Π΄Π΅ΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π·Π°Π΄Π°Π½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Windows API, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ Π½Π΅Π΅ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π»ΠΎΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅. ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΡ "MessageBox" Π½Π° ΠΈΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ² API. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ sysimport:
[sysimport (dll="ustr32.dll", name="MessageBoxA") ]
public static extern int ErrorMessage(int Modal, string Message, string Caption, int Options);
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° Windows API ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ:
ErrorMessage(0, "PInvoke worked!", "PInvoke.Example", 0);
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ PInvoke
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· ΠΊΠΎΠ΄Π° .NET. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π₯ΠΎΡΡ Microsoft ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠΆΠ΅ Π½Π° Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET. ΠΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ .NET Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ β ΠΎΡ Macintosh Π΄ΠΎ Unix ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌ? ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ PInvoke, ΠΊΠΎΠ΄ .NET ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Windows.
Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ PInvoke, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ .NET. ΠΡΠ»ΠΈ ΡΡΠ΅Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ .NET Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π° Π½Π° Π΄ΡΡΠ³ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ .NET ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ, ΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠ°Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡΡ Π½Π° Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠ° Π³Π»Π°Π²Π°, COM ΠΈ .NET ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ TlbImp.exe, RegAsm.exe ΠΈ TlbExp.exe, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ COM Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET.
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ COM ΡΠ±ΠΎΡΠΊΠΈ Π»Π΅Π³ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ .NET ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ COM, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Web ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ, ΡΠΎΡΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ .NET ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ Π°Π΄Π° DLL.
ΠΠ»Π°Π²a 20
Π‘Π»ΡΠΆΠ±Ρ COM+
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π° Π±ΠΎΠ»ΡΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠ°: 1) ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ»ΡΠΆΠ±Ρ COM+, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ; ΠΈ 2) ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ»ΡΠΆΠ±Ρ COM+ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ .NET Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ Π² C#, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΎΠΏΡΠΎΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ MTS β ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠΌ ΡΠ»ΡΠΆΠ± COM+, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΡΠ»ΡΠΆΠ±, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΠ»ΡΠΆΠ±Ρ COM+ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, β Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ C# ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅.
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ Π³Π»Π°Π²Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° Π²ΡΠΎΡΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ: ΠΊΠ°ΠΊ ΡΠ»ΡΠΆΠ±Ρ COM+ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ .NET. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ EnterpriseServices, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΠ»ΠΈΡΡ RegSvcs.exe.
Π₯ΠΎΡΡ ΡΠ»ΡΠΆΠ±Ρ COM+ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ Π±Π°ΡΡΠ΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅, ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ Π½Π°Π΄Π΅ΠΆΠ½Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ»ΡΠΆΠ±Ρ COM+.
Π‘Π»ΡΠΆΠ±Ρ COM+ Π² ΡΠ΅ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅
ΠΠ° Π·Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°. ΠΡΠ»ΠΈ Π΅ΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ, ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π»ΡΠ΄ΠΈ ΡΡΠ°ΡΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π΅ΡΠ°.
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. (Π’Π΅ΠΏΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Oracle ΠΈΠ»ΠΈ SQL Server). ΠΠΎ ΠΌΠ΅ΡΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π»ΠΎΡΡ ΠΈΠ· ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠ»ΠΎΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ»ΡΠΆΠ±Ρ COM+ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΠΈ. Π‘Π»ΡΠΆΠ±Ρ COM+ ΠΎΠ±Π»Π΅Π³ΡΠΈΠ»ΠΈ ΠΆΠΈΠ·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡΡΡ Π½Π° ΡΠ»ΡΠΆΠ±Ρ COM+.
Π‘ΠΎΡΡΠ°Π² ΡΠ»ΡΠΆΠ± COM+
Π‘Π»ΡΠΆΠ±Ρ COM+ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΠΆΠΈΠ·Π½Ρ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Windows NT, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Π‘Π΅ΡΠ²Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Microsoft (MTS). Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Windows 2000 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ MTS ΠΊΠ°ΠΊ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ°ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Ρ Π΅Π΅ Π² Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ MTS, ΡΠ»ΡΠΆΠ±Ρ COM+ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π² Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
Π‘Π»ΡΠΆΠ±Ρ COM+, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² MTS, Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ:
β‘ ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ
β‘ ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠ»ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
β‘ ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (JIT, Just-in-Time)
β‘ ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠΎΠ²ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ, Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ COM+:
β‘ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
β‘ ΠΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
β‘ ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΡΠ»ΡΠΆΠ± COM+, ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠ΅, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΈΠ· MTS, ΡΠ°ΠΊ ΠΈ Π½ΠΎΠ²ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΅ΡΠ΅ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ. ΠΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° COM+: "snap-in" ΡΠ»ΡΠΆΠ± ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Component Services). (Snap-in ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ SQL Server ΠΈΠ»ΠΈ IIS, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Microsoft β ΠΠΠ‘.)
Snap-in ΡΠ»ΡΠΆΠ± ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²