ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ способ контроля Π»Π΅Π³Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ взаимодСйствия Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π½Π° ΠΏΡƒΡ‚ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ способов взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ явилась Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° COM (Component Object Model) — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ стандартизованноС описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (слуТб) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° Π΄Π°Π΅Ρ‚ доступ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. ΠŸΡ€ΠΈ этом Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΈΡ… языках написаны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ: Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ…… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ способ контроля Π»Π΅Π³Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ взаимодСйствия Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Московский Авиационный Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚

(ГосударствСнный ВСхничСский УнивСрситСт) ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠŸΠΠ—Π˜ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ способ контроля Π»Π΅Π³Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ взаимодСйствия Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»:

студСнт Π³Ρ€. 4О-304Π‘ Поздняков Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Москва, 2014

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ООП ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ самого Ρ€Π°Π·Π½ΠΎΠ³ΠΎ назначСния. Но Π² Π½Π°ΡΡ‚оящСС врСмя прилоТСния, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… прСдприятий ΠΈ ΠΈΡ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅, Π° ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… вопросов — организация Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ общСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ Ρ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ — Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

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

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

Запуск ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса, Π½ΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ. Часто этого ΠΌΠ°Π»ΠΎ. ВрСбуСтся ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΎΠ±ΠΌΠ΅Π½ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Π» ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС написано Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. А ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΡΠ΅Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Windows, Unix, Solaris ΠΈ Π΄Ρ€.), ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ общСния ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌΠΈ срСдствами общСния, появившимися Π΅Ρ‰Π΅ Π½Π° Π·Π°Ρ€Π΅ Windows, ΡΠ²Π»ΡΡŽΡ‚ΡΡ раздСляСмыС Ρ„Π°ΠΉΠ»Ρ‹ (Ρ„Π°ΠΉΠ»Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ Ρ€Π°Π·Π½Ρ‹Π΅ прилоТСния), Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° Clipboard, доступный практичСски всСм прилоТСниям Windows, ΠΈ Ρ‚Схнология DDE — динамичСского ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ИспользованиС раздСляСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° достаточно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ ΠΈ ΡΠ΅ΠΉΡ‡Π°Ρ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ срСдства связи ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. А Ρ‚Схнология DDE ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, уступила мСсто Π±ΠΎΠ»Π΅Π΅ соврСмСнным способам общСния.

ПозднСС появилась тСхнология связывания ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Object Linking and Embedding) — OLE 1. Она позволяла ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ составныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Word Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Excel. На ΡΠΌΠ΅Π½Ρƒ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡ€ΠΈΡˆΠ»Π° OLE 2, позволявшая Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π΅Π³ΠΎ функциям, Ρ‚. Π΅. ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ.

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

Основная Ρ‡Π°ΡΡ‚ΡŒ ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ мСТпроцСссного взаимодСйствия ΠœΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠ΅ взаимодСйствиС (Π°Π½Π³Π». Inter-Process Communication, IPC) — Π½Π°Π±ΠΎΡ€ способов ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСством ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ процСссах. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΡΠ΅Ρ‚ΡŒΡŽ. IPC-способы дСлятся Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, синхронизации, раздСляСмой памяти ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (RPC). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ IPC зависят ΠΎΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΠΎΠΉ способности ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

IPC Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ΅ взаимодСйствиС (Π°Π½Π³Π». inter-thread communication), ΠΌΠ΅ΠΆΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ взаимодСйствиС ΠΈ ΠΌΠ΅ΠΆΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ взаимодСйствиС (Π°Π½Π³Π». inter-application communication).

IPC наряду с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ адрСсного пространства являСтся основой для разграничСния адрСсного пространства.

Вопология

