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
  • 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 Константность
  • 263 Глава 10. Свойства
    • 263 Свойства без параметров
      • 267 Автоматически реализуемые свойства
      • 268 Осторожный подход к определению свойств
      • 270 Свойства и отладчик Visual Studio
      • 271 Инициализаторы объектов и коллекций
      • 273 Анонимные типы
      • 276 Тип System.Tuple
    • 279 Свойства с параметрами
      • 283 Выбор главного свойства с параметрами
    • 284 Производительность при вызове методов доступа
    • 285 Доступность методов доступа свойств
    • 285 Обобщенные методы доступа свойств
  • 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 Мониторинг и контроль времени жизни объектов
  • 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#
  • 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 совершенно бесплатно.
CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание
Рейтинг книги:
0 голосов
3537

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: