Книга знакомит читателя с клиент-серверными моделями на языках C++ и C# и демонстрирует особенности архитектуры .NET. Вы узнаете принципы создания внутрипроцессных и локальных серверов и их клиентов на каждом из этих языков. Для приобретения практических навыков дано множество примеров, иллюстрирующих излагаемый материал. Тексты всех рассмотренных в книге приложений можно найти на веб-сайте издательства. Для работы с книгой не нужно знать клиент-серверные модели, но при ее написании автор ориентировался на тех, кто знаком с одним из современных языков пр
ограммирования (C++, Visual Basic, Java).
Содержание
Введение
Для кого предназначена эта книга?
Структура книги
Соглашения, принятые в данной книге
Требования к аппаратным средствам и программному обеспечению
От издательства
Часть 1. Клиент-серверная модель
Глава 1. Создание сервера и приемника COM средствами SDK
Создание сервера
Создание приемника
Глава 2. Поддержка COM в MFC
Реализация компонентов COM
Создание сервера
Создание приемника
Работа с интерфейсом автоматизации
Глава 3. Локальные серверы
Составление
Язык MIDL
Создание локального сервера средствами SDK
Создание библиотеки «заместитель–исполнитель»
Создание локального сервера
Создание приложения-приемника для локального сервера
Глава 4. Взаимодействие объектов COM
Встраивание
Агрегация
Агрегация с использованием SDK
Встраивание и агрегация в MFC
Создание сервера
Создание приемника
Глава 5. Потоковые модели COM
Потоковые модели COM
Модель однопотокового отделения
Модель многопотокового отделения
Смешанная модель
Потоковые модели внутренних серверов процесса
Взаимодействие объектов во внутренних серверах процесса
Составитель свободных потоков
Потоковые модели внешнего сервера процесса
Активизация внешнего сервера процесса
Завершение работы внешнего сервера процесса
Глава 6. Библиотека Active Template Library
Преимущества использования ATL
Заготовка проекта ATL
Создание простейшего объекта ATL
Архитектура ATL
Реализация интерфейса IUnknown
Классы CComObjectRootBase и CComObjectRootEx
Класс CComCoClass
Добавление свойств и методов
Создание приемника
Использование библиотеки типов
Использование интерфейса диспетчеризации
Глава 7. Создание серверов и приемников на языке C#
Создание внутреннего сервера процесса
Создание приемника
Составление и расформирование в C#
Домены приложений
Контекст
Взаимодействие с приложениями C++
Создание приемника для сервера C++
Службы вызова платформы
Вызов серверов C# в приложениях C++
Часть 2. Приложения и элементы управления ActiveX
Глава 8. Базовые понятия технологии ActiveX
Работа с составными документами
Связывание объектов
Внедрение объектов
Связывание и внедрение фрагментов документов
Совместная работа приложений
Контейнеры и серверы
Автоматизация в технологии ActiveX
Элементы управления ActiveX
Глава 9. Создание контейнера ActiveX
Создание заготовки приложения-контейнера
Меню
Классы
Создание полноценного приложения
Перемещение и изменение размеров объекта
Работа с несколькими объектами
Реализация перетаскивания
Реализация источника перетаскивания
Реализация адресата перетаскивания
Глава 10. Создание сервера ActiveX
Создание заготовки приложения-сервера
Меню
Классы
Изменение зарегистрированного имени приложения
Добавление функциональности в приложение
Документы ActiveX
Создание приложения сервер-контейнер
Глава 11. Создание элемента управления ActiveX
Структура элементов управления ActiveX
Поддерживаемые интерфейсы
События
Свойства
Создание элементов управления ActiveX средствами MFC
Класс CMFCControlApp
Класс CMFCControlCtrl
Соблюдение лицензионных прав
Класс CMFCControlPropPage
Внесение изменений в заготовку элемента управления
Включение элементов управления ActiveX в приложение
Глава 12. Создание сервера автоматизации ActiveX
Создание заготовки сервера автоматизации ActiveX
Классы
Экспорт свойств
Создание работоспособного приложения
Создание приемника автоматизации
Создание класса диспетчеризации
Внесение изменений в главное окно приложения
Часть 3. Создание приложений Интернета
Глава 13. Основы работы в Интернете
Протокол HTTP
Соединение TCP/IP
Адресация в Интернете
Запрашиваемые методы
Заголовки запроса
Типы MIME
Идентификация пользователя
Обзор интерфейсов веб-страниц
Интерфейс CGI
Интерфейс WinCGI
Интерфейс ISAPI
Глава 14. Расширения ISAPI
Преимущества использования расширений ISAPI
Обработка запроса в расширении ISAPI
Обеспечение безопасности работы расширения
Особенности расширений ISAPI
Создание простейшего расширения ISAPI
Обработка аргументов
Глава 15. Фильтры ISAPI
Область применения фильтров ISAPI
Работа с протоколом SSL
Загрузка сервера и контроль за его работой
Преобразование URL
Преобразование страниц HTML
Вызов фильтров ISAPI
Функция GetFilterVersion
Флаги приоритетов
Работа с портами
Обеспечение связи
Функция HttpFilterProc
Пример работы с фильтрами ISAPI
Глава 16. Использование классов WinInet
Использование Windows Sockets
Интерфейс MAPI
Классы WinInet
Чтение веб-страницы
Часть 4. Особенности создания управляемых приложений
Глава 17. Управляемые приложения
Поддержка управляемых приложений в Windows 2000
Windows Management Instrumentation
Application Center 2000
Отдельные приложения
Управляемые расширения для C++
Обработка исключений в управляемых приложениях
Сборки управляемых приложений
Создание управляемого приложения
Глава 18. Графический интерфейс приложений языка C#
Создание формы Windows
Веб-форма
Среда Web Forms
События, вызываемые веб-формами
Жизненный цикл веб-формы
Создание веб-формы
Глава 19. Создание веб-служб на языке C#
Создание веб-службы
Создание приемника веб-службы
Глава 20. Работа с потоками данных на языке C#
Чтение и запись файлов
Работа с двоичными файлами
Буферизация потоков
Работа с текстовыми файлами
Асинхронный ввод-вывод
Сетевой ввод-вывод
Создание простейшего сетевого сервера
Создание приемника для простейшего сервера
Оптимизация работы с несколькими соединениями
Часть 5. Службы данных
Глава 21. Работа с базами данных
Основные понятия теории баз данных
ODBC
Регистрация базы данных
Создание приложения ODBC
Глава 22. Работа с языком SQL
Краткое описание языка SQL
Взаимодействие C++ и SQL
Доступ к базе данных в Visual Studio.NET
Работа с таблицами
Работа с хранимыми процедурами
Создание приложения SQL
Глава 23. Базы данных в ADO.NET
Объектная модель ADO.NET
Простейшее приложение ADO.NET
Управляемые провайдеры ADO
Более сложное приложение ADO
Объединение таблиц базы данных
Внесение изменений в записи базы данных
Алфавитный указатель
ОТРЫВОК
Часть 1
Клиент-серверная модель
Создание сервера и приемника COM средствами SDK
Программистам, имеющим опыт работы с Visual C++, может показаться странным желание создавать приложения средствами SDK, когда под рукой MFC и ATL. Однако в Microsoft придерживаются другого мнения и считают, что разработчики приложений COM должны уметь работать с SDK и не особенно увлекаться использованием MFC и ATL. Естественно, что любой разработчик готов сэкономить несколько часов, воспользовавшись готовыми библиотеками и средствами разработки, но всегда следует помнить мудрые слова Вергилия: «Timeo danaos et dona ferentes»1. Часы, сэкономленные при разработке приложения, могут обер
нуться днями, потраченными на его отладку или создание его заново, если все способы отладки окажутся неэффективными. Кроме того, включение в приложение двух интерфейсов, один из которых не используется, неблагоприятно отражается на его размере.
В этой главе будет рассмотрено создание простейшего внутреннего сервера процесса (выполняющегося в вызвавшем его процессе) компонента COM с использованием SDK. Чтобы читатель мог сконцентрировать основное внимание на процедурах, связанных с его созданием, сам компонент выбран очень простым. Он будет содержать один интерфейс и два метода. Один из этих методов используется для записи строки текста, а второй — для ее чтения.
Поскольку работа с SDK не автоматизирована, то в данной главе содержится практически полный текст приложений сервера и приемника, который должен быть введен вручную.
Создание сервера
Для создания полноценного сервера в нем необходимо реализовать по крайней мере два класса: первый из них должен исполнять пользовательский интерфейс компонента, а второй — создавать экземпляр первого класса и хранить его в своей куче.
Текст приложения-сервера можно найти на веб-сайте издательства.
Чтобы самостоятельно создать приложение-сервер, выполните указанные далее действия:
1. Выберите команду меню File4New4Project (Файл4Создать4Проект) или нажмите кнопку New Project (Новый проект) панели инструментов Standard (Стандартная). Появится диалоговое окно New Project (Создание проекта), изображенное на рис. 1.1.
2. В окне иерархического списка Project Types (Типы проектов) раскройте каталог Visual C++ Projects (Проекты Visual C++).
3. В окне списка Templates (Шаблоны) выделите значок Win32 Project (Проект Win32), в текстовое поле Name (Имя) введите имя приложения SDKipServer и нажмите кнопку OK. Появится диалоговое окно Win32 Application Wizard (Мастер приложений Win32), представленное на рис. 1.2.
Разработка приложений на C++ и C#. Библиотека программиста. / Н. Секунов - СПб: Питер, 2003. - 608 с.
|