Информация о книге

978-5-496-00433-6

Главная  » Тематика определяется » CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#

Джеффри Рихтер Д., CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#


серия: Мастер-класс
Питер, 2017 г., 896 стр., 978-5-496-00433-6


Описание книги

Эта книга, выходящая в четвертом издании и уже ставшая классическим учебником по программированию, подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (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. Рекомендуем!

Ключевые слова


  CLR 


Поделиться ссылкой на книгу



Содержание книги

Предисловие
Введение
От издателя перевода
ЧАСТЬ I. ОСНОВЫ CLR
Глава 1. Модель выполнения кода в среде CLR
Компиляция исходного кода в управляемые
модули
Объединение управляемых модулей в сборку
Загрузка CLR
Исполнение кода сборки
IL-код и верификация
Небезопасный код
IL и защита интеллектуальной собственности
NGen.exe
Библиотека FCL
CTS
CLS
Взаимодействие с неуправляемым кодом
Глава 2. Компоновка, упаковка, развертывание
и администрирование приложений и типов
Задачи развертывания в .NET Framework
Компоновка типов в модуль
Файл параметров
Несколько слов о метаданных
Объединение модулей для создания сборки
Добавление сборок в проект в среде Visual Studio
Использование утилиты Assembly Linker
Включение в сборку файлов ресурсов
Ресурсы со сведениями о версии сборки
Номера версии
Региональные стандарты
Развертывание простых приложений (закрытое
развертывание сборок)
Простое средство администрирования
(конфигурационный файл)
Алгоритм поиска файлов сборки
Глава 3. Совместно используемые сборки и сборки
со строгим именем
Два вида сборок - два вида развертывания
Назначение сборке строгого имени
Глобальный кэш сборок
Построение сборки, ссылающейся на сборку со
строгим именем
Устойчивость сборок со строгими именами
к несанкционированной модификации
Отложенное подписание
Закрытое развертывание сборок со строгими
именами
Как исполняющая среда разрешает ссылки на
типы
Дополнительные административные средства
(конфигурационные файлы)
Управление версиями при помощи политики
издателя
ЧАСТЬ II. ПРОЕКТИРОВАНИЕ ТИПОВ
Глава 4. Основы типов
Все типы - производные от System.Object
Приведение типов
Приведение типов в С# с помощью операторов is и
as
Пространства имен и сборки
Связь между сборками и пространством имен
Как разные компоненты взаимодействуют во
время выполнения
Глава 5. Примитивные, ссылочные и значимые
типы
Примитивные типы в языках программирования
Проверяемые и непроверяемые операции
для примитивных типов
Ссылочные и значимые типы
Как CLR управляет размещением полей для типа
Упаковка и распаковка значимых типов
Изменение полей в упакованных значимых типах
посредством
интерфейсов (и почему этого лучше не делать)
Равенство и тождество объектов
Хеш-коды объектов
Примитивный тип данных dynamic
Глава 6. Основные сведения о членах и типах
Члены типа
Видимость типа
Дружественные сборки
Доступ к членам типов
Статические классы
Частичные классы, структуры и интерфейсы
Компоненты, полиморфизм и версии
Вызов виртуальных методов, свойств и событий в
CLR
Разумное использование видимости типов
и модификаторов доступа к членам
Работа с виртуальными методами при управлении
версиями типов
Глава 7. Константы и поля
Константы
Поля
Глава 8. Методы
Конструкторы экземпляров и классы (ссылочные
типы)
Конструкторы экземпляров и структуры (значимые
типы)
Конструкторы типов
Методы перегруженных операторов
Операторы и взаимодействие языков
программирования
Особое мнение автора о правилах Microsoft,
связанных с именами методов операторов
Методы операторов преобразования
Методы расширения
Правила и рекомендации
Расширение разных типов методами расширения
Атрибут расширения
Частичные методы
Правила и рекомендации
Глава 9. Параметры
Необязательные и именованные параметры
Правила использования параметров
Атрибут DefaultParameterValue и необязательные
атрибуты
Неявно типизированные локальные переменные
Передача параметров в метод по ссылке
Передача переменного количества аргументов
Типы параметров и возвращаемых значений
Константность
Глава 10. Свойства
Свойства без параметров
Автоматически реализуемые свойства
Осторожный подход к определению свойств
Свойства и отладчик Visual Studio
Инициализаторы объектов и коллекций
Анонимные типы
Тип System.Tuple
Свойства с параметрами
Выбор главного свойства с параметрами
Производительность при вызове методов доступа
Доступность методов доступа свойств
Обобщенные методы доступа свойств
Глава 11. События
Разработка типа, поддерживающего событие
Этап 1. Определение типа для хранения всей
дополнительной
информации, передаваемой получателям
уведомления
о событии
Этап 2. Определение члена-события
Этап 3. Определение метода, ответственного за
уведомление
зарегистрированных объектов о событии
Этап 4. Определение метода, преобразующего
входную информацию в желаемое событие
Реализация событий компилятором
Создание типа, отслеживающего событие
Явное управление регистрацией событий
Глава 12. Обобщения
Обобщения в библиотеке FCL
Инфраструктура обобщений
Открытые и закрытые типы
Обобщенные типы и наследование
Идентификация обобщенных типов
Разрастание кода
Обобщенные интерфейсы
Обобщенные делегаты
Контравариантные и ковариантные
аргументы-типы
в делегатах и интерфейсах
Обобщенные методы
Обобщенные методы и выведение типов
Обобщения и другие члены
Верификация и ограничения
Основные ограничения
Дополнительные ограничения
Ограничения конструктора
Другие проблемы верификации
Глава 13. Интерфейсы
Наследование в классах и интерфейсах
Определение интерфейсов
Наследование интерфейсов
Подробнее о вызовах интерфейсных методов
Явные и неявные реализации интерфейсных
методов
(что происходит за кулисами)
Обобщенные интерфейсы
Обобщения и ограничения интерфейса
Реализация нескольких интерфейсов с
одинаковыми сигнатурами
и именами методов
Совершенствование безопасности типов за счет
явной
реализации интерфейсных методов
Опасности явной реализации интерфейсных
методов
Дилемма разработчика: базовый класс или
интерфейс?
ЧАСТЬ III. ОСНОВНЫЕ ТИПЫ ДАННЫХ
Глава 14. Символы, строки и обработка текста
Символы
Тип System. St ring
Создание строк
Неизменяемые строки
Сравнение строк
Интернирование строк
Создание пулов строк
Работа с символами и текстовыми элементами в
строке
Прочие операции со строками
Эффективное создание строк
Создание объекта StringBuilder
Члены типа StringBuilder
Получение строкового представления объекта
Форматы и региональные стандарты
Форматирование нескольких объектов в одну
строку
Создание собственного средства форматирования
Получение объекта посредством разбора строки
Кодировки: преобразования между символами и
байтами
Кодирование и декодирование потоков символов и
байтов
Кодирование и декодирование строк в кодировке
Base-64
Защищенные строки
Глава 15. Перечислимые типы и битовые флаги
Перечислимые типы
Битовые флаги
Добавление методов к перечислимым типам
Глава 16. Массивы
Инициализация элементов массива
Приведение типов в массивах
Базовый класс System.Array
Реализация интерфейсов Enumerable, ICollection и
IList
Передача и возврат массивов
Массивы с ненулевой нижней границей
Внутренняя реализация массивов
Небезопасный доступ к массивам и массивы
фиксированного размера
Глава 17. Делегаты
Знакомство с делегатами
Обратный вызов статических методов
Обратный вызов экземплярных методов
Тонкости использования делегатов
Обратный вызов нескольких методов (цепочки
делегатов)
Поддержка цепочек делегатов в С#
Дополнительные средства управления цепочками
делегатов
Обобщенные делегаты
Упрощенный синтаксис работы с делегатами
Упрощение"!: не создаем объект делегата
Упрощение 2: не определяем метод обратного
вызова
Упрощение 3: не создаем обертку для локальных
переменных
для передачи их методу обратного вызова
Делегаты и отражение
Глава 18. Настраиваемые атрибуты
Сфера применения настраиваемых атрибутов
Определение класса атрибутов
Конструктор атрибута и типы данных полей и
свойств
Выявление настраиваемых атрибутов
Сравнение экземпляров атрибута
Выявление настраиваемых атрибутов без
создания объектов,
производных от Attribute
Условные атрибуты
Глава 19. Null-совместимые значимые типы
Поддержка в С# null-совместимых значимых типов
Оператор объединения null-совместимых значений
Поддержка в CLR null-совместимых значимых типов
Упаковка null-совместимых значимых типов
Распаковка null-совместимых значимых типов
Вызов метода GetType через null-совместимый
значимый тип.
Вызов интерфейсных методов через
null-совместимый
значимый тип
ЧАСТЬ IV. КЛЮЧЕВЫЕ МЕХАНИЗМЫ
Глава 20. Исключения и управление состоянием
Определение "исключения"
Механика обработки исключений
Блок try
Блок catch
Блок finally
CLS-совместимые и CLS-несовместимые
исключения
Класс System.Exception
Классы исключений, определенные в FCL
Генерирование исключений
Создание классов исключений
Продуктивность вместо надежности
Приемы работы с исключениями
Активно используйте блоки finally
Не надо перехватывать все исключения
Корректное восстановление после исключения
Отмена незавершенных операций при
невосстановимых
исключениях
Сокрытие деталей реализации для сохранения
контракта
Необработанные исключения
Отладка исключений
Скорость обработки исключений
Области ограниченного выполнения
Контракты кода
Глава 21. Автоматическое управление памятью
(уборка мусора)
Управляемая куча
Выделение ресурсов из управляемой кучи
Алгоритм уборки мусора
Уборка мусора и отладка
Поколения
Запуск уборки мусора
Большие объекты
Режимы уборки мусора
Программное управление уборщиком мусора
Мониторинг использования памяти приложением
Освобождение ресурсов при помощи механизма
финализации
Типы, использующие системные ресурсы
Интересные аспекты зависимостей
Другие возможности уборщика мусора для работы
с системными ресурсами
Внутренняя реализация финализации
Мониторинг и контроль времени жизни объектов
Глава 22. Хостинг CLR и домены приложений
Хостинг CLR
Домены приложений
Доступ к объектам из других доменов
Выгрузка доменов
Мониторинг доменов
Уведомление о первом управляемом исключении
домена
Использование хостами доменов приложений
Исполняемые приложения
Полнофункциональные интернет-приложения
Silverlight
MicrosoftASP.NET и веб-службы ХМL
Microsoft SQL Server
Будущее и мечты
Нетривиальное управление хостингом
Применение управляемого кода
Разработка надежных хост-приложений
Возвращение потока в хост
Глава 23. Загрузка сборок и отражение
Загрузка сборок
Использование отражения для создания
динамически расширяемых приложений
Производительность отражения
Нахождение типов, определенных в сборке
Объект Туре
Создание иерархии типов, производных от
Exception
Создание экземпляра типа
Создание приложений с поддержкой
подключаемых компонентов
Нахождение членов типа путем отражения
Нахождение членов типа
Обращение к членам типов
Использование дескрипторов привязки для
снижения
потребления памяти процессом
Глава 24. Сериализация
Практический пример
сериализации/десериализации
Сериализуемыетипы
Управление сериализацией и десериализацией
Сериализацияэкземпляров типа
Управление сериализованными и
десериализованными данными
Определение типа, реализующего интерфейс
ISerializable,
не реализуемый базовым классом
Контексты потока ввода-вывода
Сериализация в другой тип и десериализация в
другой объект
Суррогаты сериализации
Цепочка селекторов суррогатов
Переопределение сборки и/или типа при
десериализации объекта
Глава 25. Взаимодействие с компонентами WinRT
Проекции уровня CLR и правила системы типов
компонентов WinRT
Основные концепции системы типов WinRT
Проекции уровня .NET Framework
Асинхронные вызовы WinRT API из кода .NET
Взаимодействия между потоками WinRT и потоками
.NET
Передача блоков данных между CLR и WinRT
Определение компонентов WinRT в коде С#
ЧАСТЬ V. многопоточность
Глава 26. Потоки исполнения
Для чего Windows поддерживает потоки?
Ресурсоемкость потоков
Так дальше не пойдет!
Тенденции развития процессоров
CLR- и Windows-потоки
Потоки для асинхронных вычислительных
операций
Причины использования потоков
Планирование и приоритеты потоков
Фоновые и активные потоки
Что дальше?
Глава 27. Асинхронные вычислительные
операции.
Пул потоков в CLR
Простые вычислительные операции
Контексты исполнения
Скоординированная отмена.
Задания
Завершение задания и получение результата
Отмена задания
Автоматический запуск задания по завершении
предыдущего
Дочерние задания
Структура задания
Фабрики заданий
Планировщики заданий
Методы For, ForEach и Invoke класса Parallel
Встроенный язык параллельных запросов
Периодические вычислительные операции
Разновидности таймеров
Как пул управляет потоками
Ограничение количества потоков в пуле
Управление рабочими потоками
Глава 28. Асинхронные операции ввода-вывода
Операции ввода-вывода в Windows
Асинхронные функции С#
Преобразование асинхронной функции в конечный
автомат
Расширяемость асинхронных функций
Асинхронные функции и обработчики событий
Асинхронные функции в FCL
Асинхронные функции и исключения
Другие возможности асинхронных функций
Потоковые модели приложений
Асинхронная реализация сервера
Отмена операций ввода-вывода
Некоторые операции ввода-вывода
должны выполняться синхронно
Проблемы FileStream
Приоритеты запросов ввода-вывода
Глава 29. Примитивные конструкции
синхронизации
потоков
Библиотеки классов и безопасность потоков
Примитивные конструкции пользовательского
режима
и режима ядра
Конструкции пользовательского режима
Volatile-конструкции
Interlocked-конструкции
Реализация простой циклической блокировки
Универсальный lnterlocked-паттерн
Конструкции режима ядра
События
Семафоры
Мьютексы
Глава 30. Гибридные конструкции синхронизации
потоков
Простая гибридная блокировка
Зацикливание, владение потоком и рекурсия
Гибридные конструкции в FCL
Классы ManualResetEventSlim и SemaphoreSlim
Класс Monitor и блоки синхронизации
Класс ReaderWriterLockSlim
Класс OneManyLock
Класс CountdownEvent
Класс Barrier
Выводы по гибридным конструкциям
Блокировка с двойной проверкой
Паттерн условной переменной
Асинхронная синхронизация
Классы коллекций для параллельного доступа
Словарь соответствия русскоязычных
и англоязычных терминов


Об авторе


Отзывы

Сахипов Руслан  [10 October 2016]
Руковожу программистами несколько лет: рекомендую всем.
Замечательная книга и ужасный перевод  [11 January 2016]
Насколько хорошая книга по содержанию, настолько плох перевод. Ладно пропущенные буквы в словах, неверные падежи и т.д., но зачем было трогать листинги с кодом?!
Классика, но перевод ужасный  [12 December 2015]
Описать приличными словами перевод этой книги - очень сложная задача. Я готов закрыть глаза на несогласующиеся падежи, неправильные окончания глаголов (здесь это далеко не редкость), но тут все совсем плохо. По крайней мере в одном месте я нашел просто выкинутый абзац (это где-то в начале, где объясняется механизм вызова виртуальных методов), а в главе про async/await в одном листинге в трех местах вместо -1 написано 1. В трех местах, Карл. В общем, если вам действительно нужны все тонкости работы CLR, которые здесь описаны, читайте оригинал.
Небрежный перевод (редакция?)  [26 September 2015]
В главе 4 пропущен целый абзац, который должен был пояснять строку year=e.GetYearsEmployed(); на рис.4.9. (в оригинале он присутствует).
Поэтому решил читать в оригинале.
Замечательная книга  [20 July 2015]
Замечательная книга. Очень часто заглядываю в нее, особенно перед собеседованиями. Была в цифровом варианте, решил купить в бумажном, так удобнее.
Издание очень приятное, хороший переплет, бумага хорошая.
Непонятно  [30 June 2015]
Все темы изложены достаточно подробно, есть очень оригинальные и полезные примеры кода. Однако, стиль изложения, как и перевод, достаточно старомоден ("делегата" вместо "делегат", "операнды" и т.д.). Нет легкости восприятия. Те вещи, которые реально можно было объяснить проще, искусственно усложнены. Иной раз, радуешься, что и так знаешь, о чем автор, потому понимаешь, что же он пытается донести. Неподготовленному читателю, или сталкивающемуся в первый раз в обсуждаемыми понятиями, будет трудновато.

Плюс большое количество опечаток, читала достаточно внимательно, и количество опечаток точно перевалило штук за 20. Бумага тонкая, но я бы не сказала, что сильно прозрачная. Книга очень тяжелая.
Рекомендую  [28 April 2015]
Полиграфия - ужас, это да.: прозрачные страницы, неудачный шрифт. НО. Содержание того стоит. Плюс, описание взаимодействия с WinRT.
Обязательно к прочтению  [19 February 2015]
Здорово что я прочел эту книгу. После прочтения этой книги, я еще больше проникся.Net и с#.
Это издание оочень средненькое  [ 3 February 2015]
Прочитал все хвалебные отзывы и купил эту книгу вместо того, чтобы читать в электронном виде оригинальное английское издание.

1. Качество бумаги ужасное. Она прозрачная, виден текст с обратной стороны. Читать не очень удобно.
2. Стилистическое оформление хуже чем в оригинале , никаких выделенных (цветом, шрифтом или иконками) блоков нет. Всё чёрно-белое, в одном стиле.
3. И сводят смысл покупки на ноль ошибки в тексте, когда пропущена частица "НЕ". Короче, написано обратное тому что писал Рихтер! За 200стр заметил 2 таких момента...

Оценил как 2 балла из 5.
Must have!  [ 8 November 2014]
Книга замечательная, не жалею о покупке ни на йоту. Проясняет очень многие моменты. Для юниоров level-0 будет во многом непонятна, стоит поискать что-то попроще для начала. После прочтения, часами делал code review уже работающих у клиентов приложений и перелопатил, скажу я Вам немало кода, который после прочтения Рихтера вдруг стал говнокодом ))). Рекомендую, не пожалеете.

