сервер получать данные не напрямую, а извлекать их из своего внутреннего буфера (кэша).
Разумеется, если сервер не делает кэширования, он может эту "просьбу" проигнорировать.
Организация данных
Переменные в ОРС-сервере могут быть упорядочены либо в простой список, либо в
дерево, напоминающее дерево файлов на диске (только вместо термина "папка" в ОРС говорят
"ветвь"). Можно, в частности, в любой момент запросить дерево переменных, поддерживаемых
ОРС-сервером. Если оборудование допускает, дерево может изменяться динамически. Впрочем,
если быть до конца точными, интерфейс, необходимый для просмотра дерева, объявлен в ОРС-
спецификации как необязательный. Тем не менее, он настолько удобен, что практически все ОРС-
серверы его реализуют.
Есть механизм оповещения завершения работы ОРС-сервера. Есть возможность запросить
информацию о самом сервере. Есть возможность запросить список зарегистрированных групп. В
общем, есть много того, что старались предусмотреть разработчики ОРС- спецификаций, чтобы
облегчить организацию взаимодействия поставщика данных (ОРС- сервера) и потребителя данных
(ОРС-клиента).
Инструментарий
Как уже было сказано, чтобы написать ОРС-сервер или ОРС-клиент, нужно только
взаимодействие с ОРС Foundation (ОРС-спецификации) и Microsoft (Visual C++ и пр.). Но...
Проблемы
Есть очень много сложных вопросов, которые придётся решить при программировании
ОРС-интерфейсов. Во-первых, само программирование СОМ не такое уж примитивное, даже с
применением ATL. Во-вторых, сами ОРС-объекты и их ОРС-интерфейсы достаточно сложны и
громоздки.
И, в-третьих, есть вопросы системного уровня, которыми нужно владеть. Очень
схематично: фабрики класса, заглушки и заместители, апартаменты, асинхронный обмен,
многозадачность, синхронизация, память. Кстати, последний вопрос весьма актуальный, так как в
СОМ допускается (и сплошь и рядом в ОРС используется) выделение памяти в сервере, а удаление
её возлагается на клиент. Малейшая неточность, и пойдут трудно устранимые утечки памяти. А,
учитывая, что ОРС-сервер обычно должен работать стационарно, рано или поздно крах системы
неизбежен.
Toolkit
Всего этого избежать можно, если воспользоваться так называемыми Toolkit'aMH. Есть
достаточно много фирм, которые реализацию ОРС-спецификаций избрало своим бизнесом.
Они в той или иной степени уже "наступили на все грабли" и предлагают средства, позволяющие
более-менее безопасно и легко создавать ОРС -продукцию.
Типичный Toolkit представляет собой библиотеку, реализующую ОРС-объекты выбранной
спецификации, что реализует все прихоти со стороны ОРС. Разработчику же, например, ОРС-
сервера предлагается некий набор вызовов, достаточно простых (read, write, ...), которые
необходимо "подцепить" к своему оборудованию для доступа к его данным. Для знающих
объектное программирование заметим, что эти функции могут быть реализованы как виртуальные
функции некоторого класса, которые нужно перегрузить в своём приложении. Так сделаны,
например, Toolkit'bi фирмы FactorySoft (http://www.factoryfoft.com).
ОРС и интеграция
Перечислим несколько детальнее, где может "найти себе работу" ОРС-сервер.
ОРС поверх драйвера
Если имеется оборудование, например плата АЦП, управляемая через драйвер на
компьютере с Windows или другой ОС, поддерживающей COM/DCOM, то это самый главный
кандидат на то, чтобы непосредственно поверх драйвера был реализован ОРС-сервер.
Замена устройства не потребует изменения остальных приложений: драйвер изменился, но
ОРС-интерфейс поверх него остался прежний.
ОРС через сеть
Имеется устройство, управляемое через какой-нибудь сетевой протокол. В этом случае
вполне типична реализация ОРС-сервера, получающего данные по этому протоколу. Единственная
особенность в этом случае - предусмотреть механизмы восстановления связи в случае сбоев.
ОРС для ОС
Несколько более сложная схема, когда некоторые управляющие приложения работают на
компьютере, где не поддерживается COM/DC0M. В этом случае возможна реализация