|
Приведем краткий список механизмов IPC, встроенных в Windows:
- WM_COPYDATA — передает участок памяти одного процесса другому.
- Буфер обмена (clipboard) — наверное, самая рудиментальная форма Windows IPC. Чаще всего с буфером обмена работает пользователь операционной системы. Считается, что программа должна использовать буфер обмена для передачи данных только в случае, если этого захочет пользователь.
- Библиотека DLL — может показаться странным, однако динамические библиотеки DLL обладают возможностью обеспечивать общий доступ к одному участку памяти для нескольких процессов.
- Память общего доступа (shared memory) — версия механизма общей памяти, встроенная в Win32, может показаться несколько странной. Официально общий доступ нескольких процессов к участку памяти общего доступа осуществляется с использованием механизма отображения файлов на оперативную память. Когда процесс отображает файл на память, он создает объект отображения файла, который позволяет осуществлять доступ к содержимому файла так, будто данные, содержащиеся в файле, расположены в определенном месте виртуального адресного пространства процесса. Другими словами, процесс получает возможность работать с файлом как с массивом, хранящемся в памяти. Процессы, работающие па одном компьютере, могут работать с одним и тем же объектом отображения файла и, таким образом, синхронизировать между собой представление о содержимом этого файла. Если требуется просто обеспечить доступ нескольких процессов к одному общему участку памяти, вы можете создать объект отображения файла на память, не ставя этому объекту в соответствие никакого реально существующего на диске файла.
- Анонимный канал (anonymous pipe) — этот механизм используется для передачи данных из потока вывода одной программы в поток ввода другой программы. При помощи анонимных каналов осуществляется передача данных между программами, запускаемыми из командной строки DOS и Unix. В Windows анонимные каналы используются относительно редко и как правило внутри одного ПК.
- Именованный канал (named pipe) — чрезвычайно мощный инструмент взаимодействия двух программ, осуществляющих обмен данными согласно концепции клиент—сервер. Именованные каналы с легкостью могут использоваться в ситуации, когда программы работают на разных компьютерах. В последние годы вместо именованных каналов все чаще используют сокеты, однако можно обнаружить, что в определенных ситуациях именованные каналы все еще чрезвычайно удобны.
- Почтовые слоты (mailslots) — несколько необычный способ передавать сообщения между программами. Почтовые слоты могут работать только в одном направлении, поэтому, если вы хотите передавать данные в обоих направлениях, вы должны использовать два почтовых слота (ящика). Преимуществом почтовых слотов является возможность передать сообщение через локальную сеть сразу нескольким программам за одну операцию. Почтовым ящиком называется объект ядра операционной системы, который обеспечивает передачу сообщений от процессов-клиентов к процессам-серверам, выполняющимся на компьютерах в пределах локальной сети. Процесс, который создает почтовый ящик, называется сервером почтового ящика. Процессы, которые связываются с именованным почтовым ящиком, называются клиентами почтового ящика. Хотя передача данных осуществляется только от клиента к серверу, один почтовый ящик может иметь несколько серверов. Это происходит в том случае, если несколько серверов создают почтовые ящики с одинаковыми именами. Тогда все сообщения, которые посылает клиент в такой почтовый ящик, будут получать все серверы этого почтового ящика. При этом доставка сообщения от клиента к серверам почтового ящика не подтверждается системой.
- Dynamic Data Exchange, DDE (динамический обмен данными) — в свое время DDE был чрезвычайно популярным протоколом обмена данными между несколькими программами. Многие продукты Microsoft (даже Windows Program Manager — Диспетчер программ) включали в себя поддержку DDE. В наши дни поддержка DDE добавляется в программные продукты в основном для обратной совместимости. На самом деле проблема не в недостатках DDE. Просто Microsoft приняла решение использовать OLE (позже переименован- переименованной в ActiveX) в качестве основной технологии взаимодействия программ. Таким образом, технология OLE остановила развитие других конкурирующих с ней технологий. Среди таких технологий оказался и протокол DDE.
- NetBIOS — многие годы технология NetBIOS выполняла роль основного сетевого протокола для PC. В наши дни, когда на смену ей пришли более совершенные сетевые протоколы, Windows все еще включает в себя поддержку NetBIOS, однако в основном для совместимости с устаревшим программным обеспечением.
- Сокеты — технология, лежащая в основе обмена данными через Интернет. Сокеты также широко используются для обмена данными в крупных вычислительных сетях. Лишь немногие компьютеры в наше время не обладают поддержкой сокетов. Каждому сокету соответствует уникальный номер порта. Некоторые номера зарезервированы для так называемых «хорошо известных» служб. Например, подавляющее число серверов Web использует для связи со своими клиентами порт 80. Индивидуальные стандартные номера портов используется также такими службами, как FTP и Telnet. Сервер создает сокет, которому соответствует «хорошо известный» номер порта. После этого сервер начинает ожидать поступления запросов клиентов через этот порт. Чтобы соединиться с сервером, клиент создает сокет, которому соответствует случайно выбранный системой, никем не занятый номер порта. После этого устанавливается связь между этими двумя сокетами. На самом деле «хорошо известный» номер порта сервера не используется для реального обмена данными. При поступлении от клиента запроса на соединение через «хорошо известный» порт система перехватывает запрос, автоматически создает на сервере новый сокет (которому соответствует случайно выбранный, никем не занятый номер порта) и соединяет этот новый сокет с сокетом клиента. После чего обмен данными осуществляется с использованием нового сокета.
- Remote Procedure Call, RPC (вызов удаленных процедур) — это еще один широко распространенный стандарт. Говоря точнее, RPC не является методом IPC. Скорее это технологическая оболочка, существенно расширяющая возможности традиционных механизмов IPC. При использовании RPC сервер делает доступными для клиента некоторые функции, к которым клиент может обращаться напрямую, как будто они расположены локально по отношению к клиенту. Таким образом, клиенту кажется, что он напрямую обращается к некоторой функции, а серверу кажется, что он получает запрос на выполнение функции напрямую от клиента. На самом деле передача данных от клиента к серверу и обратно осуществляется через сеть при помощи RPC. Просто RPC выполняет обмен данными через сеть между клиентом и сервером абсолютно прозрачно для обоих.
- ActiveX — это воистину многоцелевая технология, способ создания бинарных объектов. Специально для этой цели Microsoft определила стандартный интерфейс IDataObject. Еще одной технологией ActiveX, предназначенной для реализации IPC, является Distibuted Component Object Model (DCOM). Можно сказать, что DCOM — это результат слияния ActiveX и RPC.
- Microsoft Message Queue (MSMQ) — это протокол, который позволяет приложениям посылать сообщения друг другу. В отличие от других форм IPC технология MSMQ позволяет посылать сообщения процессу, который в данное время недоступен (например, приложение не запущено, сервер вышел из строя или сетевой канал связи перегружен). Механизм MSMQ ставит сообщение в очередь до тех пор, пока не появится возможность переслать его адресату.
|
|