БущСствуСт Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² взаимодСйствия ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… систСм. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ — прямоС взаимодСйствиС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… систСм ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «ΠΊΠ°ΠΆΠ΄Π°Ρ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ», ΠΈΠ»ΠΈ «Ρ‚ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°». Π’Ρ‚ΠΎΡ€ΠΎΠΉ — взаимодСйствиС Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ·Π΅Π»; ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π·Π²Π΅Π·Π΄ΠΎΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ «Ρ…Π°Π± + спицы». Вопология Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ Ρ„изичСской Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ логичСскиС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ взаимодСйствия ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ систСмами.

Π’ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°

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

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

Π—Π΄Π΅ΡΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ, таится ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ «ΠΏΠΎΠ»Π·ΡƒΡ‡Π΅ΠΉ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, которая Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ нСобходимости ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ систСму XYZ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ обнаруТиваСтся, Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого нСльзя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ справочник оргструктуры ΠΈ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΎΠ² вашСго прСдприятия, историчСски вСдущийся Π² XYZ, ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΡ‡ΡŒ рСплицируСтся Π΅Ρ‰Π΅ Π² Π΄Π΅ΡΡΡ‚ΠΎΠΊ систСм.

Π₯Π°Π± + спицы

ВзаимодСйствиС ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ «Ρ‚ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°» создаСт Π² ΠΈΠ½Ρ„раструктурС прСдприятия слишком ΠΌΠ½ΠΎΠ³ΠΎ связСй ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ согласования интСрфСйсов ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ прилоТСниями. Π­Ρ‚ΠΈ нСдостатки ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° взаимодСйствия, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС прилоТСния нСпосрСдствСнно соСдинСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ·Π»ΠΎΠΌ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Β· организация ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ прилоТСниями;

Β· ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

Β· обСспСчСниС взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² взаимодСйствия.

Благодаря ввСдСнию ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ число связСй ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями, ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ прямыС связи, Π° ΡΠΈΡΡ‚Π΅ΠΌΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ становится Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈ Π΄Π΅ΡˆΠ΅Π²ΠΎΠΉ Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΠΈ. Если мСняСтся ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ — ΠΏΡ€ΠΈ условии ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ спроСктированной систСмы ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ — Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ связь, ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Ρ…Π°Π±ΠΎΠΌ.

НСдостатком Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ «Ρ…Π°Π± + спицы» являСтся высокая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ приобрСтСния ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ инструмСнтария, ΠΈΠ³Ρ€Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€ΠΎΠ»ΡŒ Ρ…Π°Π±Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ° спСциалистов, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ‹Ρ‚ примСнСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств.

ΠžΠ±Π·ΠΎΡ€ основных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

Π‘ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° (clipboard)

Π‘ΡƒΠΌΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅ΠΌΠ½Π° (Π°Π½Π³Π». clipboard) — ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, прСдоставляСмоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для пСрСноса ΠΈΠ»ΠΈ копирования ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями ΠΈΠ»ΠΈ частями ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

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

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

Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π·. ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π±ΡƒΡ„Π΅Ρ€ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ содСрТимоС, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Microsoft Office), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ вставкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстных Ρ„ΠΎΡ€ΠΌ IPC. Он ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π΅Ρ‰Π΅ Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Windows. Основная Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° — ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. НС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π½ΡƒΠΆΠ΄ прилоТСния, ΠΈ Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для прямого просмотра ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ WM_COPYDATA

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ сообщСниС для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ участка памяти Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ процСссу. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ read only. ΠŸΠΎΡΡ‹Π»Π°Ρ‚ΡŒ это сообщСниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SendMessage, которая Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ PostMessage ΠΆΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ «ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π΅Ρ‚» Π½Π° Π²Ρ€Π΅ΠΌΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΡΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, насколько это ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ для вас. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… кусков Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ для real-time ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этот способ вряд Π»ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

РаздСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ (shared memory)

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ сцСнарий использования раздСляСмой памяти ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ «ΠΊΠ»ΠΈΠ΅Π½Ρ‚—сСрвСр» ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

1. сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сСмафор;

2. сСрвСр ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ запись Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ;

3. послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ записи Π΄Π°Π½Π½Ρ‹Ρ… сСрвСр освобоТдаСт доступ ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСмафора;

4. ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти, запирая доступ ΠΊ ΡΡ‚ΠΎΠΉ памяти для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСмафора;

5. ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти, Π° Π·Π°Ρ‚Π΅ΠΌ освобоТдаСт доступ ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСмафора.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹:

Β· shmget — созданиС сСгмСнта раздСляСмой памяти;

Β· shmctl — установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²;

Β· shmat — подсоСдинСниС сСгмСнта памяти;

Β· shmdt — отсоСдинСниС сСгмСнта.

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

Π­Ρ‚ΠΎΡ‚ способ взаимодСйствия рСализуСтся Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ File Mapping — отобраТСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ массив, хранящийся Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ (Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ явно). «ΠŸΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом» этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ сразу нСскольким процСссам. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ file mapping, Π½ΠΎ Π½Π΅ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠ°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами. Работая с ΡΡ‚ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свои дСйствия с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² синхронизации.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ (DLL)

DLL (Π°Π½Π³Π». Dynamic Link Library — «Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ», «Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°») Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows ΠΈ IBM OS/2 — динамичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ использованиС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ прилоТСниями. K DLL относятся Ρ‚Π°ΠΊΠΆΠ΅ элСмСнты управлСния ActiveX ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹. Π’ ΠΌΠΈΡ€Π΅ UNIX Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² DLL придСрТиваСтся Ρ‚Π΅Ρ… ΠΆΠ΅ соглашСний, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², сочСтая ΠΊΠΎΠ΄, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Ρ€Π΅ΡΡƒΡ€ΡΡ‹, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡΡΡŒ лишь ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами. Когда Π² Ρ€Π°ΠΌΠΊΠ°Ρ… DLL ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ раздСляСмой (shared). ВсС процСссы, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ мСсто Π² Ρ„изичСской памяти. (Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΠΈ.)

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» динамичСского ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Dynamic Data Exchange, DDE)

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» выполняСт всС основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями. Он ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ использовался Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° для этих Ρ†Π΅Π»Π΅ΠΉ Π½Π΅ ΡΡ‚Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ OLE (впослСдствии ActiveX). На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ DDE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ достаточно Ρ€Π΅Π΄ΠΊΠΎ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго этот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π·Π°Π΄Π°Ρ‡, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Π° ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ происходит Π±Π΅Π· Π΅Π³ΠΎ участия. Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ всС это Π² Ρ€Π°Π²Π½ΠΎΠΉ стСпСни относится ΠΈ ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ OLE/ActiveX.

OLE/ActiveX

OLE (Π°Π½Π³Π». Object Linking and Embedding) — тСхнология связывания ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, разработанная ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚.

Π’ 1996 Π³ΠΎΠ΄Ρƒ Microsoft ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π² ActiveX.

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

ОсновноС прСимущСство использования OLE (ΠΊΡ€ΠΎΠΌΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π°) Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ обращаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

OLE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ составных Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ нСсвязанными ΠΌΠ΅ΠΆΠ΄Ρƒ собой систСмами посрСдством интСрфСйса пСрСноса, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π°. ИдСя внСдрСния ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌ содСрТаниСм Π½Π° Π²Π΅Π±-страницах, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° изобраТСния, Π·Π²ΡƒΠΊΠ°, Π²ΠΈΠ΄Π΅ΠΎ, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π² ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ… HTML Π»ΠΈΠ±ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XML ΠΈ SGML). Однако, тСхнология OLE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ «Ρ‚олстого ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сСтСвой ΠŸΠš с ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ рСсурсами. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. НапримСр, Ссли OLE ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Microsoft Excel, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Excel Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ инсталлирована Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ 1996 Π³ΠΎΠ΄Ρƒ Microsoft ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ OLE 2.0 Π² ActiveX. Π‘Ρ‹Π»ΠΈ прСдставлСны элСмСнты управлСния ActiveX, ActiveX Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Ρ‚Схнология Active Scripting. Π­Ρ‚Π° вСрсия OLE Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ для вставки Π² ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ тСхнология, ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ — мСТпроцСссный ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π₯отя, стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ OLE ΠΊΠ°ΠΊ Ρ€Π°Π· для этой Ρ†Π΅Π»ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π»Π°ΡΡŒ (Π½Π° ΡΠΌΠ΅Π½Ρƒ DDE), ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π°. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ сущСствуСт интСрфСйс IDataObject. А Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ DCOM, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΠ³Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ объСдинСниС ActiveX ΠΈ RPC.

ΠšΠ°Π½Π°Π»Ρ‹ (pipes)

Π’ ΡΡ€Π΅Π΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Microsoft Windows NT Π²Π°ΠΌ доступно Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ срСдство ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ процСссами, ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Π»Ρ‹ Ρ‚ΠΈΠΏΠ° Pipe. Π­Ρ‚ΠΎ срСдство позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ процСссами, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… станциях Π² ΡΠ΅Ρ‚ΠΈ.

ΠšΠ°Π½Π°Π»Ρ‹ Ρ‚ΠΈΠΏΠ° Pipe большС всСго ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹, поэтому ΠΎΠ½ΠΈ достаточно просты Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.

Π§Π΅Ρ€Π΅Π· ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя процСссами. Один ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠ² создаСт ΠΊΠ°Π½Π°Π», Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ. ПослС этого ΠΎΠ±Π° процСсса ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Π½Π°Π» Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ стороны, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ReadFile ΠΈ WriteFile. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π°Π΄ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ Pipe синхронныС ΠΈΠ»ΠΈ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ использования асинхронных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ синхронизации.

ΠšΠ°Π½Π°Π»Ρ‹ — это ΠΎΡ‡Π΅Π½ΡŒ мощная тСхнология ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. НавСрноС, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows NT/2000. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€ΡƒΠ±Ρ‹, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅ΠΉ Π΄Π²Π° процСсса. Π§Ρ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ‚Ρ€ΡƒΠ±Ρƒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ появляСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π§Π°Ρ‰Π΅ всСго ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ разновидности ΠΊΠ°Π½Π°Π»ΠΎΠ² Pipe — ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ (Named Pipes) ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ (Anonymous Pipes).

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΠΏΡ€ΠΈ создании присваиваСтся имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ доступно для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. Зная имя ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции Π² ΡΠ΅Ρ‚ΠΈ, процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ, созданному Π½Π° ΡΡ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции.

АнонимныС ΠΊΠ°Π½Π°Π»Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции ΠΈΠ»ΠΈ Π½Π° «ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ стоящСм» ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

