Введение | 13 |
Для кого предназначена эта книга? | 14 |
Структура книги | 14 |
Соглашения, принятые в данной книге | 18 |
Требования к аппаратным средствам и программному обеспечению | 19 |
От издательства | 20 |
|
Часть 1. Клиент-серверная модель | 21 |
|
Глава 1. Создание сервера и приёмника СОМ средствами SDK | 22 |
Создание сервера | 22 |
Создание приёмника | 43 |
|
Глава 2. Поддержка СОМ в MFC | 49 |
Реализация компонентов СОМ | 49 |
Создание сервера | 50 |
Создание приёмника | 58 |
Работа с интерфейсом автоматизации | 64 |
|
Глава 3. Локальные серверы | 70 |
Составление | 71 |
Язык MIDL | 72 |
Создание локального сервера средствами SDK | 75 |
Создание библиотеки «заместитель-исполнитель» | 76 |
Создание локального сервера | 80 |
Создание приложения-приёмника для локального сервера | 93 |
|
Глава 4. Взаимодействие объектов СОМ | 97 |
Встраивание | 98 |
Агрегация | 98 |
Агрегация с использованием SDK | 99 |
Встраивание и агрегация в MFC | 106 |
Создание сервера | 106 |
Создание приёмника | 116 |
|
Глава 5. Потоковые модели СОМ | 124 |
Потоковые модели СОМ | 124 |
Модель однопотокового отделения | 125 |
Модель многопотокового отделения | 128 |
Смешанная модель | 128 |
Потоковые модели внутренних серверов процесса | 129 |
Взаимодействие объектов во внутренних серверах процесса | 130 |
Составитель свободных потоков | 131 |
Потоковые модели внешнего сервера процесса | 132 |
Активизация внешнего сервера процесса | 133 |
Завершение работы внешнего сервера процесса | 134 |
|
Глава 6. Библиотека Active Template Library | 136 |
Преимущества использования ATL | 137 |
Заготовка проекта ATL | 138 |
Создание простейшего объекта ATL | 142 |
Архитектура ATL | 145 |
Реализация интерфейса IUnknown | 146 |
Классы CComObjectRootBase и CComObjectRootEx | 147 |
Класс CComCoClass | 147 |
Добавление свойств и методов | 147 |
Создание приёмника | 151 |
Использование библиотеки типов | 156 |
Использование интерфейса диспетчеризации | 161 |
|
Глава 7. Создание серверов и приёмников на языке С# | 163 |
Создание внутреннего сервера процесса | 163 |
Создание приёмника | 165 |
Составление и расформирование в С# | 169 |
Домены приложений | 169 |
Контекст | 176 |
Взаимодействие с приложениями C++ | 178 |
Создание приёмника для сервера C++ | 178 |
Службы вызова платформы | 183 |
Вызов серверов С# в приложениях C++ | 184 |
|
Часть 2. Приложения и элементы управления ActiveX | 187 |
|
Глава 8. Базовые понятия технологии ActiveX | 188 |
Работа с составными документами | 189 |
Связывание объектов | 190 |
Внедрение объектов | 192 |
Связывание и внедрение фрагментов документов | 194 |
Совместная работа приложений | 197 |
Контейнеры и серверы | 198 |
Автоматизация в технологии ActiveX | 199 |
Элементы управления ActiveX | 201 |
|
Глава 9. Создание контейнера ActiveX | 202 |
Создание заготовки приложения-контейнера | 202 |
Меню | 204 |
Классы | 210 |
Создание полноценного приложения | 221 |
Перемещение и изменение размеров объекта | 221 |
Работа с несколькими объектами | 227 |
Реализация перетаскивания | 235 |
Реализация источника перетаскивания | 235 |
Реализация адресата перетаскивания | 237 |
|
Глава 10. Создание сервера ActiveX | 251 |
Создание заготовки приложения-сервера | 251 |
Меню | 252 |
Классы | 253 |
Изменение зарегистрированного имени приложения | 262 |
Добавление функциональности в приложение | 267 |
Документы ActiveX | 271 |
Создание приложения сервер-контейнер | 275 |
|
Глава 11. Создание элемента управления ActiveX | 281 |
Структура элементов управления ActiveX | 282 |
Поддерживаемые интерфейсы | 282 |
События | 283 |
Свойства | 284 |
Создание элементов управления ActiveX средствами MFC | 286 |
Класс CMFCControlApp | 288 |
Класс CMFCControlCtrl | 289 |
Соблюдение лицензионных прав | 291 |
Класс CMFCControlPropPage | 293 |
Внесение изменений в заготовку элемента управления | 294 |
Включение элементов управления ActiveX в приложение | 309 |
|
Глава 12. Создание сервера автоматизации ActiveX | 315 |
Создание заготовки сервера автоматизации ActiveX | 315 |
Классы | 316 |
Экспорт свойств | 318 |
Создание работоспособного приложения | 321 |
Создание приёмника автоматизации | 325 |
Создание класса диспетчеризации | 325 |
Внесение изменений в главное окно приложения | 326 |
|
Часть 3. Создание приложений Интернета | 335 |
|
Глава 13. Основы работы в Интернете | 336 |
Протокол HTTP | 337 |
Соединение TCP/IP | 337 |
Адресация в Интернете | 341 |
Запрашиваемые методы | 341 |
Заголовки запроса | 343 |
Типы MIME | 345 |
Идентификация пользователя | 346 |
Обзор интерфейсов веб-страниц | 348 |
Интерфейс CGI | 349 |
Интерфейс WinCGI | 351 |
Интерфейс ISAPI | 356 |
|
Глава 14. Расширения ISAPI | 363 |
Преимущества использования расширений ISAPI | 364 |
Обработка запроса в расширении ISAPI | 367 |
Обеспечение безопасности работы расширения | 369 |
Особенности расширений ISAPI | 371 |
Создание простейшего расширения ISAPI | 373 |
Обработка аргументов | 383 |
|
Глава 15. Фильтры ISAPI | 387 |
Область применения фильтров ISAPI | 388 |
Работа с протоколом SSL | 389 |
Загрузка сервера и контроль за его работой | 391 |
Преобразование URL | 395 |
Преобразование страниц HTML | 396 |
Вызов фильтров ISAPI | 398 |
Функция GetFilterVersion | 402 |
Флаги приоритетов | 403 |
Работа с портами | 404 |
Обеспечение связи | 405 |
Функция HttpFilterProc | 406 |
Пример работы с фильтрами ISAPI | 407 |
|
Глава 16. Использование классов Winlnet | 423 |
Использование Windows Sockets | 423 |
Интерфейс MAPI | 425 |
Классы Winlnet | 426 |
Чтение веб-страницы | 427 |
|
Часть 4. Особенности создания управляемых |
приложений | 437 |
|
Глава 17. Управляемые приложения | 438 |
Поддержка управляемых приложений в Windows 2000 | 439 |
Windows Management Instrumentation | 440 |
Application Center 2000 | 441 |
Отдельные приложения | 443 |
Управляемые расширения для C++ | 444 |
Обработка исключений в управляемых приложениях | 446 |
Сборки управляемых приложений | 447 |
Создание управляемого приложения | 448 |
|
Глава 18. Графический интерфейс приложений языка С# | 454 |
Создание формы Windows | 455 |
Веб-форма | 462 |
Среда Web Forms | 463 |
События, вызываемые веб-формами | 463 |
Жизненный цикл веб-формы | 464 |
Создание веб-формы | 466 |
|
Глава 19. Создание веб-служб на языке С# | 477 |
Создание веб-службы | 478 |
Создание приёмника веб-службы | 485 |
|
Глава 20. Работа с потоками данных на языке С# | 490 |
Чтение и запись файлов | 490 |
Работа с двоичными файлами | 491 |
Буферизация потоков | 494 |
Работа с текстовыми файлами | 497 |
Асинхронный ввод-вывод | 499 |
Сетевой ввод-вывод | 504 |
Создание простейшего сетевого сервера | 505 |
Создание приёмника для простейшего сервера | 508 |
Оптимизация работы с несколькими соединениями | 512 |
|
Часть 5. Службы данных | 519 |
|
Глава 21. Работа с базами данных | 520 |
Основные понятия теории баз данных | 522 |
ODBC | 523 |
Регистрация базы данных | 523 |
Создание приложения ODBC | 526 |
|
Глава 22. Работа с языком SQL | 543 |
Краткое описание языка SQL | 543 |
Взаимодействие C++ и SQL | 546 |
Доступ к базе данных в Visual Studio.NET | 547 |
Работа с таблицами | 549 |
Работа с хранимыми процедурами | 554 |
Создание приложения SQL | 558 |
|
Глава 23. Базы данных в ADO.NET | 570 |
Объектная модель ADO.NET | 571 |
Простейшее приложение ADO.NET | 572 |
Управляемые провайдеры ADO | 577 |
Более сложное приложение ADO | 578 |
Объединение таблиц базы данных | 581 |
Внесение изменений в записи базы данных | 585 |
|
Алфавитный указатель | 600 |