CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание
Джеффри Рихтер
Эта книга, выходящая в четвертом издании и уже ставшая классическим учебником по программированию, подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (CLR) Microsoft .NET Framework версии 4.5. Написанная признанным экспертом в области программирования Джеффри Рихтером, много лет являющимся консультантом команды разработчиков .NET Framework компании Microsoft, книга научит вас создавать по-настоящему надежные приложения любого вида, в том числе с использованием Microsoft Silverlight, ASP.NET, Windows Presentation Foundation и т.д.
Четвертое издание полностью обновлено в соответствии со спецификацией платформы .NET Framework 4.5, а также среды Visual Studio 2012 и C# 5.0.
Издательство: Питер, Серия: Мастер-класс, 2016 г.
ISBN 978-5-496-00433-6, 978-5-459-00297-3, 978-0735627048
Количество страниц: 896.
Содержание книги «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание»:
- 22 Предисловие
- 24 Введение
- 26 От издателя перевода
- 28 Часть I. Основы CLR
- 28 Глава 1. Модель выполнения кода в среде CLR
- 28 Компиляция исходного кода в управляемые модули
- 32 Объединение управляемых модулей в сборку
- 34 Загрузка CLR
- 37 Исполнение кода сборки
- 44 IL-код и верификация
- 45 Небезопасный код
- 46 IL и защита интеллектуальной собственности
- 47 NGen.exe
- 47 Библиотека FCL
- 49 CTS
- 52 CLS
- 57 Взаимодействие с неуправляемым кодом
- 58 Глава 2. Компоновка, упаковка, развертывание и администрирование приложений и типов
- 58 Задачи развертывания в .NET Framework
- 60 Компоновка типов в модуль
- 61 Файл параметров
- 64 Несколько слов о метаданных
- 71 Объединение модулей для создания сборки
- 78 Добавление сборок в проект в среде Visual Studio
- 79 Использование утилиты Assembly Linker
- 81 Включение в сборку файлов ресурсов
- 82 Ресурсы со сведениями о версии сборки
- 86 Номера версии
- 87 Региональные стандарты
- 88 Развертывание простых приложений (закрытое развертывание сборок)
- 90 Простое средство администрирования (конфигурационный файл)
- 92 Алгоритм поиска файлов сборки
- 94 Глава 3. Совместно используемые сборки и сборки со строгим именем
- 95 Два вида сборок — два вида развертывания
- 96 Назначение сборке строгого имени
- 102 Глобальный кэш сборок
- 104 Построение сборки, ссылающейся на сборку со строгим именем
- 106 Устойчивость сборок со строгими именами к несанкционированной модификации
- 107 Отложенное подписание
- 110 Закрытое развертывание сборок со строгими именами
- 111 Как исполняющая среда разрешает ссылки на типы
- 115 Дополнительные административные средства (конфигурационные файлы)
- 117 Управление версиями при помощи политики издателя
- 122 Часть II. Проектирование типов
- 122 Глава 4. Основы типов
- 122 Все типы — производные от System.Object
- 124 Приведение типов
- 126 Приведение типов в C# с помощью операторов is и as
- 128 Пространства имен и сборки
- 132 Связь между сборками и пространством имен
- 133 Как разные компоненты взаимодействуют во время выполнения
- 142 Глава 5. Примитивные, ссылочные и значимые типы
- 142 Примитивные типы в языках программирования
- 146 Проверяемые и непроверяемые операции для примитивных типов
- 150 Ссылочные и значимые типы
- 155 Как CLR управляет размещением полей для типа
- 156 Упаковка и распаковка значимых типов
- 169 Изменение полей в упакованных значимых типах посредством интерфейсов (и почему этого лучше не делать)
- 172 Равенство и тождество объектов
- 175 Хеш-коды объектов
- 177 Примитивный тип данных dynamic
- 142 Примитивные типы в языках программирования
- 186 Глава 6. Основные сведения о членах и типах
- 186 Члены типа
- 189 Видимость типа
- 189 Дружественные сборки
- 191 Доступ к членам типов
- 193 Статические классы
- 194 Частичные классы, структуры и интерфейсы
- 196 Компоненты, полиморфизм и версии
- 198 Вызов виртуальных методов, свойств и событий в CLR
- 202 Разумное использование видимости типов и модификаторов доступа к членам
- 205 Работа с виртуальными методами при управлении версиями типов
- 210 Глава 7. Константы и поля
- 210 Константы
- 212 Поля
- 215 Глава 8. Методы
- 215 Конструкторы экземпляров и классы (ссылочные типы)
- 219 Конструкторы экземпляров и структуры (значимые типы)
- 222 Конструкторы типов
- 226 Методы перегруженных операторов
- 229 Операторы и взаимодействие языков программирования
- 229 Особое мнение автора о правилах Microsoft, связанных с именами методов операторов
- 230 Методы операторов преобразования
- 234 Методы расширения
- 237 Правила и рекомендации
- 238 Расширение разных типов методами расширения
- 240 Атрибут расширения
- 241 Частичные методы
- 244 Правила и рекомендации
- 245 Глава 9. Параметры
- 245 Необязательные и именованные параметры
- 246 Правила использования параметров
- 248 Атрибут DefaultParameterValue и необязательные атрибуты
- 248 Неявно типизированные локальные переменные
- 251 Передача параметров в метод по ссылке
- 257 Передача переменного количества аргументов
- 259 Типы параметров и возвращаемых значений
- 261 Константность
- 245 Необязательные и именованные параметры
- 263 Глава 10. Свойства
- 263 Свойства без параметров
- 267 Автоматически реализуемые свойства
- 268 Осторожный подход к определению свойств
- 270 Свойства и отладчик Visual Studio
- 271 Инициализаторы объектов и коллекций
- 273 Анонимные типы
- 276 Тип System.Tuple
- 279 Свойства с параметрами
- 283 Выбор главного свойства с параметрами
- 284 Производительность при вызове методов доступа
- 285 Доступность методов доступа свойств
- 285 Обобщенные методы доступа свойств
- 263 Свойства без параметров
- 286 Глава 11. События
- 287 Разработка типа, поддерживающего событие
- 288 Этап 1. Определение типа для хранения всей дополнительной информации, передаваемой получателям уведомления о событии
- 289 Этап 2. Определение члена-события
- 290 Этап 3. Определение метода, ответственного за уведомление зарегистрированных объектов о событии
- 292 Этап 4. Определение метода, преобразующего входную информацию в желаемое событие
- 293 Реализация событий компилятором
- 295 Создание типа, отслеживающего событие
- 298 Явное управление регистрацией событий
- 302 Глава 12. Обобщения
- 307 Обобщения в библиотеке FCL
- 308 Инфраструктура обобщений
- 309 Открытые и закрытые типы
- 311 Обобщенные типы и наследование
- 313 Идентификация обобщенных типов
- 314 Разрастание кода
- 315 Обобщенные интерфейсы
- 316 Обобщенные делегаты
- 317 Контравариантные и ковариантные аргументы-типы в делегатах и интерфейсах
- 319 Обобщенные методы
- 320 Обобщенные методы и выведение типов
- 322 Обобщения и другие члены
- 322 Верификация и ограничения
- 325 Основные ограничения
- 327 Дополнительные ограничения
- 328 Ограничения конструктора
- 329 Другие проблемы верификации
- 333 Глава 13. Интерфейсы
- 333 Наследование в классах и интерфейсах
- 334 Определение интерфейсов
- 335 Наследование интерфейсов
- 338 Подробнее о вызовах интерфейсных методов
- 339 Явные и неявные реализации интерфейсных методов (что происходит за кулисами)
- 341 Обобщенные интерфейсы
- 344 Обобщения и ограничения интерфейса
- 345 Реализация нескольких интерфейсов с одинаковыми сигнатурами и именами методов
- 346 Совершенствование безопасности типов за счет явной реализации интерфейсных методов
- 348 Опасности явной реализации интерфейсных методов
- 351 Дилемма разработчика: базовый класс или интерфейс?
- 356 Часть III. Основные типы данных
- 356 Глава 14. Символы, строки и обработка текста
- 356 Символы
- 359 Тип System.String
- 359 Создание строк
- 362 Неизменяемые строки
- 362 Сравнение строк
- 369 Интернирование строк
- 372 Создание пулов строк
- 372 Работа с символами и текстовыми элементами в строке
- 375 Прочие операции со строками
- 375 Эффективное создание строк
- 376 Создание объекта StringBuilder
- 377 Члены типа StringBuilder
- 379 Получение строкового представления объекта
- 380 Форматы и региональные стандарты
- 384 Форматирование нескольких объектов в одну строку
- 386 Создание собственного средства форматирования
- 389 Получение объекта посредством разбора строки
- 391 Кодировки: преобразования между символами и байтами
- 397 Кодирование и декодирование потоков символов и байтов
- 398 Кодирование и декодирование строк в кодировке Base-64
- 399 Защищенные строки
- 403 Глава 15. Перечислимые типы и битовые флаги
- 403 Перечислимые типы
- 409 Битовые флаги
- 413 Добавление методов к перечислимым типам
- 416 Глава 16. Массивы
- 418 Инициализация элементов массива
- 421 Приведение типов в массивах
- 423 Базовый класс System.Array
- 424 Реализация интерфейсов IEnumerable, ICollection и IList
- 425 Передача и возврат массивов
- 426 Массивы с ненулевой нижней границей
- 427 Внутренняя реализация массивов
- 432 Небезопасный доступ к массивам и массивы фиксированного размера
- 434 Глава 17. Делегаты
- 434 Знакомство с делегатами
- 437 Обратный вызов статических методов
- 438 Обратный вызов экземплярных методов
- 439 Тонкости использования делегатов
- 443 Обратный вызов нескольких методов (цепочки делегатов)
- 448 Поддержка цепочек делегатов в C#
- 448 Дополнительные средства управления цепочками делегатов
- 451 Обобщенные делегаты
- 452 Упрощенный синтаксис работы с делегатами
- 452 Упрощение 1: не создаем объект делегата
- 453 Упрощение 2: не определяем метод обратного вызова
- 457 Упрощение 3: не создаем обертку для локальных переменных для передачи их методу обратного вызова
- 460 Делегаты и отражение
- 464 Глава 18. Настраиваемые атрибуты
- 464 Сфера применения настраиваемых атрибутов
- 468 Определение класса атрибутов
- 471 Конструктор атрибута и типы данных полей и свойств
- 473 Выявление настраиваемых атрибутов
- 477 Сравнение экземпляров атрибута
- 480 Выявление настраиваемых атрибутов без создания объектов, производных от Attribute
- 484 Условные атрибуты
- 485 Глава 19. Null-совместимые значимые типы
- 487 Поддержка в C# null-совместимых значимых типов
- 490 Оператор объединения null-совместимых значений
- 491 Поддержка в CLR null-совместимых значимых типов
- 491 Упаковка null-совместимых значимых типов
- 492 Распаковка null-совместимых значимых типов
- 492 Вызов метода GetType через null-совместимый значимый тип
- 493 Вызов интерфейсных методов через null-совместимый значимый тип
- 496 Часть IV. Ключевые механизмы
- 496 Глава 20. Исключения и управление состоянием
- 496 Определение «исключения»
- 498 Механика обработки исключений
- 499 Блок try
- 499 Блок catch
- 501 Блок finally
- 503 CLS-совместимые и CLS-несовместимые исключения
- 505 Класс System.Exception
- 509 Классы исключений, определенные в FCL
- 511 Генерирование исключений
- 513 Создание классов исключений
- 515 Продуктивность вместо надежности
- 524 Приемы работы с исключениями
- 525 Активно используйте блоки finally
- 526 Не надо перехватывать все исключения
- 528 Корректное восстановление после исключения
- 529 Отмена незавершенных операций при невосстановимых исключениях
- 530 Сокрытие деталей реализации для сохранения контракта
- 533 Необработанные исключения
- 537 Отладка исключений
- 540 Скорость обработки исключений
- 543 Области ограниченного выполнения
- 546 Контракты кода
- 554 Глава 21. Автоматическое управление памятью (уборка мусора)
- 554 Управляемая куча
- 555 Выделение ресурсов из управляемой кучи
- 557 Алгоритм уборки мусора
- 560 Уборка мусора и отладка
- 562 Поколения
- 568 Запуск уборки мусора
- 569 Большие объекты
- 570 Режимы уборки мусора
- 573 Программное управление уборщиком мусора
- 574 Мониторинг использования памяти приложением
- 576 Освобождение ресурсов при помощи механизма финализации
- 583 Типы, использующие системные ресурсы
- 588 Интересные аспекты зависимостей
- 590 Другие возможности уборщика мусора для работы с системными ресурсами
- 594 Внутренняя реализация финализации
- 597 Мониторинг и контроль времени жизни объектов
- 554 Управляемая куча
- 606 Глава 22. Хостинг CLR и домены приложений
- 606 Хостинг CLR
- 609 Домены приложений
- 612 Доступ к объектам из других доменов
- 624 Выгрузка доменов
- 626 Мониторинг доменов
- 627 Уведомление о первом управляемом исключении домена
- 628 Использование хостами доменов приложений
- 628 Исполняемые приложения
- 629 Полнофункциональные интернет-приложения Silverlight
- 629 Microsoft ASP.NET и веб-службы XML
- 630 Microsoft SQL Server
- 630 Будущее и мечты
- 631 Нетривиальное управление хостингом
- 631 Применение управляемого кода
- 631 Разработка надежных хост-приложений
- 633 Возвращение потока в хост
- 636 Глава 23. Загрузка сборок и отражение
- 637 Загрузка сборок
- 641 Использование отражения для создания динамически расширяемых приложений
- 642 Производительность отражения
- 644 Нахождение типов, определенных в сборке
- 644 Объект Type
- 646 Создание иерархии типов, производных от Exception
- 648 Создание экземпляра типа
- 650 Создание приложений с поддержкой подключаемых компонентов
- 653 Нахождение членов типа путем отражения
- 654 Нахождение членов типа
- 658 Обращение к членам типов
- 663 Использование дескрипторов привязки для снижения потребления памяти процессом
- 666 Глава 24. Сериализация
- 667 Практический пример сериализации/десериализации
- 672 Сериализуемые типы
- 673 Управление сериализацией и десериализацией
- 677 Сериализация экземпляров типа
- 679 Управление сериализованными и десериализованными данными
- 684 Определение типа, реализующего интерфейс ISerializable, не реализуемый базовым классом
- 686 Контексты потока ввода-вывода
- 688 Сериализация в другой тип и десериализация в другой объект
- 691 Суррогаты сериализации
- 694 Цепочка селекторов суррогатов
- 695 Переопределение сборки и/или типа при десериализации объекта
- 698 Глава 25. Взаимодействие с компонентами WinRT
- 700 Проекции уровня CLR и правила системы типов компонентов WinRT
- 700 Основные концепции системы типов WinRT
- 705 Проекции уровня .NET Framework
- 705 Асинхронные вызовы WinRT API из кода .NET
- 710 Взаимодействия между потоками WinRT и потоками .NET
- 712 Передача блоков данных между CLR и WinRT
- 715 Определение компонентов WinRT в коде C#
- 700 Проекции уровня CLR и правила системы типов компонентов WinRT
- 724 Часть V. Многопоточность
- 724 Глава 26. Потоки исполнения
- 724 Для чего Windows поддерживает потоки?
- 725 Ресурсоемкость потоков
- 729 Так дальше не пойдет!
- 732 Тенденции развития процессоров
- 733 CLR- и Windows-потоки
- 734 Потоки для асинхронных вычислительных операций
- 736 Причины использования потоков
- 739 Планирование и приоритеты потоков
- 744 Фоновые и активные потоки
- 746 Что дальше?
- 747 Глава 27. Асинхронные вычислительные операции
- 747 Пул потоков в CLR
- 748 Простые вычислительные операции
- 750 Контексты исполнения
- 752 Скоординированная отмена
- 757 Задания
- 758 Завершение задания и получение результата
- 760 Отмена задания
- 762 Автоматический запуск задания по завершении предыдущего
- 764 Дочерние задания
- 765 Структура задания
- 767 Фабрики заданий
- 769 Планировщики заданий
- 771 Методы For, ForEach и Invoke класса Parallel
- 775 Встроенный язык параллельных запросов
- 779 Периодические вычислительные операции
- 782 Разновидности таймеров
- 783 Как пул управляет потоками
- 783 Ограничение количества потоков в пуле
- 784 Управление рабочими потоками
- 787 Глава 28. Асинхронные операции ввода-вывода
- 787 Операции ввода-вывода в Windows
- 792 Асинхронные функции C#
- 795 Преобразование асинхронной функции в конечный автомат
- 799 Расширяемость асинхронных функций
- 803 Асинхронные функции и обработчики событий
- 804 Асинхронные функции в FCL
- 806 Асинхронные функции и исключения
- 807 Другие возможности асинхронных функций
- 810 Потоковые модели приложений
- 813 Асинхронная реализация сервера
- 814 Отмена операций ввода-вывода
- 815 Некоторые операции ввода-вывода должны выполняться синхронно
- 816 Проблемы FileStream
- 817 Приоритеты запросов ввода-вывода
- 820 Глава 29. Примитивные конструкции синхронизации потоков
- 822 Библиотеки классов и безопасность потоков
- 824 Примитивные конструкции пользовательского режима и режима ядра
- 825 Конструкции пользовательского режима
- 826 Volatile-конструкции
- 832 Interlocked-конструкции
- 837 Реализация простой циклической блокировки
- 841 Универсальный Interlocked-паттерн
- 843 Конструкции режима ядра
- 847 События
- 850 Семафоры
- 851 Мьютексы
- 854 Глава 30. Гибридные конструкции синхронизации потоков
- 854 Простая гибридная блокировка
- 857 Зацикливание, владение потоком и рекурсия
- 859 Гибридные конструкции в FCL
- 859 Классы ManualResetEventSlim и SemaphoreSlim
- 860 Класс Monitor и блоки синхронизации
- 866 Класс ReaderWriterLockSlim
- 868 Класс OneManyLock
- 871 Класс CountdownEvent
- 872 Класс Barrier
- 873 Выводы по гибридным конструкциям
- 875 Блокировка с двойной проверкой
- 880 Паттерн условной переменной
- 882 Асинхронная синхронизация
- 888 Классы коллекций для параллельного доступа
- 893 Словарь соответствия русскоязычных и англоязычных терминов
Инструкция как скачать книгу Джеффри Рихтер: CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.