Иллюстрированный самоучитель по Architecture .NET

Что такое Microsoft .NET? 2
Microsoft и Web 3
Приложения в эпоху Internet. Web-службы. 4
ASP.NET. Открытые стандарты и возможность взаимодействия. 5
Протоколы обмена 6
Windows на рабочем столе. Проблемы с Windows. 7
Стеклянный дом и тонкие клиенты. Устойчивая Windows. 8
Новая платформа программирования. Каркас NET Framework. 9
Общеязыковая среда выполнения CLR 10
Разработка приложений на разных языках. Инструментальные средства разработки. 11
Важность инструментальных средств разработки. Роль языка XML. 12
Факторы, определяющие успех Web-служб. Резюме. 13
Основы технологии .NET 14
Проблемы, связанные с разработкой Windows-приложений 15
Приложения будущего. Обзор платформы .NET. Волшебство метаданных. 16
Библиотека классов .NET Framework. Программирование на основе интерфейсов. 18
Объектом является все. Общая система типов. 19
ILDASM – дисассемблер промежуточного языка Microsoft 20
Возможность взаимодействия языков, или функциональная совместимость 21
Управляемый код 22
Сборки 23
JIТ-компиляция, или оперативная компиляция. Производительность. Резюме. 24
Программирование на управляемом C++ 25
Место C++ в мире .NET 26
Использование расширений управляемого C++ 27
Ваша первая программа на управляемом C++ .NET 28
Директива #using и оператор using 29
Стандартный ввод-вывод 30
Класс System::string (Система::Строка) 32
Класс System::Array (Система::Массив) 35
Программа Hotel (Гостиница) 38
Отображение C++ на спецификацию общего (универсального) языка (CLS) и .NET Framework. Типы данных C++ и общеязыковая среда выполнения CLR. 40
Типы данных C++ и .NET Framework 41
Программирование на C++ для платформы .NET 42
Управляемые и неуправляемые типы 43
Управление сборкой мусора 44
Типовая безопасность 45
Типы значений 46
Абстрактные типы 47
Интерфейсы 48
Упаковка и распаковка примитивных типов данных 49
Делегаты 50
События 51
Свойства 52
Закрепление управляемых объектов 53
Конечные классы 54
Управляемое приведение типов 55
Определение ключевых слов в качестве идентификаторов 56
Обработка исключений 57
Атрибуты C++. Резюме. 58
Объектно-ориентированное программирование на управляемом C++ 62
Обзор основных понятий объектно-ориентированного программирования. Объекты. 63
Классы 65
Полиморфизм 66
Проект "Бюро путешествий Acme" 67
Проектирование абстракций 68
Логика базовых классов 70
Проектирование инкапсуляции. Наследование в управляемом C++. 72
Основные принципы наследования 73
Реализация примера "Бюро путешествий Acme". Запуск программы примера. 74
Класс HotelReservation. Класс HotelBroker. 75
Класс Customers (Клиенты). Пространство имен. 77
Класс TestHotel. Резюме. 78
Управляемый C++ в .NET Framework 79
Объект системы System::Object 80
Общедоступные методы экземпляров класса Object (Объект) 81
Защищенные методы экземпляров класса object (Объект). Родовые интерфейсы и обычное поведение. 82
Использование методов класса object (Объект) в классе Customer (Клиент) 83
Коллекции. Пример класса ArrayList (Список массивов). 85
Интерфейсы 88
Основные сведения об интерфейсах 89
Программирование с использованием интерфейсов 90
Динамическое использование интерфейсов 93
Программа Бюро путешествий Acme (Acme Travel Agency) 95
Явное определение интерфейсов. Родовые интерфейсы в .NET. 97
Интерфейсы коллекций 99
Копирование объектов и интерфейс icioneable 103
Сравнение объектов 109
Что такое каркасы приложений. Делегаты. 110
Объявление делегата. Определение метода. Создание экземпляра делегата. 111
Вызов делегата. Объединение экземпляров делегатов. 112
Полный пример 113
Моделирование фондовой биржи 115
События. События в управляемом C++ и .NET. 118
Описание сервера 119
Описание клиента 120
Комната для дискуссий (пример чат-программы) 121
Резюме 123
Создание графических пользовательских интерфейсов 124
Иерархия Windows Forms (Формы Windows) 125
Создание простых форм с помощью комплекса инструментальных средств разработки программ .NET SDK. Шаг 0: Создание простой формы. 126
Шаг 1: Отображение текста на форме 128
Обработка событий в Windows Forms. Документация по обработке событий. Событие MouseDown (Кнопка мыши нажата). 129
Шаг 2: Обработка событий мыши. Шаг 2М: Несколько обработчиков для события. 130
Шаг 3: События MouseDown (Кнопка мыши нажата) и Keypress (Нажатие клавиши) 132
Шаг 4: Меню для выхода из программы. Код меню. Код события Menu. Управляющие элементы. 133
Шаг 5: Использование управляющего элемента TextBox (Поле) 135
Visual Studio .NET и формы. Демонстрация Windows Forms. 136
Окно конструктора (Design window) и окно кода (Code window) 140
Добавление события. Код обработчика события. 141
Использование управляющего элемента Menu (Меню) 142
Закрытие формы (Выход из формы) 143
Диалоговые окна 144
Документация по диалогам .NET 145
Демонстрация диалогового окна 146
Управляющий элемент ListBox (Список элементов). Начальная загрузка списка элементов. 149
Выбор элемента в списке элементов ListBox 150
Пример Бюро путешествий Acme (Acme Travel Agency) – шаг 3. Резюме. 151
Сборки и развертывание 153
Сборки 154
Содержимое сборки 155
Частное развертывание сборки 160
Общедоступное развертывание сборки. Строгие имена. 161
Цифровые сигнатуры (подписи) 162
Цифровая подпись и развертывание общедоступной сборки 163
Управление версиями общедоступных компонентов 167
Подписание в цифровой форме после компиляции 168
Конфигурация сборки. Проводимая по умолчанию политика управления версиями. 169
Файлы конфигурации политики управления версиями 170
Обнаружение физического местоположения сборки 171
Многомодульные, или мультимодульные сборки 172
Инсталляция примера программной системы 175
Установка и развертывание проектов. CAB Project (Проект CAB). 178
Проект установки (Setup Project) 179
Merge Module Project (Проект модуля слияния) 180
Развертывание по сети. Резюме. 181
Классы каркаса .NET Framework 182
Классы каркаса .NET Framework 183
Метаданные и отражение 184
Класс туре (Тип) 185
Динамическое связывание 187
Ввод и вывод в .NET. Потоковые классы. 188
Примитивные типы данных и потоки. TextReader и TextWriter. 189
Обработка файлов 190
Сериализация, или преобразование в последовательную форму 191
Объекты сериализации 192
ISerializable 195
Модель приложений .NET. Потоки. 196
Изоляция потоков 206
Синхронизация коллекций. Контекст. 207
Заместители и заглушки 209
ContextBoundObject. Изоляция приложений. 210
Прикладная область. Прикладные области и сборки. 211
Класс AppDomain (Прикладная область). События AppDomain (Прикладная область). 212
Пример AppDomain (Прикладная область) 213
Маршализация, прикладные области и контексты. Асинхронное программирование. Асинхронные шаблоны проектирования .lAsyncResult. 215
Использование делегатов в асинхронном программировании 216
Организация поточной обработки с параметрами. Удаленный доступ. 218
Краткий обзор удаленного доступа 220
Удаленные объекты 221
Активация. Пример удаленного объекта. 222
Пример программы, реализующей удаленный доступ 223
Метаданные и удаленный доступ. Конфигурационные файлы удаленного доступа. Программируемые атрибуты. 224
Использование самостоятельно созданного атрибута 225
Определение класса атрибута. Определение базового класса. 226
Сборка мусора. Уничтожение объектов. 227
Неуправляемые ресурсы и освобождение ранее выделенной области памяти 229
Поколения. Завершение и раскручивание стека. 232
Управление сборкой мусора с помощью класса сборщика мусора GC 233
Программа-пример. Резюме. 234
Программирование в ADO.NET 235
Программирование в ADO.NET 236
Источники данных 237
Проводник Visual Studio .NET по серверу: Server Explorer. Установление соединения. 238
Устройства считывания данных 239
Работа с базой данных в соединенном режиме 241
Выполнение операторов SQL 242
DataReader. Множественное результирующее множество. 243
Коллекция параметров 244
Классы SqlDataAdapter и DataSet (Набор данных). Отсоединенный режим. 245
Коллекции объектов DataSet (Набор данных) 246
Основные сведения о наборах данных 247
Обновление источника данных 248
Автоматически генерируемые свойства команд 249
Транзакции и обновление базы данных 250
Объект DataSet (Набор данных) и сравнение пессимистического блокирования с оптимистическим 251
Использование наборов данных. Множественные таблицы в объекте DataSet (Набор данных). 252
Создание таблицы без обращения к источнику данных 254
Ограничения и связи 255
Получение информации о схеме размещения данных в объекте DataTabie (Таблица данных) 257
Изменение объекта DataRow 259
Пример приложения Acme Travel Agency (Туристическое агентство Acme). Доступ к данным XML. Схема и данные XML. 262
XmlDataDocument. DataSet (Набор данных) и XML. База данных AirlineBrokers. 263
DataSet (Набор данных) и XML 264
Создание документа XML из объекта DataSet (Набор данных) 266
ASP.NET и Web-формы 268
Что такое ASP.NET? Основные принципы создания Web-приложения. 269
Программа на С#: Echo (Эхо) 272
Возможности ASP.NET 273
Архитектура Web-форм 274
Класс Page (Страница) 275
Время существования страниц с Web-формами 276
Состояние представления (вида). Модель событий Web-форм. 277
Обработка страницы 278
Трассировка 281
Программирование запросов и ответов. Класс HttpRequest. 282
Класс HttpResponse 286
Изучение конкретного примера. Web-страница с информацией о гостиницах. 288
Привязка данных 291
Приложения ASP.NET. Сеансы. Global.asax. 296
Состояния в приложениях ASP.NET. Статические элементы данных. Объект Application (Приложение). Объект Session (Сеанс). 297
Конфигурация ASP.NET. Файлы конфигурации. 298
Дополнительная информация об ASP.NET. Резюме. 299
Web-службы 300
Web-службы 301
Протоколы. Язык XML. 302
Пространства имен XML (XML Namespeces) 303
Схема XML (XML schema). Протокол SOAP. 304
Язык описания Web-служб WSDL. Архитектура Web-службы. Пример Web-службы Add (Сложение). 305
Просмотр Web-службы Add (Сложение) при помощи браузера. Отладка Web-службы Add (Сложение). 306
Клиент для Web-службы Add (Сложение) 307
Язык описания Web-служб (Web Services Description Language – WSDL) 309
Классы-заместители 310
Клиент web-службы, использующий необработанные данные SOAP и протокол передачи гипертекстовых файлов HTTP 311
Особенности форматирования данных согласно спецификации SOAP 313
Класс WebService. Использование шаблона Managed C++ web Service (Web-службы на управляемом C++). 316
Код, генерируемый шаблоном Managed C++ Web Service (Web-служба на управляемом C++) 317
Арифметическая Служба Сети, или Web-служба Arithmetic (Арифметика). Использование внутренних объектов. 318
Web-служба Hotel Broker (Брокер гостиницы) 322
Web-служба Customer (Клиент) 324
Web-служба Hotel Broker (Брокер гостиницы). Соображения по поводу проектирования. Резюме. 325
Web-узлы и Web-службы, работающие на основе ATL Server 326
История технологий, работающих с динамическим содержимым Web 327
Приложения на основе ATL Server 329
ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI). Архитектура приложения, использующего ATL server. 330
Создание проекта ATL Server Project (Проект на основе ATL Server) 331
Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI) 334
Динамически подключаемая библиотека (DLL) Web-приложения 335
Создание и запуск проекта на основе ATL Server 336
Добавление в сервер еще одного обработчика 338
Добавление на сервер обработки управляющей структуры if-else-endif 339
Добавление на сервер обработки управляющей структуры while-endwhile 340
Передача параметров серверному обработчику 341
Поддержка состояния сеанса 344
Получение доступа к переменным сервера 346
Обработка форм 347
Службы сеанса. Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project). 349
Код Web-службы на основе ATL Server: ATLServerWebService.h 352
Создание клиентской программы, обращающейся к Web-службе 354
Добавление функций в Web-службу на основе ATL Server 355
Изменение клиентской программы, работающей с Web-службой 356
Передача структур в качестве входных и выходных параметров. Резюме. 357
Защита 358
Защита или безопасность 359
Защита на основе пользователей 360
Защита доступа к коду. Политика безопасности. Разрешения. 361
lnternet-безопасность. Информационный сервер Internet: Internet Information Server (IIS). 362
Защита .NET на основе ролей. Принципалы и личности. 363
Роли .NET в Windows 365
Другие классы личностей 368
Личность в операционной системе и общеязыковой среде выполнения CLR. Разрешения коду на доступ. 369
Простой запрос разрешения кодом 370
Как работает запрос на разрешение. Стратегия запроса разрешений. Запрет разрешений. 371
Утверждение разрешений. Другие методы разрешений. 372
Класс SecurityPermission 373
Неуправляемый код. Разрешения на основе атрибутов. 374
Разрешение принципала 375
Класс PermissionSet 376
Личность кода. Классы разрешений для личности. Подтверждение. 377
Политика безопасности. Уровни политики безопасности. Кодовые группы. 379
Именованные наборы разрешений. Изменение политики безопасности. 380
Трассировка и отладка в .NET 389
Трассировка и отладка в .NET 390
Пример TraceDemo. Разворачивание TraceDemo.exe.config. 391
Использование классов Debug (Отладка) и Trace (Трассировка) 392
Использование переключателей для активизации диагностики 393
Активация и деактивация переключателей. Установка переключателей в файле конфигурации. Установка переключателей программным путем. 394
Использование переключателей для управления выводом. Класс TraceListener. 395
Коллекция слушателей. Резюме. 396
Смешивание управляемого и неуправляемого кода 397
Сравнение управляемого и неуправляемого кода 398
Причины смешивания управляемого и неуправляемого кодов. Неуправляемый или опасный? 399
Управляемые и неуправляемые ссылки и типы значений 400
Ограничения на использование управляемых типов в C++ 401
Вызов управляемого кода из неуправляемого и обратный вызов 403
Сравнение программирования на C++ с использованием модели компонентных объектов Microsoft (COM) и .NET 404
Доступ из управляемого кода к компонентам, построенным на основе модели компонентных объектов Microsoft (COM) 406
Сервисная программа Tibinp.ехе 407
Унаследованный компонент на основе модели компонентных объектов Microsoft (COM) 409
Действующий клиент на основе модели компонентных объектов Microsoft (COM) 410
Создание клиента на основе модели компонентных объектов Microsoft (COM) с помощью управляемого C++ 411
Разработка управляемого клиента на основе модели компонентных объектов Microsoft (COM) с помощью С# 412
Создание с помощью управляемого C++ клиента на основе модели компонентных объектов Microsoft (COM) без метаданных 413
Создание с помощью С# управляемого клиента на основе модели компонентных объектов Microsoft (COM) без метаданных 414
Доступ к управляемым компонентам из клиентов на основе модели компонентных объектов Microsoft (COM) 415
Раннее связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET 416
Динамическое связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET 419
Явное определение интерфейса 420
Службы обращения к платформе: Plnvoke (Platform Invocation Services). Резюме. 422
Приложение. Visual Studio .NET. 424
Обзор Visual Studio .NET 425
Панели инструментов 428
Создание консольного приложения. Создание проекта C++. Добавление файла на C++. 429
Использование текстового редактора Visual Studio 430
Компиляция проекта. Запуск программы. Запуск программы в отладчике. 431
Конфигурирование проектов 432
Создание новой конфигурации. Установка параметров компоновки приложения в конфигурации. 433
Отладка. Оперативная отладка. 434
Обычная отладка, точки останова. Резюме. 435