АнонимныС ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ достаточно Ρ€Π΅Π΄ΠΊΠΎ, ΠΎΠ½ΠΈ просто ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π½Π° ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ. (Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² WinNT/2000.)

Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ (sockets)

Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ (Π°Π½Π³Π». socket — Ρ€Π°Π·ΡŠΡ‘ΠΌ) — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса для обСспСчСния ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π­Π’Πœ, Ρ‚Π°ΠΊ ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π­Π’Πœ, связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΡΠ΅Ρ‚ΡŒΡŽ. Π‘ΠΎΠΊΠ΅Ρ‚ — абстрактный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ соСдинСния.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ клиСнтскиС ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ сокСты. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ сокСты Π³Ρ€ΡƒΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π°ΠΌΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ сСти, Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ — с ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ клиСнтскиС сокСты, Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅Π±-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ посылаСт запросы) — ΠΊΠ°ΠΊ клиСнтскиС, Ρ‚Π°ΠΊ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ сокСты.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ сокСтов Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ появился Π² BSD Unix. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс сокСтов описан Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π΅ POSIX.1 ΠΈ Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ поддСрТиваСтся всСми соврСмСнными ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами.

ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ мСТпроцСссный сокСт

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ сокСтов

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΉ сокСт (сСрвСрный сокСт) ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΡ€Ρ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы (Π² UNIX Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ процСссы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ‹ мСньшС 1024). Π‘Π»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΉ процСсс ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находится Π² Ρ†ΠΈΠΊΠ»Π΅ оТидания, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ просыпаСтся ΠΏΡ€ΠΈ появлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ соСдинСния. ΠŸΡ€ΠΈ этом сохраняСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ соСдинСний Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚. Π΄.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сокСт ΠΈΠΌΠ΅Π΅Ρ‚ свой адрСс. ОБ ΡΠ΅ΠΌΠ΅ΠΉΡΡ‚Π²Π° UNIX ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² адрСсов, Π½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ INET-адрСс ΠΈ UNIX-адрСс. Если ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ сокСт ΠΊ UNIX-адрСсу, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ создан ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смогут ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ процСссы ΠΏΡƒΡ‚Ρ‘ΠΌ чтСния/записи ΠΈΠ· Π½Π΅Π³ΠΎ (см. Π”ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix). Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ° INET доступны ΠΈΠ· ΡΠ΅Ρ‚ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ выдСлСния Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚Π°.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ явно подсоСдиняСтся ΠΊ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŽ, послС Ρ‡Π΅Π³ΠΎ любоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ваТная тСхнология, Ρ‚.ΠΊ. ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π›Π’Π‘. ВзаимодСйствиС происходит Ρ‡Π΅Ρ€Π΅Π· Ρ‚.Π½. Ρ€Π°Π·ΡŠΠ΅ΠΌΡ‹-" сокСты", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅ΠΉ Π΄Π²Π° прилоТСния. Π‘ ΡΡ‚ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΆΠ΄Π°Ρ‚ΡŒ соСдинСния, ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ‚. Π΄. Π’ Windows Π²Ρ…ΠΎΠ΄ΠΈΡ‚ достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠΎΠΊΠ΅Ρ‚Π°ΠΌΠΈ.

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ слоты (mailslots)

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ слоты — это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ IPC. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ извСстно имя слота, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° сообщСния, Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-хозяин этого слота (ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. ОсновноС прСимущСство этого способа — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ сообщСния ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ сСти сразу нСскольким ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ Π·Π° ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Для этого прилоТСния-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ слоты с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Когда Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ сообщСниС Π² ΡΡ‚ΠΎΡ‚ слот, прилоТСния-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ синхронизации

Как Π½ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΠΎ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ синхронизации Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ IPC. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Π²Π΅Π»ΠΈΠΊ. Но ΠΈΠΌΠ΅Π½Π½ΠΎ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ΄Π½ΠΎΠΌΡƒ процСссу Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ «Ρ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ» ΠΈΠ»ΠΈ «Ρ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ» .

Microsoft Message Queue (MSMQ)

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ это ΠΊΠ°ΠΊ Message Queuing (MSMQ) ΠΈΠ»ΠΈ Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ сообщСний Microsoft. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний создана для взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ срСдС (Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…). ΠœΡ‹ ΡƒΠΆΠ΅ рассматривали ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, socket ΠΈΠ»ΠΈ DCOM. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ MSMQ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ΅Ρ‚ΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π° Π·Π° Π²ΡΠ΅ΠΌ этим слСдит сСрвСр MSMQ.

Π•ΡΡ‚ΡŒ нСсколько Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ систСмС.

Доставка ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний поддСрТиваСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

MSMQ 1.0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Windows NT 4.0, Windows 95, and Windows 98.

MSMQ 2.0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Microsoft® Windows® 2000.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Π΅Ρ‚ своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ — ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ посылку сообщСний ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний. ОсновноС Π΅Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний Windows Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ процСссами ΠΈ Π΄Π°ΠΆΠ΅ с ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ нСдоступны (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹). Доставка сообщСния ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ гарантируСтся. Оно ставится Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний ΠΈ Π½Π°Ρ…одится Ρ‚Π°ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅Ρ‚ся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.

Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (Remote Procedure Call, RPC)

Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, это Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ тСхнология IPC, Π° ΡΠΊΠΎΡ€Π΅Π΅ способ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² IPC. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ становится совСшСнно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΊΠ°ΠΊ для сСрвСра, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Им ΠΎΠ±ΠΎΠΈΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΈΡ… «ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊ» располоТСн локально ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½ΠΈΠΌ .

Π£Π΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (ΠΈΠ»ΠΈ Π’Ρ‹Π·ΠΎΠ² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€) (ΠΎΡ‚ Π°Π½Π³Π». Remote Procedure Call (RPC)) — класс Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ адрСсном пространствС (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, рСализация RPC Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: сСтСвой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» для ΠΎΠ±ΠΌΠ΅Π½Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр ΠΈ ΡΠ·Ρ‹ΠΊ сСриализации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΈΠ»ΠΈ структур, для Π½Π΅ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… RPC). Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ RPC ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Ρ€Π°Π·Π½ΡΡ‚ся Π² ΡΠ²ΠΎΠΈΡ… возмоТностях: ΠΎΠ΄Π½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ SOA, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ CORBA ΠΈΠ»ΠΈ DCOM. На Ρ‚ранспортном ΡƒΡ€ΠΎΠ²Π½Π΅ RPC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ TCP ΠΈ UDP, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ построСны Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ HTTP (Ρ‡Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ISO/OSI, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ HTTP ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ‚ранспортный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»).

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ИдСя Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (Remote Procedure Call — RPC) состоит Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстного ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС, Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ. БрСдства ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для облСгчСния ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ распрСдСлённых вычислСний ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ распрСдСлСнных ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрных ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Наибольшая ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования RPC достигаСтся Π² Ρ‚Π΅Ρ… прилоТСниях, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сущСствуСт интСрактивная связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ с Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»Ρ‹ΠΌ количСством ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠ΅ прилоТСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ RPC-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

Π₯Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

Β· ΠΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сторон являСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ΠΎΠΌ;

Β· Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ приостанавливаСтся с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹Π΄Π°Ρ‡ΠΈ запроса ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

РСализация ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² сущСствСнно слоТнСС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. МоТно ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ RPC:

Β· Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ адрСсныС пространства, ΠΈ ΡΡ‚ΠΎ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², особСнно Ссли ΠΌΠ°ΡˆΠΈΠ½Ρ‹ находятся ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прямой ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок Π±Π°ΠΉΡ‚ΠΎΠ²). Π’Π°ΠΊ ΠΊΠ°ΠΊ RPC Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ RPC Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΡΡ‡Π΅ΠΉΠΊΠΈ нСстСковой памяти ΠΈ Ρ‡Ρ‚ΠΎ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Для копирования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ выполняСтся ΠΈΡ… ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ.

