Сообщений 6    Оценка 71        Оценить  
Система Orphus

Программирование сетевых приложений на C++. Том 1

Профессиональный подход к проблеме сложности: ACE и паттерны

Авторы: Дуглас С.Шмидт
Стивен Д.Хьюстон
Издательство: Бином, 2003
304 страницы

Материал предоставил: Евгений Охотников
Найти в магазинах
Купить в Озоне (166 руб.)
Купить в Books.Ru
Купить в Болеро (156 руб.)
Купить в OZ.by (Беларусь)

Аннотация

Содержание
О чем эта книга
Комментарии

Аннотация

Это первый том двухтомника «Программирование сетевых приложений на С++», посвященный библиотеке The ADAPTIVE Communication Environment (ACE) – одной из самых переносимых C++ библиотек, предназначенной для разработки сложных, многоплатформенных приложений, и широко используемой во всем мире. В нем читатель знакомится с самой библиотекой, ее историей, основными чертами ее архитектуры и принципами использования.

Первый том посвящен небольшому числу классов ACE – интерфейсным фасадам, необходимым для работы с механизмами IPC и параллельным программированием (потоки и процессы). На протяжении всей книги рассматривается один пример – создание сетевой службы регистрации, и показывается реализация этого примера с использованием очередного описанного средства ACE.

Книга предназначена, в основном, разработчикам-практикам, нуждающимся в удобном и мощном инструменте для создания сложных кроссплатформенных приложений. Так же она может быть интересна студентам старших курсов и аспирантов, да и просто всем интересующимся разработкой серьезного ПО на C++.

Содержание

Предисловие
Об этой книге

Глава 0. Проблемы проектирования, решения промежуточного слоя и ACE

Проблемы сетевых приложений
Аспекты проектирования сетевых приложений
Решения, связанные с объектно-ориентированным промежуточным слоем
Обзор инструментальной библиотеки ACE
Пример: сетевая служба регистрации
Резюме

ЧАСТЬ I. Объектно-ориентированное программирование сетевых приложений

Глава 1. Аспекты проектирования: коммуникации

Протоколы без установления и с установлением соединения
Синхронный и асинхронный обмен сообщениями
Передача сообщений и общая память
Резюме

Глава 2. Обзор Socket API

Обзор механизмов IPC операционной системы
Socket API
Ограничения Socket API
Резюме

Глава 3. Интерфейсные фасады ACE: сокеты

Обзор
Классы ACE_Addr, ACE_INET_Addr
Класс ACE_IPC_SAP
Класс ACE_SOCK
Класс ACE_SOCK_Connector
Класс ACE_SOCK_IO и ACE_SOCK_Stream
Класс ACE_SOCK_Acceptor
Резюме

Глава 4. Реализация сетевой службы регистрации

Обзор
Класс ACE_Message_Block
Классы ACE_InputCDR и ACE_OutputCDR
Первоначальный вариант сервера регистрации
Клиентское приложение
Резюме

ЧАСТЬ II. Программирование параллельных объектно-ориентированных сетевых приложений

Глава 5. Аспекты проектирования: параллелизм

Последовательные, параллельные и взаимно-согласованные серверы
Процессы и потоки
Стратегии создания процессов/потоков
Модель пользовательских потоков, потоков ядра и гибридная модель
Классы планирования с разделением времени и в реальном времени
Архитектуры, ориентированные на задачи и на сообщения
Резюме

Глава 6. Обзор механизмов параллелизма операционных систем

Демультиплексирование синхронных событий
Механизмы многозадачности
Механизмы многопоточности
Механизмы синхронизации
Ограничения механизмов параллелизма в ОС
Резюме

Глава 7. Интерфейсные фасады ACE: демультиплексирование синхронных событий

Обзор
Класс ACE_Handle_Set
Класс ACE_Handle_Set_Iterator
Методы ACE::select()
Резюме

Глава 8. Интерфейсные фасады ACE: процессы

Обзор
Класс ACE_Process
Класс ACE_Process_Options
Класс ACE_Process_Manager
Резюме

Глава 9. Интерфейсные фасады ACE: потоки

Обзор
Класс ACE_Thread_Manager
Класс ACE_Sched_Params
Класс ACE_TSS
Резюме

Глава 10. Интерфейсные фасады ACE: синхронизация

Обзор
Классы ACE_Guard
ACE-классы мьютексов
ACE-классы блокировок «читатели/писатель»
ACE-классы семафоров
ACE-классы условных переменных
Резюме

Приложение A. Принципы проектирования интерфейсных фасадов ACE на C++

