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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π“Ρ€Π°Ρ„ΠΈΠΊΠ° DirectX Π² DelphiΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 3

Автор ΠœΠΈΡ…Π°ΠΈΠ» ΠšΡ€Π°ΡΠ½ΠΎΠ²

Π“Π»Π°Π²Π½ΠΎΠ΅ Π² рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ прилоТСния Π½Π΅ содСрТит Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½ΠΈΡ‡Π΅Π³ΠΎ, связанного с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ Π² ΠΎΠΊΠ½Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обращаСтся ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, которая выполняСт всю Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Π²Ρ‹Π²ΠΎΠ΄Ρƒ изобраТСния.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ являСтся модСлью Π΄ΠΈΠ°Π»ΠΎΠ³Π° прилоТСния с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° исчСзаСт ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ пСрСрисовкС ΠΎΠΊΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ, Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° "ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚". ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ это Π»Π΅Π³ΠΊΠΎ: ΠΏΡ€ΠΈ пСрСрисовкС ΠΎΠΊΠ½Π° вызываСтся собствСнный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Onpaint ΠΎΠΊΠ½Π°, Π° ΠΌΡ‹ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΠ»ΠΈΡΡŒ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² Π½Π΅ΠΌ ΠΊΠΎΠ΄Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²ΠΈΠ΄ ΠΎΠΊΠ½Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ услугу Π½Π΅ прСдоставляСт, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° Π½Π΅Π΅ трСбуСтся слишком ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов. Π¨Π»ΠΈΡ„ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π΅ станСм, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ для нас.

ЗапуститС нСсколько ΠΊΠΎΠΏΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ протСстируйтС Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ, Π½ΠΎ я, надСюсь, ΠΎΠ½ смог Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ, прСслСдуСмой мною. ИспользованиС динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ являСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ построСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм: ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² освобоТдСн ΠΎΡ‚ дублирования.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ свойство динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΡ… использовании Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмС созданы ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ сами Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π­Ρ‚ΠΈΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π²ΠΎ врСмя примСнСния DirectX Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Delphi Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ использовании любой систСмной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’ ΠΊΠΎΠ΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° указываСтся имя Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ориСнтируСтся Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²Ρ…ΠΎΠ΄Π°, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ВзглянитС снова Π½Π° рис. 1.1. Π‘Π»Π΅Π²Π° ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ экспортируСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ адрСс Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² качСствС ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ для Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Вспомним, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС исполнимого модуля ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° происходит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ отсутствии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, рассмотрСнная ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° прилоТСния называСтся статичСским связываниСм.

ДинамичСскоС связываниС отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π½Π΅ сразу ΠΆΠ΅ послС своСго размСщСния Π² памяти, Ρ‚. Π΅. запуска, Π° ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ надобности. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π•Ρ…03. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ implementation модуля записано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:



type // ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

TDrawBMP = procedure (Handle : THandle); stdcall; // Π©Π΅Π»Ρ‡ΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ с надписью BMP

procedure TForml.ButtonlClick(Sender: TObject); var

hcDll : THandle; // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ

procDrawBMP : TDrawBMP; // ΠŸΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠ°Ρ функция

begin

hcDll := LoadLibrary('Projectl.dll'); // ДинамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° DLL if hcDll <= HINSTANCE_ERROR then begin // Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ

MessageDlg ('ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Projectl!', mtError, [mbOK], 0) ; Exit;

end;


// Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π°. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ адрСс Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ procDrawBMP := GetProcAddress(hCDll, 'DrawBMP');

// ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ связывания if not Assigned (procDrawBMP) then begin

MessageDlg (Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Projectl.dll отсутствуСт нуТная функция!,

mtError, [mbOK], 0); Exit;

end;


procDrawBMP (Canvas.Handle); // Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

FreeLibrary(hcDll); // Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ

end;



Π‘Ρ…Π΅ΠΌΠ° Π½Π°ΡˆΠΈΡ… дСйствий Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°ΠΊΠΎΠ²Π°: Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ адрСс Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ обращаСмся ΠΊ Π½Π΅ΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ являСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π°Π²Ρ‚ΠΎΡ€ помСстил "ΠΈΡΠΏΠΎΡ€Ρ‡Π΅Π½Π½ΡƒΡŽ" Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Projectl.dll, Π² Π½Π΅ΠΉ отсутствуСт нуТная Π½Π°ΠΌ функция.

Подобная ситуация Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Ссли Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ нСсколько вСрсий, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ подчас распространяСт нСсколько вСрсий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ присутствиС этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ "ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ", ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

ДинамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ Π²Π°ΠΌ прилоТСниями ΠΎΡ‡Π΅Π½ΡŒ часто. НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ правописания тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ установлСнном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

БОМ-модСль