Β· Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сСтСвой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ TCP), ΠΎΠ΄Π½Π°ΠΊΠΎ это остаСтся скрытым ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Β· Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ локальной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ машинС рСализуСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ процСсса. Но Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ RPC ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° процСсса — ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС. Π’ ΡΠ»ΡƒΡ‡Π°Π΅, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ситуации: ΠΏΡ€ΠΈ Π°Π²Π°Ρ€ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ станут «ΠΎΡΠΈΡ€ΠΎΡ‚Π΅Π²ΡˆΠΈΠΌΠΈ», Π° ΠΏΡ€ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ станут «ΠΎΠ±Π΅Π·Π΄ΠΎΠ»Π΅Π½Π½Ρ‹ΠΌΠΈ родитСлями» Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π±Π΅Π·Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

Β· БущСствуСт ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ языков программирования ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… срСд: структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠΌ языкС программирования, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ имССтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° совмСстимости, Π΄ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ Π½Π΅ Ρ€Π΅ΡˆΡ‘нная Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ввСдСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ общСпринятого стандарта, Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… стандартов Π½Π° Π²ΡΠ΅Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ… языках.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° способа взаимодСйствия 2Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ способа взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° тСхнология раздСляСмых Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML Ρ„Π°ΠΉΠ», ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ считываСт Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ XML Ρ„Π°ΠΉΠ» ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прилоТСния ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ содСрТащиСся Π² Π½Π΅ΠΌ значСния. Данная тСхнология Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π²ΠΈΠ΄Ρƒ простоты Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Наши прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡ… ΡΠ΅Ρ‚Π΅Π²ΠΎΠ³ΠΎ взаимодСйствия отсутствуСт. Π’ ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²Π΅Π±-сСрвисов. Π’ ΡΡ‚ΠΎΠΌ случаС сообщСния Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ структуру XML с Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΠΌΠΈ измСнСниями, вносимыми спСцификациСй SOAP. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Π΅Π±-срвиса (сСрвСр), Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π± — сСрвиса.