Обзор
Используйте интерфейсные фасады для повышения типовой безопасности
Упрощайте наиболее общие случаи применения
Используйте иерархическое представление для ясности и расширяемости проекта
Скрывайте, где только можно, платформенные различия
Повышайте эффективность
Резюме

Приложение B. Прошлое, настоящее и будущее ACE

Эволюция ACE
Дорога в будущее
Заключительные замечания

Словарь терминов
Англо-русский словарь терминов
Литература

О чем эта книга

Лучше всего о назначении и структуре книги говорят ее авторы:

«…Эта книга адресована, в первую очередь, разработчикам-практикам, студентам старших курсов и аспирантам, а также всем заинтересованным в изучении стратегии и тактики применения C++ и объектно-ориентированного проектирования при программировании параллельных сетевых приложений. Мы рассматриваем основные аспекты, принципы и паттерны проектирования, необходимые для того, чтобы в сжатые сроки и без больших проблем разрабатывать гибкие и эффективные параллельные сетевые приложения. Многочисленные примеры кода на C++ дополняют излагаемые принципы проектирования и показывают на конкретных примерах как сразу начать использовать основные классы ACE. Мы переносим вас «за кулисы», чтобы показать, как и почему механизмы IPC и параллелизма разработаны именно такими, какими вы их видите в инструментальной библиотеке ACE…»

«…В книге 11 глав. Они организованы следующим образом:

Приложение A суммирует принципы проектирования и реализации классов, лежащих в основе интерфейсных фасадов ACE IPC и параллелизма. Приложение B прослеживает, с самого начала, десятилетнюю эволюцию открытого исходного кода ACE и намечает пути его развития в будущем…»

Комментарии

Евгений Охотников

Эта книга – первая в серии книг, посвященных замечательной кроссплатформенной объектно-ориентированной библиотеке ACE (The ADAPTIVE Communication Environment). Это очень большая библиотека, предназначенная, в первую очередь, для разработки переносимых сетевых приложений. Данная книга начинает знакомить читателя с самой библиотекой, особенностями ее архитектуры, принципами построения и использования, а так же с ее историей и текущим состоянием.

Данная книга является достаточно простым и последовательным введением в ACE. Мне кажется, что в ней достигнут удачный компромисс между сложностью и объемом самой библиотеки, и формой подачи материала. В книге большое количество примеров C++ кода. Наиболее важные примеры даны с нумерацией строк, а после примера следует детальное построчное рассмотрение кода с акцентами на наиболее важных моментах. Так же удобно, что во всей книге рассматривается одна задача – служба сетевой регистрации, и показывается, как изменяется ее реализация при переходе к использованию более высокоуровневых средств ACE.

Нужно сказать, что библиотека ACE очень велика. И в данной книге авторы ограничились описанием очень небольшого количества интерфейсных фасадов ACE. При этом «за бортом» остались такие важные части, как кроссплатформенные реализации большинства функций стандартной библиотеки и объектно-ориентированные каркасы (каркасам посвящен второй том «Программирования сетевых приложений на C++»). Поэтому данную книгу вряд ли получится использовать в качестве справочного пособия по ACE, все же ее основная цель – это знакомство читателя с библиотекой.

Со временем, после начала работы с ACE, складывается впечатление, что книга является всего лишь компиляцией статей создателя ACE, профессора Дугласа Шмидта, и вырезок из on-line документации по ACE. Более того, даже не очень полной компиляцией. Тем не менее, заслуга книги в том, что материал в ней подается последовательно, от простого к сложному. Поэтому по ходу чтения удается получить хорошее впечатление об основных принципах ACE, что гораздо сложнее сделать, изучая, к примеру, только on-line документацию.

К недостаткам книги я бы отнес достаточно специфический язык авторов. Например, черезмерное использование слов «эффективный». Так же читателю потребуется хорошее понимание термина «паттерн» и знание основных паттернов, описанных в «GoF».

Недостатками именно русскоязычного издания я считаю не очень высокое качество печати (заметно на врезках) и наличие опечаток в примерах кода и названиях методов.

Я бы рекомендовал данную книгу всем, кто хотел бы ознакомиться с библиотекой ACE. А так же тем, кто занимается кроссплатформенной разработкой на C++, и еще не выбрал для себя базовую объектно-ориентированную библиотеку. А так же тем, кто занимается разработкой подобных библиотек - «для общего развития». В общем, интересное и полезное чтение для C++ программистов, пишущих код для нескольких ОС или занимающихся написанием околосистемного ПО, работающего непосредственно над уровнем ОС (например, ПО промежуточного слоя).

    Сообщений 6    Оценка 71        Оценить