Живучесть программного обеспечения при отказах сети.

Обеспечение транзакций

Базируется на применении концептуальной модели X/Open DTP согласно которой приложения для координации транзакций работают с менеджером транзакций. В модели реализован протокол OLE Transaction. Кроме этого в COM+ используется концепция автоматических транзакций, для которых транзакционное поведение компонентов достигается за счет настройки их атрибутов. Реализована трехуровневая архитектура. Клиентское приложение не обновляет ресурсы непосредственно, а работает через компонент среднего слоя, который может быть сконфигурирован в COM+ с атрибутами транзакций. При этом во время работы посредством стандартной модели перехвата COM+ может установить распределенную транзакцию от имени компонента. Отметим, что транзакционный компонент, должен быть импортирован в приложение COM+ и сконфигурирован как поддерживающий или требующий транзакцию. Если экземпляр объекта участвует в транзакции, ресурсы с которыми работает объект, будут защищены транзакцией. Транзакционные компоненты могут либо разделять контекст вызывающей программы, либо работать в собственном контексте. Программирование транзакции в общем случае требует минимального количества программного кода, а в большинстве случаев для реализации транзакции достаточно проведения соответствующих настроек. Практика подтверждает надежность и эффективность рассмотренного механизма обеспечения транзакций, что, безусловно, является положительной стороной технологии COM+.

При разработке распределенных приложений с помощью семейства технологий COM возможно применение таких протоколов передачи данных как DCOM, HTTP и MSMQ. Общей чертой первых двух протоколов является их синхронность. Когда клиент вызывает метод, возврата из вызова не происходит до получения и обработки обратного сообщения. При этом в случае сбоя в сети сообщение либо посылается еще несколько раз, после чего может быть потеряно. По этой причине живучесть протоколов DCOM и HTTP не достаточна. Специфическим средством технологии COM+ для обеспечения живучести является применение асинхронного протокола передачи сообщений MSMQ, который базируется на использовании очереди сообщений. Рассмотрим алгоритм протокола MSMQ. Клиент отсылает запрос. MSMQ помещает сообщение в очередь и возвращает управление клиенту, который может не дожидаться ответа от сервера. Сервер считывает сообщение из очереди и в предусмотренном случае может послать ответ клиенту. Наличие очереди сообщений позволяет не только уменьшить время отклика клиента, но и позволяют делать запросы, даже не будучи подсоединенным, к серверу. Запросы размещаются в очереди клиента и в случае соединения с сервером, система выполнения очереди передаст запрос в очередь сервера. Кроме всего прочего отправленное сообщение может быть прочитано несколькими серверами. Таким образом, протокол MSMQ обеспечивает повышенную устойчивость к отказам сети.

Очереди хранятся в зависимости от типа. Быстрая очередь, для повышения производительности, храниться в оперативной памяти. Восстанавливаемая очередь храниться на жестком диске. В сети Windows 2000 для этого применяется сервисы активного каталога. Очереди сообщений с надежными методами их хранения могут участвовать в распределенных транзакциях. Для автоматизации работы с использованием MSMQ, COM+ предоставляет сервис QC. Используя данный сервис можно вызвать компонент обычным для COM+ образом, но вызов будем реализован посредством MSMQ, а не RPC. При этом для каждого пользователя требуется внутренний сертификат безопасности MSMQ. Для получения указанного сертификата используется соответствующая оснастка (аплет Message Queuing). Несмотря на указанные достоинства, протокол MSMQ применяется, ограничено из-за того, что его использование возможно только на платформах Microsoft.

Выводы

Потенциально система безопасности семейства технологий COM/DCOM/COM+ позволяет обеспечить полноценную защиту приложений. Однако применение этой технологии при разработке высокоответственных приложений ограничено следующими недостатками.

- Отсутствием на концептуальном уровне комплексного подхода к обеспечению доступности данных.

- Отсутствием в системе безопасности механизма четкого разделения прав администраторов с возможностью взаимного контроля и дублирования.

- Во многих случаях автоматическая синхронизация доступа к разделяемым данным для многопоточных приложений или при маршалинге может серьезно уменьшить доступность данных.

- Протокол освобождения сервера приложений уязвим с точки зрения "атаки на отказ".

- Применение сервера балансировки загрузки накладывает дополнительные ограничения на программную реализацию приложений.

- Возможное исчерпание ресурсов сервера за счет не удаления COM+ объекта по причине программной ошибки или "троянского коня".

- Возможность существования недокументированных возможностей сервера за счет скрытых интерфейсов.

- Сложность полноценного тестирования приложений.

- Применение асинхронного протокола MSMQ, который обеспечивает живучесть приложений COM+ при отказах в сети, возможно только на платформах Microsoft.