Π’Π°ΠΊ ΠΆΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ отсутствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ запуска Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ прилоТСния ΠΈΠ»ΠΈ получСния доступа Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих Π·Π°Π΄Π°Ρ‡ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ OLE/ActiveX, которая Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ связываниС ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

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

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

ИспользованиС Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй Π² Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ сразу Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ бСзопасности. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌΡƒ XML Ρ„Π°ΠΉΠ»Ρƒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ стороной. Π₯Сш Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов, ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ…Π΅Ρˆ-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ исходных Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ измСнСния Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Данная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ позволяСт Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΎΡ‚ Π½Π°ΡˆΠ΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прилоТСния. Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ произвСсти ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΡΠ²ΠΎΠΈ, Ρ‚ΠΎΠ³Π΄Π° сравнСниС Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ Π²Ρ‹ΡΠ²ΠΈΡ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ цСлостности. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ассимитричным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ примСняя свой Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прилоТСния ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΈΡ… ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ появляСтся сообщСниС ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ XML Ρ„Π°ΠΉΠ»Π°

fRa5HLoE4P8k2Bqq9/aVheND5RY=

pV16GUJMtAYQq/qkx4EBWqhb2jyuLx1ni6z20Lp0jA16VZoU1Ltemi6MviNLm4UMbi7boSGG7bN27+vrFZJUv5o+zJBE7sC/fiZkNgQ3xQOC4cxLyrRWeuqobbWDuuut1ayG13m1hzpzWd4uxAKpnmPmMkgM3z2+BNvTUtc0RM4=

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

namespace WindowsFormsApplication5

{

public partial class Form1: Form

{

private XmlDocument doc = new XmlDocument ();

public Form1()

{

InitializeComponent ();

}

private void button1_Click (object sender, EventArgs e)

{

if (saveFileDialog.ShowDialog () == DialogResult. OK)

{

int firstNumber = Convert. ToInt32(textBox1.Text);

int secondNumber = Convert. ToInt32(textBox2.Text);

XmlDeclaration newDec = doc. CreateXmlDeclaration («1.0», null, null);

doc.AppendChild (newDec);

XmlElement newRoot = doc. CreateElement («numbers»);

XmlElement firstEl = doc. CreateElement («firstEl»);

firstEl.InnerText = firstNumber. ToString ();

newRoot.AppendChild (firstEl);

XmlElement secondEl = doc. CreateElement («secondEl»);

secondEl.InnerText = secondNumber. ToString ();

newRoot.AppendChild (secondEl);

doc.AppendChild (newRoot);

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

CspParameters cspParams = new CspParameters ();

cspParams.KeyContainerName = «XML_DSIG_RSA_KEY» ;

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ…ранСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΊΠ»ΡŽΡ‡Π°

RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider (cspParams);

SignXml (doc, rsaKey);

XmlTextWriter tr = new XmlTextWriter (saveFileDialog.FileName, null);

tr.Formatting = Formatting. Indented;

doc.WriteContentTo (tr);

tr.Close ();

doc = new XmlDocument ();

}

}

public static void SignXml (XmlDocument xmlDoc, RSA Key)

{

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

if (xmlDoc == null)

throw new ArgumentException («xmlDoc»);

if (Key == null)

throw new ArgumentException («Key»);

SignedXml signedXml = new SignedXml (xmlDoc);

// Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π² SignedXml

signedXml.SigningKey = Key;

// Бсылка Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡ‹ΠΉ элСмСнт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Reference reference = new Reference ();

reference.Uri = «» ;

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ трансформации Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ восстановлСния

XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform ();

reference.AddTransform (env);

signedXml.AddReference (reference);

// ВычислСниС подписи

signedXml.ComputeSignature ();

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Xml элСмСнта содСрТащСго подпись

XmlElement xmlDigitalSignature = signedXml. GetXml ();

// Π”ΠΎΠ±Π°Π»Π΅Π½ΠΈΠ΅ подписи Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

xmlDoc.DocumentElement.AppendChild (xmlDoc.ImportNode (xmlDigitalSignature, true));

}

}

}

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

namespace WindowsFormsApplication6

{

public partial class Form1: Form

{

string fileName;

XmlDocument doc = new XmlDocument ();

int numb1;

int numb2;

int sum;

public Form1()

{

InitializeComponent ();

}

private void button1_Click (object sender, EventArgs e)

{

if (openFileDialog.ShowDialog () == DialogResult. OK)

{

fileName = openFileDialog. FileName;

doc.Load (fileName);

}

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° CspParameters ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

CspParameters cspParams = new CspParameters ();

cspParams.KeyContainerName = «XML_DSIG_RSA_KEY» ;

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider (cspParams);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи

bool result = VerifyXml (doc, rsaKey);

// ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

if (result)

{

MessageBox.Show («ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π°»);

}

else

{

MessageBox.Show («ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π°»);

}

}

private void button2_Click (object sender, EventArgs e)

{

XmlNode firstEl = doc. SelectSingleNode («numbers/firstEl»);

numb1 = Convert. ToInt32(firstEl.InnerText);

XmlNode secondEl = doc. SelectSingleNode («numbers/secondEl»);

numb2 = Convert. ToInt32(secondEl.InnerText);

sum = numb1 + numb2;

label1.Text = sum. ToString ();

}

public static Boolean VerifyXml (XmlDocument Doc, RSA Key)

{

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SignedXml ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

SignedXml signedXml = new SignedXml (Doc);

// Поиск элСмСнта Signature

XmlNodeList nodeList = Doc. GetElementsByTagName («Signature»);

// Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠΉ записи

signedXml.LoadXml ((XmlElement)nodeList[0]);

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи

return signedXml. CheckSignature (Key);

}

private void Form1_Load (object sender, EventArgs e)

{

}

}

}

1. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство. ПодписаниС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй http://msdn.microsoft.com/ru-ru/library/ms229745%28v=vs.110%29.aspx

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ взаимодСйствия, топология, инструмСнты http://www.osp.ru/os/2006/09/3 776 464/

3. IPC: основы мСТпроцСссного взаимодСйствия http://www.rsdn.ru/article/baseserv/ipc.xml

4. ΠœΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠ΅ взаимодСйствиС http://ru.wikipedia.org/wiki/ΠœΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠ΅_взаимодСйствиС

5. Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ http://msdn.microsoft.com/ru-ru/library/92f9ye3s%28v=vs.110%29.aspx

6. НСйгСл К., ИвьСн Π‘., Π“Π»ΠΈΠ½Π½ Π”ΠΆ., Уотсон К. — C# 4.0 ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET 4 для профСссионалов — 2011

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