ВСхнология, основанная Π½Π° динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, являСтся ΠΎΡ‡Π΅Π½ΡŒ эффСктивной, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΈ стала основой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Однако Π΅ΠΉ присущС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП): Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ рСсурсы, Π½ΠΎ Π½Π΅ способны ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ описания классов. Π­Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Π½ΠΎ отчасти, я Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΏΠΎΠΊΠ° ΠΎ DLL "Π² чистом Π²ΠΈΠ΄Π΅". По ΠΌΠ΅Ρ€Π΅ развития программирования ΠΊΠ°ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ООП Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π‘Π°ΠΌΡ‹ΠΌ Ρ…ΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ использования ΠΈΠ΄Π΅ΠΉ ООП Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ составныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Вставляя Π² тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ записывая Π² Π½Π΅ΠΌ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Ρ„ΠΎΡ€ΠΌΡƒΠ», ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ тСкстового процСссора ΠΊΠ°ΠΊ Ρ€Π°Π· встрСчаСтся со Π·Ρ€ΠΈΠΌΡ‹ΠΌ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ ООП. ВставлСнный, Π²Π½Π΅Π΄Ρ€Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ со своими свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Ρ€ΠΈΠΌΠΎΠ³ΠΎ воплощСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM (Component Object Model, модСль ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²). Π₯отя я ΠΈ упомянул Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ составныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, БОМ прСдоставляСт ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ взаимодСйствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²: Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, систСмного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π΄Ρ€. Для нашСй Ρ‚Π΅ΠΌΡ‹ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ БОМ стала Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ составным Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ.

БОМ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π² частности DirectX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшой экскурс Π² эту Ρ‚Π΅ΠΌΡƒ.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для всСй Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π² основС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»Π΅ΠΆΠΈΡ‚ БОМ, ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Microsoft Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ имя - OLE. Π—Π°Ρ‚Π΅ΠΌ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΈ дополнСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мСнялось. НапримСр, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΎΠ½ΠΎ стало ActiveX, Π½ΠΎ программисты со стаТСм часто Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ OLE (сСйчас это Π½Π΅ являСтся Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ) для обозначСния Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

БОМ - Π½Π΅ язык, Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ способ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, доступныС для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сСрвисами. БОМ опрСдСляСт стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния прСдоставляСт свои сСрвисы Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Для нас особСнно Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ тСхнология БОМ Ρ‚Π°ΠΊΠΆΠ΅ являСтся нСзависимой ΠΎΡ‚ языка программирования. ЀизичСски ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ сСрвисы, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠ³ΠΎ модуля, Π»ΠΈΠ±ΠΎ, Ρ‡Π°Ρ‰Π΅ всСго, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Как ΠΈ Π² случаС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмС созданы сСрвСры ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Π’ случаС с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ достаточно Π·Π½Π°Ρ‚ΡŒ адрСс Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ этому адрСсу. Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², внСс Π² эту схСму Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсии

Π‘Π΅Ρ€Π²Π΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс, Π° Π½Π΅ ΠΎΠ΄ΠΈΠ½-СдинствСнный Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΈ распространСнии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ общСдоступный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ систСмный. Π­Ρ‚ΠΎ Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈ установкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НавСрняка Π²Π°ΠΌ извСстны ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. НапримСр, ΠΏΡ€ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ, хотя большС Π½ΠΈΠΊΡ‚ΠΎ ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.

Если ΠΆΠ΅ сСрвСр прСдставляСт собой Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», Π° Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ принСсло Π±Ρ‹ массу Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ смоТСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· дСсятка установлСнных Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы стояла ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π°: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ сСрвСру нСзависимо ΠΎΡ‚ мСста Π΅Π³ΠΎ физичСского располоТСния. ΠŸΡƒΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ устанавливаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ…ΠΎΡ‚ΡŒ ΠΈ Π½Π΅ Π² общСдоступном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π° клиСнтскиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ сСрвСру, Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ Π½ΠΈ располагался.

Один ΠΈΠ· способов Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‚Π°ΠΊΠΎΠ²: ΠΏΡ€ΠΈ установкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„Π°ΠΉΠ» Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ дописываСтся строка, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π°Ρ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ устанавливаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ доступным для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ поискС Ρ„Π°ΠΉΠ»Π° систСма Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ПодобноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ малоэффСктивно ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ являлось лишь Π΄Π²Π° дСсятилСтия Π½Π°Π·Π°Π΄, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ большС дСсятка ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ практичСски Π±Ρ‹Π»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. БСгодня ΠΆΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сотни ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π±Π»ΡƒΠΆΠ΄Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ чСрСсчур Π΄ΠΎΠ»Π³ΠΈΠΌ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ случайно Π½Π°Π·Π²Π°Π½Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΡ‚ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚.