Литература 1. Троелсен Э. Язык программирования С# 2005 и платформа .NET 2.0 - Изд. Вильямс, 2007. 2. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. Изд. Microsoft Press. Русская редакция, 2007. 3. Нейгел К., Ивьен Б и др. С# 2005 для профессионалов. – Изд. Диалектика, 2006. Microsoft® .NET – платформа нового поколения Цели разработки платформы: • Создать единую объектно-ориентированную среду программирования для локальных и распределенных приложений. • Упростить развертывание (deployment) приложений и решить проблемы с конфликтом версий. • Создать среду для безопасного выполнения кода, в том числе кода, созданного другими производителями программного продукта. • Унифицировать процесс разработки различных типов приложений, например, Windows-приложений и Web-сервисов. • .NET Enterprise Servers • .NET Framework • Visual Studio .NET .NET Framework • Общеязыковая среда выполнения Сommon Language Runtime (CLR) • Базовая библиотека классов .NET Framework Class Library ( другие термины - Base Class Library (BCL) или Framework Class Library (FCL)) Компиляция и выполнение кода • Компиляция исходного кода на языке C# в код Microsoft intermediate language (MSIL). • В процессе выполнения кода под управлением CLR компиляция кода MSIL в команды процессора (native code). • Just-in-time (JIT) компиляторы. Рисунок из MSDN Development Tools and Languages \ Visual Studio \ Visual C# \ Getting Started with Visual C# \ Introduction to the C# Language and .NET Framework Общеязыковая среда выполнения (CLR) • • • • • • • • • • JIT компилятор Сборщик мусора Загрузчик классов Взаимодействие с BCL Обработка исключительных ситуаций Взаимодействие с неуправляемым кодом (PInvoke, COM) Поддержка многопоточности Проверка типов Обеспечение безопасности Поддержка отладки Сборка (assembly) • Сборка - исполняемое под управлением CLR приложение или библиотека с типами и/или ресурсами. • Cборка – минимальная единица повторного использования, управления версиями и безопасностью. • Может распространяться простым копированием. • Может состоять из одного или нескольких файлов. По умолчанию компилятор создает однофайловую сборку. • Для создания многофайловых сборок используется компоновщик AL.exe, который запускается из командной строки. Сборка (assembly) -2 • Сборка может использоваться (share) несколькими приложениями одновременно. Для этого она должна находиться в глобальном кэше сборок (Global Assembly Cache – GAC). Сборки в GAC должны иметь строгое имя (strong name). • В процессе выполнения приложения в память загружаются только необходимые сборки. • Можно программно получить всю информацию о сборке, используя механизм отражения (reflection). • Можно явно загрузить сборку, например, для того, чтобы получить информацию о сборке. Структура исполняемого файла • Декларация (manifest) содержит • Список всех файлов сборки • Версию сборки • Региональные стандарты сборки (culture) • Издателя сборки • Информацию о целостности сборки Рисунок из MSDN Development Tools and Languages \ Visual Studio \ .NET Framework Programming in Visual Studio \ Overview of the .NET Framework\ Assemblies \ Assembly Contents • Ссылки на внешние сборки • Метаданные содержат описание всех типов, определенных в приложении. Метаданные Метаданные – это бинарная информация, которая добавляется в PEфайл при компиляции исходного кода в MSIL. При выполнении кода CLR загружает метаданные в память. Метаданные содержат полную информацию о сборке. • Описание сборки. • Имя, версия, региональные стандарты (culture), ключ издателя (public key). • Типы, определенные в сборке. • Другие сборки, на которые ссылается данная сборка. • Права (security permissions), необходимые для выполнения сборки. • Описание каждого типа, определенного в приложении. • Имя, видимость, базовый класс, реализованные интерфейсы. • Члены класса (методы, свойства, поля, события, вложенные типы). • Атрибуты – дополнительная декларативная информация. Метаданные -2 Метаданные используются • Сборщиком мусора • При сериализации объекта • VisualStudio для подсказок при написании исходного кода Метаданные доступны через • Методы классов, поддерживающих механизм отражения (reflection) • ILDASM Библиотека классов Библиотека .NET Framework - множество готовых типов (классов, интерфейсов и типов-значений), которые используются при разработке приложений. Большинство библиотечных типов можно использовать как базовые для определения пользовательских типов. … Библиотечные типы находятся в нескольких сборках. Все типы находятся в пространствах имен, которые образуют иерархическую структуру. В корневом пространстве имен System находятся классы для встроенных типов (Int32, Double, Single и т.д.)