Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 120

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ОБ Windows Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнных срСдств понимания Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΠ³Π΄Π° активизируСтся выполняСмый ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π’ ОБ Windows XP основными шагами Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ (вспомнитС ΠΈΠ· Π³Π»Π°Π²Ρ‹ 11, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ .NET содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Win32).

1. ОБ Windows Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ выполняСмый Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.

2. ОБ Windows Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ встроСнный Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ WinNT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ (ΠΏΠΎ Ρ„Π»Π°Π³Ρƒ IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR), являСтся Π»ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ .NET.

3. Если ΠΎΠ±Ρ€Π°Π· являСтся ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ .NET, загруТаСтся mscoree.dll.

4. Π—Π°Ρ‚Π΅ΠΌ mscoree.dll Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ CLR (mscorwks.dll ΠΈΠ»ΠΈ mscorsvr.dll).

5. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ "ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° сСбя" срСда CLR, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ всС связанныС с .NET Π·Π°Π΄Π°Ρ‡ΠΈ (поиск Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ бСзопасности, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° CIL-ΠΊΠΎΠ΄Π°, сборка мусора ΠΈ Ρ‚.Π΄.).

Π˜Ρ‚Π°ΠΊ, mscoree.dll - это Π½Π΅ сама CLR (ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…). Π₯отя Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ mscoree.dll с Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ CLR, Π½Π° самом Π΄Π΅Π»Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» – это "Ρ€Π°Π·Π²ΠΈΠ»ΠΊΠ°" Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ CLR. Если ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ машина ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ процСссор, загруТаСтся mscorwks.dll. Если машина ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ загруТаСтся mscorsvr.dll (это вСрсия CLR, оптимизированная для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с нСсколькими процСссорами).

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ CLR

"ΠšΠΎΠΏΠ½ΡƒΠ²" Ρ‡ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚.Π΅. Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET (Π²ΠΎ врСмя создания этой ΠΊΠ½ΠΈΠ³ΠΈ Π±Ρ‹Π»ΠΈ доступны вСрсии 1.0.1.1 ΠΈ 2.0). Π‘Π°ΠΌ Ρ„Π°ΠΉΠ» mscoree.dll размСщаСтся Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ System32 ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° установки Windows. НапримСр, Π½Π° ΠΌΠΎΠ΅ΠΉ машинС mscoree.dll "ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π΅Ρ‚" Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ C:\WINDOWS\system32 (рис. 13.11).

Рис. 13.11. Π€Π°ΠΉΠ» mscoree.dll находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ system32

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ mscoree.dll ΠΏΠΎ рССстру систСмы Win32 (Π΄Π°, ΠΏΠΎ рССстру этой систСмы) выясняСтся Π½ΠΎΠΌΠ΅Ρ€ послСднСй ΠΈΠ· установлСнных вСрсий ΠΈ ΠΏΡƒΡ‚ΡŒ установки .NET Framework (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Ρ‚Π²ΡŒ HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework, рис. 13.12).

Рис. 13.12. ВыяснСниС вСрсии ΠΈ ΠΏΡƒΡ‚ΠΈ установки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET

ПослС опрСдСлСния вСрсии ΠΈ ΠΏΡƒΡ‚ΠΈ установки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ загруТаСтся нуТная вСрсия mscorwks.dll/mscorsvr.dll. На ΠΌΠΎΠ΅ΠΉ машинС ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ установки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET являСтся C:\WINDOWS\Microsoft.NET\FrΠ°mΠ΅work. Π’ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ для .NET вСрсии 1.0.1.1 ΠΈ (Π½Π° врСмя создания ΠΊΠ½ΠΈΠ³ΠΈ) Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии 2.0 (см. рис. 13.13, ваши Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ).

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии CLR

Когда mscoree.dll опрСдСляСт (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рССстра систСмы), ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ mscorwks.dll/mscorsrv.dll Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, читаСтся Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π» Policy (ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°) Π²Π΅Ρ‚Π²ΠΈ HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework рССстра. Π’ этот Ρ€Π°Π·Π΄Π΅Π» записываСтся информация ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ CLR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. НапримСр, Ссли запускаСтся ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» построСн с использованиСм .NET вСрсии 1.0.3.705, mscoree.dll ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ бСзопасно Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 1.1.4322.

Рис. 13.13. Π€Π°ΠΉΠ» mscorwks.dll вСрсии 2.0

ВсС это происходит Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ обСспСчиваСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ mscoree.dll Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ CLR, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого Ρ„Π°ΠΉΠ» *.config ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

β€Ή?xml version="l.0" encoding="utf-8"?β€Ί

 β€Ήconfigurationβ€Ί

  β€Ήstartupβ€Ί

   β€ΉrequiredRuntime version ="1.0 .3705"/β€Ί

  β€Ή/startupβ€Ί

β€Ή/configurationβ€Ί

