1. Использование библиотек динамической компоновки - DLL
DLL (англ. Dynamic-link library – динамически подключаемая библиотека) понятие операционной системы Microsoft Windows; динамическая библиотека, позволяющая многократное применение различными программными приложениями. К DLL относятся также элементы управления ActiveX и драйвера. В мире UNIX аналогичные функции выполняют т. н. shared objects («разделяемые объекты»).
Формат файлов DLL придерживается тех же соглашений, что и формат исполняемых файлов, сочетая код, таблицы и ресурсы.
Цели введения DLL
Первоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только одну инстанцию библиотечных модулей для многих приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти.
Далее, предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того, библиотеки DLL могли использоваться разнотипными приложениями — например, Microsoft Office, Microsoft Visual Studio и т. п.
В дальнейшем идея модульности выросла в концепцию СОМ.
Фактически, полных преимуществ от внедрения DLL получить не удалось по причине явления, называемого DLL hell («ад DLL»). DLL Hell возникает, когда несколько приложений требуют одновременно различные, не полностью совместимые, версий DLL-библиотек, что приводит к сбоям в этих приложениях. Когда система выросла до определённых размеров, количество DLL стало превышать многие тысячи, не все из них обладали полной надёжностью и совместимостью, и конфликты типа DLL Hell стали возникать очень часто, резко понижая общую надёжность системы. Поздние версии Microsoft Windows стали разрешать параллельное использование разных версий DLL, что свело на нет преимущества изначального принципа модульности.
Статическая компоновка представлена на рис. 9.1
Во всех ОС имеются участки кодов, которые могут пользоваться библиотекой кодов
Существуют следующие типы переходников:
1. активный переходник - фрагмент кода, который устанавливает первоначальную связь между базой данных и библиотечного модуля.
2. переходник для данных - в DLL библиотеке могут храниться и данные, например шрифты.
3. переходник динамической компоновки — (см. рис. 9.2). Переходник выполняет подсчет обращений и определяет адрес функции.
Если много программ работает с одними и теми же функциями то получается существенная экономия памяти. В случае если одно приложение запрашивает код функции то динамическая компоновка усложняет структуру, увеличивая время обработки. Если два и боле приложений запрашивают код функции то целесообразно использовать DLL.
Использование таких DLL библиотек дает следующие преимущества:
1. Возможность расширения функций приложений за счет DLL других производителей. Для этого необходимо лишь знать перечень функций и способы обращения.
2. Возможность написания программ на различных языках программирования.
3. Простота организации управления проектом по разработке сложного программного комплекса.
4. Экономия оперативной памяти
2 Технология DDE (Dynamic Data Exchange-динамический обмен данных).
Механизм DDE основан на пересылке данных через буфер обмена Windows. Буфер обмена - специальная область память, предоставляемая операционной системой для обмена данных между приложениями.
В Windows существуют средства для работы с буфером обмена. К ним относятся:
функции для помещения данных в буфер и извлечения из буфера;
функции проверки наличия данных в буфере;
предусмотрены 25 встроенных типов данных (изображение, фрагмент текста, звук, и т.д.);
возможность создания собственных типов данных;
возможность обмениваться командами;
Основным преимуществом DDE является его стандартность и наличие во всех версиях Windows. Недостатки DDE:
низкая скорость обмена данных;
низкая надежность, в частности за счет того, что буфер обмена доступен
всем выполняющимся приложениям;
DDE непригоден для обмена технологическими данными, в частности из-за низкой производительности и надежности;
Для преодоления недостатков DDE разработчики предложили свои собственные протоколы Advanced DDE, Fast DDE . В основе лежит пакетирование информации, что позволяет увеличить скорость обмена. Такие частные решения приводят к ряду проблем:
Для каждой SCADА системы, поддерживающей один из этих протоколов необходимы драйверы оборудования, которые поддерживают тот же протокол;
В общем случае две SCADА системы не могут иметь доступ одновременно к одному и тому же драйверу.
Тем не менее, этот механизм используется для получения данных от технологических процессов и для передачи управляющих воздействий (в этом случае SCADA системы выполняют функции клиента по отношению к поставляющему данные драйверу или серверу ввода/вывода), а также для взаимодействия с другими приложениями, например с MS Excel. SCADA системы могут быть как клиентами так и серверами.
В основу DDE положен принцип, в котором осуществляется передача адресов блоков памяти, а сами данные располагаются в таблице атомов.
Таблица атомов — область памяти, доступная всем программам для чтения и записи. Адресация в ней ведется при помощи 4-х составляющих: сервис - имя приложения, которое обеспечивает этот сервис; тема; элементы данных; данные.
DDE канал может работать в трех режимах: обычный режим, «теплый» канал, «горячий» канал.
I. Работа DDE канала в обычном режиме (см. рис. 9.3).
II. Организация «теплого» канала (см. рис. 9.4). Создается тогда, когда клиент заранее должен извещаться сервером об изменении данных.
III. Организация «горячего» канала (см. рис. 9.5).
Приложения могут устанавливать одновременно несколько связей с несколькими приложениями. При этом это приложение может быть как клиентом, так и сервером.