P.S.
На стр. 612 строка "mbrt = (MarshalByRefType)ad2.CreateInstanceAndUnwrap(exeAssembly, "MarshalByRefType");" вызывает TypeLoadException.

Правильно так:
var mbrt = (MarshalByRefType)domain1.CreateInstanceAndUnwrap(Assembly.GetEntryAssembly().GetName().FullName, typeof(MarshalByRefType).FullName);
Отличная книга  [28 February 2014]
Отличная книга для углубления знаний и более оптимального использования C#, а так же для понимания работы CLR в целом.
Замечательная книга, он типографика подкачала  [15 January 2014]
Книга - супер. Одно из лучших описаний как работает CLR и его особенности. Однозначно: мастхэв.
Одно НО - типографика в данном 4-м издании. Примеры исходного кода очень плохо читаются, да и весь текст тоже. Предыдущее издание книги очень легко читалось, исходный код был хорошо виден на фоне остального текста. Здесь же - шрифт практически не отличается.
Отличная книга  [18 October 2013]
Перевод, материал и качество бумаги отличное, приятно держать в руках. Доходчиво написано про внутреннюю работу CLR и С#, необходимо прочитать каждому кто хочет поднять свой уровень знания языка и платформы в целом.
Пока только начал читать. Книга хорошая. Матвееву отдельное Спасибо.  [19 August 2013]
Начал читать. Поймал себя мысли, что всё-время ищу ляпы. Вывод – уже предвзято начал относиться к ЛЮБОМУ переводу. Полистав, ничего такого не нашёл. Пока что ни сколько не жалею о покупке. Покупать стоит. Денег, на удивление, просят не много (псих.барьер в 1000 руб. не преодолён).
Особо хочу отметить качество... Качество бумаги и печати за эти деньги – на 5 (белая, вывод примерно на 600 dpi на 75 lpi, поэтому на картинках отлично виден мелкий кегль даже тогда, когда буквы не черного цвета).
Вроде неплохо, но...  [16 August 2013]
Перевод на первый взгляд пристойный, переводчик Е.Матвеев (http://www.ozon.ru/person/247371/). Но... Во-первых, раздел по NGen.exe (страница 47 в переводе) неожиданно похудел в пять раз по сравнению с оригиналом (страницы 19-21). Такое впечатление, что пара страниц оригинала (20 и 21) просто потерялась. Других существенных потерь вроде нет. Во-вторых, "Питер" как обычно выкинул предметный указатель (почти сорок страниц в оригинале). Экономят на бумаге?

По содержанию книги вряд ли есть есть смысл много говорить: "продвинутое" описание CLR с использованием C# (внимание! это не учебник по C#) от гуру.

Последние поступления в рубрике "Тематика определяется"



Ритуальный оракул Магия зеркал, 53 карты + инструкция 

Представляем вам новую профессиональную колоду Любови Никифоровой (Отилы), являющуюся продолжением ранее изданной и уже популярной колоды «Ритуальный Оракул». В ней вы познакомитесь с азами работы с зеркалами, видами магических воздействий и способами их снятия....

Оракул Норн. Нити судьбы, 45 карт+инструкция 

Оракул Норн: нити судьбы - действительно уникальная колода. Предсказывать будущее или узнавать обстоятельства прошлого и настоящего помогают Боги, Богини и герои Древней Скандинавии. Они дают подробное описание грядущих событий, которое напрямую зависит не только от обстоятельств, но и от характера человека, который хочет узнать свое будущее....

Оракул Вселенской любви Ангелов, 72 карты + инструкция 

Оракул Вселенских Ангелов — это уникальная колода карт, созданная для тех, кто ищет направление и поддержку в области любви и добра от духовного мира Ангелов. Колода состоит из 72 карт, на каждой из которых изображен Ангел....

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Джеффри Рихтер Д., CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C# в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.