Введение | 13 |
Для кого написана эта книга | 14 |
О Microsoft | 14 |
О бета-версиях | 15 |
Примеры | 16 |
Desaware | 16 |
От издательства | 17 |
Важное замечание о примерах программ | 18 |
Другое важное замечание о примерах программ | 18 |
Благодарности | 19 |
|
Часть 1. Стратегии |
|
Глава 1. С чего начать? | 22 |
О важности контекста | 23 |
.NET — реальность или маркетинг? | 25 |
|
Глава 2. VB .NET: взгляд без страха и паники | 28 |
Господи, они сломали VB! | 28 |
Всё, что вы знали, устарело | 30 |
Программирование как бизнес | 32 |
|
Глава 3. Стратегии перехода | 33 |
Сроки | 33 |
Адаптация кода | 34 |
Аргументы «за» и «против» | 35 |
Новые серверные приложения | 36 |
Старые серверные приложения | 36 |
Клиентские приложения | 37 |
А как же С#? | 38 |
Альтернативы .NET | 39 |
Следующий шаг | 40 |
|
Часть 2. Концепции |
|
Глава 4. .NET в практическом контексте | 42 |
Виртуальная машина | 43 |
СОМ умер. Да здравствует СОМ? | 45 |
СОМ — идеи и реализация | 45 |
Common Language Runtime | 50 |
Манифест | 52 |
Промежуточный язык (IL) | 54 |
Прощание с циклическими ссылками | 55 |
Первая программа | 58 |
Новый подход | 63 |
Итоги | 64 |
|
Глава 5. Наследование | 66 |
«Повторное использование кода» — мантра программиста | 67 |
Связанный список в VB6 | 67 |
Связанные списки с применением включения в VB .NET | 73 |
Связанные списки с применением наследования в VB .NET | 81 |
Двойной связанный список | 83 |
Конфликты имён | 89 |
Наследование в .NET | 91 |
Объекты, сплошные объекты | 91 |
Формы | 93 |
Наследование в VB .NET | 95 |
Решение проблемы неустойчивости базового класса | 99 |
Видимость методов | 101 |
Итоги | 102 |
|
Глава 6. Управление памятью в VB .NET | 104 |
Ссылочные и структурные объекты | 104 |
Структурные объекты | 105 |
Ссылочные объекты | 108 |
Снова о сборке мусора | 109 |
Завершители | 110 |
Недетерминированное завершение: трудный выбор | 112 |
Воскрешение объектов | 115 |
Итоги | 117 |
|
Глава 7. Многопоточность в VB .NET | 119 |
Первое знакомство с многопоточносгью | 120 |
Фиаско в магазине | 121 |
Подробнее о многопоточности | 122 |
Первый уровень защиты: проектирование | 136 |
Второй уровень защиты: синхронизация | 139 |
Преимущества многопоточности | 154 |
Эффективное ожидание | 155 |
Фоновые операции | 155 |
Эффективный доступ со стороны клиента | 156 |
Оценка быстродействия в многопоточных приложениях | 157 |
Итоги | 164 |
|
Часть 3. Программы |
|
Глава 8. Типы данных и операторы | 166 |
Числовые типы | 166 |
String*1 и Char | 167 |
Логические величины | 167 |
Currency и Decimal | 169 |
Integer, Long и Short | 169 |
Беззнаковые типы | 170 |
Другие типы данных | 171 |
Прощай, Variant (наконец-то!) | 171 |
Строки | 173 |
Массивы | 174 |
Дата | 176 |
Перечисляемые типы | 176 |
Объявления | 178 |
Преобразования и проверка типа | 178 |
Преобразования и классы | 180 |
Преобразования и структуры | 182 |
Операторы | 182 |
Операторы AndAlso и OrElse | 182 |
Строковые операторы | 183 |
Комбинированные операторы | 184 |
Eqv и Imp | 185 |
Итоги | 185 |
|
Глава 9. Синтаксис | 186 |
Вызовы функций и параметры | 186 |
Рациональный механизм вызова | 186 |
Возвращение значений | 187 |
По умолчанию параметры передаются по значению | 187 |
Новый механизм передачи по значению | 188 |
Правила видимости. | 198 |
Статические переменные | 201 |
Обработка ошибок | 203 |
История | 203 |
Структурная обработка ошибок | 205 |
Другие изменения в языке | 213 |
Передача управления | 213 |
Объединение строковых функций | 214 |
Другие второстепенные изменения | 214 |
Исчезнувшие команды. | 215 |
Графические команды | 215 |
Команды, связанные с типом Variant | 216 |
Математические функции | 216 |
Другие команды | 217 |
Пространства имён Microsoft.VisualBasic и Compatibility | 217 |
Дело мастера боится | 219 |
Компромиссы совместимости | 220 |
Строки и совместимость | 222 |
Файловый ввод-вывод и совместимость | 222 |
Итоги | 223 |
|
Глава 10. Объекты | 225 |
Структура приложения .NET | 225 |
Приложение | 225 |
Сборки | 228 |
Область видимости в .NET | 229 |
Пространства имён | 230 |
Область видимости 1: уровень пространства имён | 235 |
Область видимости 1: уровень класса | 237 |
Дополнительно о классах | 238 |
Общие переменные | 238 |
MyBase и MyClass | 240 |
Вложенные классы | 242 |
Методы и свойства | 242 |
Перегрузка функций | 242 |
Конструкторы | 245 |
Методы и свойства | 248 |
Процедуры свойств | 250 |
События и делегаты | 255 |
Делегаты | 258 |
Делегаты без объектов | 259 |
События | 264 |
Итоги | 270 |
|
Глава 11. Рефлексия и атрибуты | 271 |
Компиляторы и интерпретаторы | 271 |
Раз компилятор, два компилятор | 273 |
Стадия компиляции и стадия выполнения | 274 |
Атрибуты | 275 |
Рефлексия | 275 |
Исследуем манифест | 275 |
Пользовательские атрибуты | 278 |
Связывание | 283 |
Раннее связывание и «кошмар DLL» | 283 |
Позднее связывание | 284 |
Позднее связывание: правильный подход | 286 |
Динамическая загрузка | 288 |
Итоги | 289 |
|
Лирическое отступление | 291 |
|
Часть 4. Удивительный мир .NET |
|
Глава 12. Пространства имен .NET: общие сведения | 294 |
Главное, что нужно знать о пространствах имён .NET | 294 |
.NET Framework | 294 |
.NET учитывает интересы программистов VB .NET | 295 |
Начинаем экскурсию | 297 |
Карта | 297 |
Системные классы | 302 |
Базовые классы | 302 |
Вспомогательные языковые классы | 303 |
Дата и время | 304 |
Системные классы общего назначения | 305 |
Исключения | 307 |
Атрибуты | 308 |
Интерфейсы | 309 |
Другие интересные системные классы | 311 |
Коллекции. . | 311 |
System.CollectionBase и пользовательские коллекции | 312 |
Подробнее о коллекциях | 314 |
Другие коллекции | 315 |
Вывод | 317 |
Если вы привыкли использовать графические методы VB6 | 317 |
Если вы привыкли выполнять графические операции |
средствами Win32 API | 318 |
GDI умер, да здравствует GDI+ | 318 |
Растровые изображения | 321 |
Стратегии изучения GDI+ | 322 |
Печать | 323 |
Ввод-вывод | 327 |
Другие классы System.IO | 329 |
Сериализация и управление данными | 330 |
Сериализация | 330 |
ADO.NET и XML | 333 |
Итоги | 336 |
|
Глава 13. Приложения Windows | 338 |
Новый пакет форм | 339 |
Повторное создание окон | 339 |
Графические элементы | 340 |
Согласованное поведение контейнеров | 340 |
Архитектурные шаблоны и System.Windows.Forms | 341 |
System.ComponentModel.Component | 341 |
System.Windows.Forms.Control | 342 |
System.Windows.Forms.ScrollableControl | 345 |
Контейнеры, формы и класс UserControl | 346 |
Ориентация в пространстве имён System.Windows.Forms | 346 |
Дальнейшие исследования | 349 |
AutoRedraw, события и переопределения | 349 |
Формы MDI и принадлежность окон | 352 |
Субклассирование и объект Application | 353 |
Формы и потоки | 355 |
Итоги | 357 |
|
Глава 14. Интернет-приложения и службы | 358 |
Что такое Microsoft .NET? | 358 |
Программирование для Интернета | 359 |
XML | 360 |
Распределённые приложения | 362 |
Подход к проектированию приложений в .NET | 363 |
Уровень базы данных | 363 |
Традиционное клиентское приложение Windows | 366 |
Web-приложение | 368 |
Решение с использованием web-службы | 374 |
Проектирование распределённых приложений | 376 |
Поддержка Winsock | 378 |
Взгляд со стороны | 381 |
Итоги | 383 |
|
Глава 15. COM Interop и использование функций Win32 API | 384 |
COM Interop | 385 |
Использование объектов СОМ в .NET | 386 |
Обработка ошибок | 388 |
Освобождение объектов | 388 |
Контроль версии | 389 |
Позднее связывание | 389 |
Передача структур и других типов параметров | 389 |
Дополнительные замечания | 390 |
Использование объектов .NET в СОМ | 390 |
Создание компонента CalledViaCOM (первая попытка) | 392 |
Создание компонента CalledViaCOM (вторая попытка) | 398 |
Дополнительные обстоятельства | 399 |
Использование функций Win32 API | 400 |
Эволюция команды Declare | 401 |
Три главных правила, о которых необходимо помнить при вызове |
функций API из VB .NET | 404 |
Подсистема P-Invoke | 404 |
Секреты передачи параметров | 406 |
Структуры | 413 |
Нетривиальные вызовы функций Win32 API | 416 |
Итоги | 423 |
|
Глава 16. Дальнейшие перспективы | 424 |
Контроль версии в .NET | 424 |
Кошмарные сценарии | 425 |
Параноидальные сценарии | 426 |
Контроль версии в .NET | 427 |
Сильные имена | 428 |
Контроль версии исполнительной среды .NET | 433 |
Сильные имена и фальсификация | 433 |
Конфликты в пространствах имён | 434 |
.NET и параллельное выполнение | 435 |
Безопасность | 435 |
Прощайте, сбои, прощайте, вирусы? | 435 |
Сборки и политики безопасности | 438 |
Безопасность в примерах | 441 |
Дополнительные средства безопасности | 448 |
Разное | 449 |
Дизассемблирование | 449 |
Установка | 451 |
Итоги | 452 |
|
Заключение | 453 |
Алфавитный указатель | 454 |