Π—Π΄Π΅ΡΡŒ элСмСнт β€ΉrequiredRuntimeβ€Ί ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€ΡΠΈΡŽ 1.0.3705. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π½Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠΉ инсталляции .NET вСрсии 1.0.3705, ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΎΠΊΠ½ΠΎ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ± ошибкС срСды выполнСния, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° рис. 13.14.

Рис. 13.14. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ β€ΉrequiredRuntimeβ€Ί ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС срСды выполнСния, Ссли указанная вСрсия CLR Π½Π΅ установлСна[2]

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ хосты CLR

Волько Ρ‡Ρ‚ΠΎ описанный процСсс ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ» основныС шаги, ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows для хостинга CLR ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° запускаСтся выполняСмый ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Но Microsoft ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ повСдСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ CLR. НапримСр. Microsoft Internet Explorer ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ своими встроСнными срСдствами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты управлСния Windows Forms (управляСмый эквивалСнт Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… элСмСнтов управлСния ActiveX). ПослСдняя вСрсия Microsoft SQL Server (с ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Yukon ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ SQL Server 2005) Ρ‚Π°ΠΊΠΆΠ΅ способна ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ нСпосрСдствСнный хостинг CLR.

НаконСц. Microsoft ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° Π½Π°Π±ΠΎΡ€ интСрфСйсов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… собствСнныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ хосты CLR. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ C/C++ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ COM-Ρ‚ΠΈΠΏΠ° (mscorΠ΅e.tlb). Π₯отя сам процСсс построСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ хоста CLR ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост (особСнно ΠΏΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ COM-Ρ‚ΠΈΠΏΠ°), эта Ρ‚Π΅ΠΌΠ° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ нашСго обсуТдСния. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ вопросу, Π² Π‘Π΅Ρ‚ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ мноТСство статСй Π½Π° эту Ρ‚Π΅ΠΌΡƒ (просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ "CLR hosts").

РСзюмС

ЦСлью этой Π³Π»Π°Π²Ρ‹ Π±Ρ‹Π»ΠΎ выяснСниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ обрабатываСтся выполняСмый ΠΎΠ±Ρ€Π°Π· .NET. Π’Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ΅ понятиС процСсса Win32 Π±Ρ‹Π»ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ трСбованиям CLR. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΈΠΏΠ° System.Diagnostiсs.Process) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ компонуСтся ΠΈΠ· мноТСства Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² прилоТСния, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ нСзависимыС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого процСсса. Один процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мноТСство Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² прилоТСния, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ любоС число связанных ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ².

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС число контСкстов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Ρ‚ΠΈΠΏΠΎΠ², срСда CLR ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ трСбованиями Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π“Π»Π°Π²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ рассмотрСниСм Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ сама CLR обрабатываСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Win32.

ГЛАВА 14. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π’  ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрСли взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ прилоТСния ΠΈ контСкстами. Π’ этой ΠΌΡ‹ выясним, ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ прилоТСния ΠΈ ΠΊΠ°ΠΊ Π² условиях мноТСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… рСсурсов.

НашС обсуТдСниС снова начнСтся с рассмотрСнии Ρ‚ΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° .NET, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ пониманию Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ асинхронных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт автоматичСски Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ выполнСния. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ исслСдуСм Ρ‚ΠΈΠΏΡ‹ пространства ΠΈΠΌΠ΅Π½ System.Π’hreading. Π‘ΡƒΠ΄Π΅Ρ‚ рассмотрСно мноТСство Ρ‚ΠΈΠΏΠΎΠ² (Thread.ThreadStart ΠΈ Ρ‚.Π΄.), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² создании ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π° Π² Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваш ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ срСдства ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΌ доступС ΠΊ общСдоступным рСсурсам. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π³Π»Π°Π²Π° рассмотрСниСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… каркасом .NET Framework.

Π’Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΡŒ процСссов, Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, контСкстов ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ понятиС ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΊΠ°ΠΊ ΠΏΡƒΡ‚ΡŒ исполнСния Π² Ρ€Π°ΠΌΠΊΠ°Ρ… выполняСмого прилоТСния. И хотя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ прилоТСния .NET ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ, ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹ΠΉ срСдой CLR ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Main()) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. РСализуя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прилоТСния с Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ быстро Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ свои Π·Π°Π΄Π°Ρ‡ΠΈ).

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.Threading содСрТит Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ прилоТСния. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ класс Thread, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ прСдставляСт Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‡Π»Π΅Π½ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, просто Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ статичСскоС свойство Thread.CurrentThread.

private static void ExtractExecutingThread() {

 // ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ

 // Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Thread currThread = Thread.CurrentThread;

}

Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET Π½Π΅ прСдполагаСтся прямого ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ соотвСтствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ прилоТСния ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Напротив, Π΄ΠΎΠΌΠ΅Π½ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мноТСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого Π΄ΠΎΠΌΠ΅Π½Π° Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ привязан ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄ΠΎΠΌΠ΅Π½Ρƒ прилоТСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сущСствования ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΎΠΌΠ΅Π½Π° прилоТСния, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Win32 ΠΈ цСлСсообразности CLR.