Программирование в ACE
Содержание:
1.Где применяется ACE и архитектура ACE (Вы читаете данный раздел);
2. Уровень адаптации к операционной системе и параллелизм;
3. Уровень интерфейсных фасадов, многозадачность и многопоточность.
Разработка распределенной кросс-платформенной программной системы, работающей в реальном времени является одной из самых тяжелых задач программной инженерии. Эта задача похожа по своей сложности на реверс-инженеринг проприетарного бинарного протокола, по которому управляется black box, без исходных кодов и документации.
Этим материалом мы открываем цикл статей, посвященных библиотеке ACE (Adaptive Communication Environment), которая позволяет решить часть проблем разработчиков сложных многокомпонентных кросс-платформенных распределенных систем. В отличие от различных туториалов и книг для чайников мы не создадим в ходе статьи ни одного сколько-нибудь значимого программного средства, которое может быть использовано в будущем как каркас для других программ. Это не очень хорошая практика для самообучения, поэтому цель статьи – подтолкнуть читателя к изучению предметной области и соответствующей литературы. Весь программный код и диаграммы, используемые в статье, могут послужить лишь сопроводительными комментариями к тексту, а не примерами реальной работы. Более того, зачастую мы не будем проверять то, что возвращают методы ACE, в реальной жизни так поступать, конечно, не следует. Еще хотелось бы обратить внимание читателя на специальные термины, которые будут встречаться в статье. К несчастью хорошие переводчики не всегда являются хорошими разработчиками, и поэтому мы очень часто применяем различные «русифицированные» термины к одним и тем же понятиям. Для того чтобы не возникало сомнений, в статье после неоднозначного термина приведен в скобках его английский аналог.
Наиболее широкое применение ACE нашла в различных сетевых и телекоммуникационных проектах, которыми занимаются компании Siemens, Ericsson, Motorola, Nortel, Bell, Alcatel и прочие. Также ACE применяется в проектах, связанных с аэрокосмической и оборонной деятельностью компаний Boeing, Lockheed-Martin, Raytheon Systems и других. С помощью ACE (и на базе TAO) создаются новые промежуточные решения для распределенных систем: OMC (Open Messaging and Collaboration), OpenFusion, NonStop CORBA. Связка ACE и TAO широко используется в различных научных проектах, связанных с астрономией, аэронавигацией, биометрикой, медициной и другими науками, где требуются распределенные вычисления.
Столь широкое распространение ACE получила благодаря своей открытой BSD-подобной лицензии, которая позволяет использовать ACE как в открытых, так и проприетарных разработках. Кроме того, пользователи ACE получили возможность модифицировать и распространять ACE как в бинарном виде, так и в исходных кодах, не открывая свой код и не предоставляя модификаций сообществу, как это требует, например, GPL.
ACE предлагает разработчикам четыре уровня абстракции. Первым и самым нижним уровнем является уровень адаптации к операционной системе (OS Adapter Layer). Вся функциональность этого уровня сводится к пространству имен ACE_OS, в котором реализовано свыше 500 функций, заменяющих стандартные системные вызовы. Этот уровень позволяет программе абстрагироваться от подключения системных заголовочных файлов и компоновки с системными библиотеками. Следующий уровень содержит широкий набор С++ фасадов (C++ wrapper facades), реализующих функции системного API в виде типо-безопасных объектов. Здесь можно найти классы, представляющие идеологию сокетов, процессов и потоков, объектов синхронизации, ввода/вывода, менеджмента системных ресурсов, представления данных и так далее. Третий и наиболее содержательный уровень ACE предлагает разработчикам готовые каркасы (frameworks) приложений, в которых интегрированы фасады с предыдущего уровня абстракций ACE. Эти каркасы реализуют классические паттерны, такие как Reactor, Acceptor-Connector и прочие. Наконец, самый верхний уровень абстракции ACE предоставляет библиотеку сетевых служб. Это готовые решения, которые, во-первых, демонстрируют использование ACE, а во-вторых, предоставляют пользователю каркас сетевых приложений компонентного уровня. Как видно из диаграммы «Архитектура ACE», все уровни абстракции ACE позволяют программе не зависеть от конкретной операционной системы и по-своему увеличивают повторное использование кода. Наивысшей отдачи при этом можно добиться, используя паттерны, предоставляемые библиотекой, и готовые сетевые службы.
Открываете интерьерный салон и гораздо больше, чем библиотека ACE, Вас интересуют тонкие световые панели? Что ж, тогда я советую Вам посетить сайт компании AcrylStore - http://acrylstore.ru/ (http://acrylstore.ru/тонкие-световые-панели-кристалайты-и-фреймлайты/). Здесь Вы сможете приобрести такие панели высочайшего качества и по самой выгодной для себя цене!
1.
2. Уровень адаптации к операционной системе и параллелизм;
3. Уровень интерфейсных фасадов, многозадачность и многопоточность.
Разработка распределенной кросс-платформенной программной системы, работающей в реальном времени является одной из самых тяжелых задач программной инженерии. Эта задача похожа по своей сложности на реверс-инженеринг проприетарного бинарного протокола, по которому управляется black box, без исходных кодов и документации.
Об этой статье
Этим материалом мы открываем цикл статей, посвященных библиотеке ACE (Adaptive Communication Environment), которая позволяет решить часть проблем разработчиков сложных многокомпонентных кросс-платформенных распределенных систем. В отличие от различных туториалов и книг для чайников мы не создадим в ходе статьи ни одного сколько-нибудь значимого программного средства, которое может быть использовано в будущем как каркас для других программ. Это не очень хорошая практика для самообучения, поэтому цель статьи – подтолкнуть читателя к изучению предметной области и соответствующей литературы. Весь программный код и диаграммы, используемые в статье, могут послужить лишь сопроводительными комментариями к тексту, а не примерами реальной работы. Более того, зачастую мы не будем проверять то, что возвращают методы ACE, в реальной жизни так поступать, конечно, не следует. Еще хотелось бы обратить внимание читателя на специальные термины, которые будут встречаться в статье. К несчастью хорошие переводчики не всегда являются хорошими разработчиками, и поэтому мы очень часто применяем различные «русифицированные» термины к одним и тем же понятиям. Для того чтобы не возникало сомнений, в статье после неоднозначного термина приведен в скобках его английский аналог.
Где применяется ACE
Наиболее широкое применение ACE нашла в различных сетевых и телекоммуникационных проектах, которыми занимаются компании Siemens, Ericsson, Motorola, Nortel, Bell, Alcatel и прочие. Также ACE применяется в проектах, связанных с аэрокосмической и оборонной деятельностью компаний Boeing, Lockheed-Martin, Raytheon Systems и других. С помощью ACE (и на базе TAO) создаются новые промежуточные решения для распределенных систем: OMC (Open Messaging and Collaboration), OpenFusion, NonStop CORBA. Связка ACE и TAO широко используется в различных научных проектах, связанных с астрономией, аэронавигацией, биометрикой, медициной и другими науками, где требуются распределенные вычисления.
Лицензия
Столь широкое распространение ACE получила благодаря своей открытой BSD-подобной лицензии, которая позволяет использовать ACE как в открытых, так и проприетарных разработках. Кроме того, пользователи ACE получили возможность модифицировать и распространять ACE как в бинарном виде, так и в исходных кодах, не открывая свой код и не предоставляя модификаций сообществу, как это требует, например, GPL.
Архитектура ACE
ACE предлагает разработчикам четыре уровня абстракции. Первым и самым нижним уровнем является уровень адаптации к операционной системе (OS Adapter Layer). Вся функциональность этого уровня сводится к пространству имен ACE_OS, в котором реализовано свыше 500 функций, заменяющих стандартные системные вызовы. Этот уровень позволяет программе абстрагироваться от подключения системных заголовочных файлов и компоновки с системными библиотеками. Следующий уровень содержит широкий набор С++ фасадов (C++ wrapper facades), реализующих функции системного API в виде типо-безопасных объектов. Здесь можно найти классы, представляющие идеологию сокетов, процессов и потоков, объектов синхронизации, ввода/вывода, менеджмента системных ресурсов, представления данных и так далее. Третий и наиболее содержательный уровень ACE предлагает разработчикам готовые каркасы (frameworks) приложений, в которых интегрированы фасады с предыдущего уровня абстракций ACE. Эти каркасы реализуют классические паттерны, такие как Reactor, Acceptor-Connector и прочие. Наконец, самый верхний уровень абстракции ACE предоставляет библиотеку сетевых служб. Это готовые решения, которые, во-первых, демонстрируют использование ACE, а во-вторых, предоставляют пользователю каркас сетевых приложений компонентного уровня. Как видно из диаграммы «Архитектура ACE», все уровни абстракции ACE позволяют программе не зависеть от конкретной операционной системы и по-своему увеличивают повторное использование кода. Наивысшей отдачи при этом можно добиться, используя паттерны, предоставляемые библиотекой, и готовые сетевые службы.
Открываете интерьерный салон и гораздо больше, чем библиотека ACE, Вас интересуют тонкие световые панели? Что ж, тогда я советую Вам посетить сайт компании AcrylStore - http://acrylstore.ru/ (http://acrylstore.ru/тонкие-световые-панели-кристалайты-и-фреймлайты/). Здесь Вы сможете приобрести такие панели высочайшего качества и по самой выгодной для себя цене!