Часть V. Программирование с использованием сборок .NET
Эта часть книги посвящена деталям формата сборок .NET. Здесь вы узнаете не только о способах развертывания и конфигурирования библиотек кода .NET, но также о внутреннем устройстве двоичного образа .NET Будет описана роль атрибутов .NET и определения информации о типе во время выполнения. Кроме того, рассматривается роль среды DLR (Dynamic Language Runtime — исполняющая среда динамического языка) и ключевого слова dynamic
в С#. Наконец, объясняются более сложные темы, касающиеся сборок, такие как домены приложений, синтаксис языка CIL и построение сборок в памяти.
Глава 14. Построение и конфигурирование библиотек классов
На самом высоком уровне термин сборка используется для описания любого двоичного файла *.dll или *.ехе, созданного с помощью компилятора .NET. Однако в действительности понятие сборки намного шире. В этой главе будет показано, чем отличаются однофайловые и многофайловые сборки, как создавать и развертывать сборки обеих разновидностей, как делать сборки закрытыми и разделяемыми с помощью XMLфайлов *.config и специальных сборок политик издателя. Кроме того, в главе описана внутренняя структура глобального кеша сборок (Global Assembly Cache — CAG).
Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
В главе 15 продолжается изучение сборок .NET. Здесь будет показано, как обнаруживать типы во время выполнения с использованием пространства имен System.Reflection. Типы из этого пространства имен позволяют строить приложения, способные считывать метаданные сборки на лету. Кроме того, в главе рассматривается динамическая загрузка и создание типов во время выполнения с применением позднего связывания а также роль атрибутов .NET (стандартных и специальных). Для закрепления материала в конце главы приводится пример построения расширяемого приложения Windows Forms.
Глава 16. Динамические типы и среда DLR
В версии .NET 4.0 появился новый аспект исполняющей среды .NET, который называется исполняющей средой динамического языка. Используя DLR и ключевое слово dynamic, введенное в C# 2010, можно определять данные, которые не будут распознаваться вплоть до времени выполнения. Такие возможности существенно упрощают решение некоторых очень сложных задач программирования для .NET. В этой главе вы ознакомитесь с рядом практических применений динамических данных, включая использование API-интерфейсов рефлексии .NET и взаимодействие с унаследованными библиотеками СОМ с минимальными усилиями.
Глава 17. Процессы, домены приложений и объектные контексты
В этой главе подробно рассказывается о внутреннем устройстве загруженной исполняемой сборки .NET. Цель главы заключается в иллюстрации отношений между процессами, доменами приложений и контекстными границами. Все эти темы подготавливают базу для изучения процесса создания многопоточных приложений в главе 19.
Глава 18. Язык CIL и роль динамических сборок
Цель этой финальной главы в данной части двояка. В первой половине главы рассматривается синтаксис и семантика языка CIL, а во второй — роль пространства имен System.Reflection.Emit. Типы из этого пространства имен можно использовать для построения программного обеспечения, которое способно генерировать сборки .NET в памяти во время выполнения. Формально сборки, которые определяются и выполняются в памяти, называются динамическими сборками.