Джеффри Рихтер CLR via C#

Купить бумажную книгу и читать

Купить бумажную книгу

По кнопке выше можно купить бумажные варианты этой книги и похожих книг на сайте интернет-магазина "Лабиринт".

Using the button above you can buy paper versions of this book and similar books on the website of the "Labyrinth" online store.

Реклама. ООО "ЛАБИРИНТ.РУ", ИНН: 7728644571, erid: LatgCADz8.

Эта книга - подробное описание внутреннего устройства и функционирования общеязыковой исполняющей среды (CLR)

Microsoft .NET Framework версии 2.0. В ней раскрыта система типов .NET Framework и разъяснены способы управления ими.

Представлены концепции программирования с широким использованием библиотеки FCL, относящиеся ко всем языкам,

ориентированным на работу с .NET Framework. Особое внимание уделено обобщениям, управлению асинхронными операциями

и синхронизации потоков. Книга ориентирована на разработчиков любых видов приложений на платформе с .NET Framework:

Windows Forms, Web Forms, Web-сервисов, консольных приложений и пр.

Книга состоит из 24 глав.

Содержание

Введение

Платформа разработки: .NET Framework

Среда разработки: Microsoft Visual Studio

Цель этой книги

Примеры кода и системные требования

В этой книге нет ошибок

Благодарности

Поддержка

Предисловие

Часть I Основы CLR

Глава 1 Модель выполнения кода в среде CLR

Компиляция исходного кода в управляемые модули

Объединение управляемых модулей в сборку

Загрузка CLR

Исполнение кода сборки

IL и верификация

Небезопасный код

IL и защита интеллектуальной собственности

NGen.exe - генератор объектного кода

Библиотека классов .NET Framework

Общая система типов

Общеязыковая спецификация

Взаимодействие с неуправляемым кодом

Глава 2 Компоновка, упаковка, развертывание и администрирование приложений и типов

Задачи развертывания в .NET Framework

Компоновка типов в модуль

Файл параметров

Несколько слов о метаданных

Объединение модулей для создания сборки

Добавление сборок в проект в среде Visual Studio

Использование утилиты Assembly Linker

Включение в сборку файлов ресурсов

Ресурсы со сведениями о версии сборки

Номера версии

Региональные стандарты

Развертывание простых приложений (закрытое развертывание сборок)

Простое средство администрирования (конфигурационный файл)

Глава 3 Совместно используемые сборки и сборки со строгим именем

Два вида сборок - два вида развертывания

Назначение сборке строгого имени

Глобальный кеш сборок

Внутренняя структура GAC

Компоновка сборки, ссылающейся на сборку со строгим именем

Устойчивость сборок со строгими именами к несанкционированной модификации

Отложенное подписание

Закрытое развертывание сборок со строгими именами

Как исполняющая среда разрешает ссылки на типы

Дополнительные административные средства (конфигурационные файлы)

Управление версиями при помощи политики издателя

Часть II Работаем с типами

Глава 4 Основы типов

Все типы - производные от System.Object

Приведение типов

Приведение типов в C# с помощью операторов is и as

Пространства имен и сборки

Как разные компоненты взаимодействуют во время выполнения

Глава 5 Элементарные, ссылочные и значимые типы

Элементарные типы в языках программирования

Проверяемые и непроверяемые операции для элементарных типов

Ссылочные и значимые типы

Упаковка и распаковка значимых типов

Изменение полей в упакованных размерных типах посредством интерфейсов

Равенство и тождество объектов

Хеш-коды объектов

Часть III Проектирование типов

Глава 6 Основные сведения о членах и типах

Члены типа

Видимость типа

Дружественные сборки

Доступ к членам

Статические классы

Частичные классы, структуры и интерфейсы

Компоненты, полиморфизм и версии

Вызов виртуальных методов, свойств и событий в CLR

Разумное использование видимости типов и модификаторов доступа к членам

Работа с виртуальными методами при управлении версиями типов

Глава 7 Константы и поля

Константы

Поля

Глава 8 Методы: конструкторы, операторы, преобразования и параметры

Конструкторы экземпляров и классы (ссылочные типы)

Конструкторы экземпляров и структуры (значимые типы)

Конструкторы типов

Производительность конструкторов типа

Методы перегруженных операторов

Операторы и взаимодействие языков программирования

Методы операторов преобразования

Передача методу параметров по ссылке

Передача методу переменного числа параметров

Объявление типов параметров метода

Методы-константы и параметры-константы

Глава 9 Свойства

Свойства без параметров

Осторожный подход к определению свойств

Свойства с параметрами

Производительность при вызове аксессоров свойств

Доступность аксессоров свойств

Обобщенные методы-аксессоры свойств

Глава 10 События

Проектирование типа, поддерживающего событие

Этап 1: определение типа, который будет хранить всю дополнительную информацию, передаваемую получателям уведомления о событии

Этап 2: определение члена-события

Этап 3: определение метода, ответственного за уведомление зарегистрированных объектов о событии

Этап 4: определение метода, транслирующего входную информацию в желаемое событие

Как реализуются события

Создание типа, отслеживающего событие

События и безопасность потоков

Явное управление регистрацией событий

Конструирование типа с множеством событий

Часть IV Важнейшие типы

Глава 11 Символы, строки и обработка текста

Символы

Тип System.String

Создание строк

Строки не изменяются

Сравнение строк

Интернирование строк

Создание пулов строк

Работа с символами и текстовыми элементами в строке

Прочие операции со строками

Эффективное создание строки динамически

Создание объекта StringBuilder

Члены StringBuilder

Получение строкового представления объекта

Форматы и региональные стандарты

Форматирование нескольких объектов в одну строку

Создание собственного средства форматирования

Получение объекта посредством разбора строки

Кодировки: преобразования между символами и байтами

Кодирование и декодирование потоков символов и байт

Кодирование и декодирование строк в кодировке Base-64

Защищенные строки

Глава 12 Перечислимые типы и битовые флаги

Перечислимые типы

Битовые флаги

Глава 13 Массивы

Приведение типов в массивах

Все массивы неявно наследуют классу System.Array

Все массивы неявно реализуют IEnumerable, ICollection и IList

Передача и возврат массивов

Создание массивов с ненулевой нижней границей

Производительность доступа к массиву

Небезопасный доступ к массивам и массивы фиксированного размера

Глава 14 Интерфейсы

Наследование в классах и интерфейсах

Определение интерфейсов

Наследование интерфейсов

Подробнее о вызовах интерфейсных методов

Явные и неявные реализации методов интерфейса (что происходит за кулисами)

Обобщенные интерфейсы

Обобщения и ограничение интерфейса

Реализация нескольких интерфейсов с одинаковыми сигнатурами и именами методов

Улучшение контроля типов при помощи явной реализации методов интерфейса

Осторожно с явной реализацией методов интерфейсов!

Дилемма проектировщика: базовый класс или интерфейс?

Глава 15 Делегаты

Знакомство с делегатами

Использование делегатов для обратного вызова статических методов

Использование делегатов для обратного вызова экземплярных методов

Правда о делегатах

Использование делегатов для обратного вызова множественных методов (цепочки делегатов)

Поддержка цепочек делегатов в C#

Расширенное управление цепочкой делегатов

Упрощение синтаксиса работы с делегатами в C#

Упрощенный синтаксис № 1: не нужно создавать объект-делегат

Упрощенный синтаксис № 2: не нужно определять метод обратного вызова

Упрощенный синтаксис № 3: не нужно определять параметры метода обратного вызова

Упрощенный синтаксис № 4: не нужно вручную создавать обертку локальных переменных класса для передачи их в метод обратного вызова

Делегаты и отражение

Глава 16 Обобщения

Обобщения в библиотеке FCL

Библиотека Power Collections от Wintellect

Инфраструктура обобщений

Открытые и закрытые типы

Обобщенные типы и наследование

Проблемы с идентификацией и тождеством обобщенных типов

"Распухание" кода

Обобщенные интерфейсы

Обобщенные делегаты

Обобщенные методы

Логический вывод обобщенных методов и типов

Обобщения и другие члены

Верификация и ограничения

Основные ограничения

Дополнительные ограничения

Ограничения конструктора

Другие вопросы верификации

Глава 17 Нестандартные атрибуты

Применение нестандартных атрибутов

Определение собственного класса атрибутов

Конструктор атрибута и типы данных полей/свойств

Обнаружение использования нестандартных атрибутов

Сравнение двух экземпляров атрибута

Обнаружение использования нестандартных атрибутов без создания объектов, производных от Attribute

Условные атрибутные классы

Глава 18 Значимые типы, допускающие присвоение null

Поддержка значимых типов, допускающих присвоение null, в C#

Оператор интеграции null в языке C#

CLR обеспечивает специальную поддержку значимых типов, допускающих присвоение null

Упаковка значимых типов, допускающих присвоение null

Распаковка значимых типов, допускающих присвоение null

Вызов GetType через значимый тип, допускающий присвоение null

Вызов интерфейсных методов через значимый тип, допускающий присвоение null

Часть V Средства CLR

Глава 19 Исключения

Эволюция обработки исключений

Механика обработки исключений

Блок try

Блок catch

Блок finally

Общеязыковая спецификация (CLS) и исключения, отличные от CLS-совместимых

Что же это такое - исключение?

Класс System.Exception

Классы исключений, определенные в FCL

Генерация исключений

Определение собственных классов исключений

Как правильно использовать исключения

Проверяйте аргументы своих методов

Блоков finally не должно быть слишком много

Не всякое исключение следует перехватывать

Корректное восстановление после исключения

Отмена незавершенных операций при невосстановимых исключениях

Сокрытие деталей реализации для сохранения контракта

Вопросы быстродействия

Необработанные исключения

Трассировка стека при исключениях

Отладка исключений

Глава 20 Автоматическое управление памятью (сбор мусора)

Основы работы платформы, поддерживающей сбор мусора

Выделение ресурсов из управляемой кучи

Алгоритм сбора мусора

Сбор мусора и отладка

Использование завершения для освобождения машинных ресурсов

Гарантированное завершение с использованием типов CriticalFinalizerObject

Тип SafeHandle и его производные

Взаимодействие с неуправляемым кодом с помощью типов SafeHandle

Применение завершения к управляемым ресурсам

Когда вызываются методы Finalize

Внутренний механизм завершения

Модель освобождения ресурсов: принудительная очистка объекта

Использование типов, поддерживающих модель освобождения ресурсов

Оператор using языка C#

Интересная проблема с зависимостью

Ручной мониторинг и управление временем жизни объектов

Воскрешение

Поколения

Другие возможности сборщика мусора по работе с машинными ресурсами

Прогнозирование успеха операции, требующей много памяти

Управление сборщиком мусора из программ

Другие вопросы производительности сборщика мусора

Выделение памяти без синхронизации

Масштабируемый параллельный сбор мусора

Параллельный сбор мусора

Большие объекты

Мониторинг сбора мусора

Глава 21 Хостинг CLR и домены приложения (AppDomains)

Хостинг CLR

Домены приложения

Доступ к объектам из другого AppDomain

Выгрузка доменов AppDomain

Как хосты используют домены AppDomain

Консольные приложения и приложения Windows Forms

Microsoft Internet Explorer

Web-формы ASP.NET и Web-сервисы XML

Microsoft SQL Server 2005

Будущее и мечты

Другие методы управления хостом

Управление CLR с помощью управляемого кода

Создание надежного приложения-хоста

Как поток возвращается в хост

Глава 22 Загрузка сборок и отражение

Загрузка сборок

Использование отражения для создания динамически расширяемых приложений

Производительность отражения

Обнаружение типов, определенных в сборке

Что же из себя представляет объект-тип

Создание иерархии типов, производных от Exception

Создание экземпляра типа

Создание приложений с поддержкой подключаемых компонентов

Использование отражения для обнаружения членов типа

Обнаружение членов типа

BindingFlags: фильтрация типов возвращаемых членов

Обнаружение интерфейсов типа

Вызов членов типа

Один раз привяжись, семь раз вызови

Использование описателей привязки для уменьшения рабочего набора

Глава 23 Асинхронные операции

Потоки Windows в CLR

К вопросу об эффективном использовании потоков

Пул потоков в CLR

Ограничение числа потоков в пуле

Использование пула потоков для выполнения асинхронных вычислительных операций

Использование выделенного потока для выполнения асинхронной операции

Периодическое выполнение асинхронной операции

История трех таймеров

Модель асинхронного программирования

Использование модели APM для выполнения асинхронного ввода-вывода

Три метода стыковки в модели APM

Стыковка с использованием ожидания завершения

Стыковка с использованием регулярного опроса

Стыковка путем обратного вызова метода

Использование модели APM для выполнения асинхронных вычислительных операций

Модель APM и исключения

Важные замечания о модели APM

Контексты выполнения

Глава 24 Синхронизация потоков

Целостность памяти, временный доступ к памяти и volatile-поля

Временная запись и чтение

Поддержка volatile-полей в C#

Семейство Interlocked-методов

Класс Monitor и блоки синхронизации

"Отличная" идея

Реализация "отличной" идеи

Использование класса Monitor для управления блоком синхронизации

Способ синхронизации, предлагаемый Microsoft

Упрощение кода C# при помощи оператора lock

Способ синхронизации статических членов, предлагаемый Microsoft

Почему же "отличная" идея оказалась такой неудачной

Знаменитый способ блокировки с двойной проверкой

Класс ReaderWriterLock

Использование объектов ядра Windows в управляемом коде

Вызов метода при освобождении одного объекта ядра

Издательство: Питер

Серия или Выпуск: Мастер-класс

ISBN: 978-5-91180-303-2

Год: 2007

Формат: DJVU

Размер: 8 Mb

Скачать:

Дата создания страницы: