Обзор двоичных файлов .Net.

Модель .Net

Решение .Net

Основные возможности .Net:

Неограниченная возможность взаимодействия с существующим кодом. Двоичные компоненты COM работают вместе с двоичными файлами .Net.

Развитое межъязыковое взаимодействие. В отличие от классической COM в .Net поддерживается межъязыковое наследование, межъязыковая обработка событий (исключений), межъязыковая отладка.

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

Разработчикам предлагается библиотека базовых классов.

В .Net нет необходимости регистрировать двойные типы в системном реестре. Более того, .Net позволяет разным версиям одного и того же модуля DLL мирно существовать на одном и том же компьютере.

Среда выполнения .Net обеспечивается с помощью Common Language Runtime (CLR) – стандартная среда выполнения для языков. Главная роль CLR заключается в том, чтобы обнаруживать и загружать типы .Net и производить управление ими в соответствии с вашими командами. CLR берет на себя всю низкоуровневую работу: автоматическое управление памятью, межъязыковое взаимодействие, развертывание двоичных библиотек с отслеживанием версий и т.п.

Common Language Specification (CLS) – это набор правил, определяющих множество общих типов данных, в отношении которых гарантируется, что они одинаково понимаются при использовании во всех языках .Net.

Common Type System (CTS) – стандартная система типов – полностью описывает все типы данных, поддерживаемых средой выполнения, определяет, как одни типы данных могут взаимодействовать с другими и как они будут представлены в формате метаданных .Net. Важно, что во всех языках программирования .Net обязательно поддерживаются все типы данных, определенные в CST. Если программист использует только описанные в CTS, то при интегрировании его разработки с другими программами, возможно, написанными на других языках, проблем не возникнет.

Base Class Library (BCL) – библиотека базовых классов, доступная из любых языков программирования .Net. Эта библиотека обеспечивает поддержку работы с базами данных, с XML, предоставляет классы для обеспечения безопасности, для создания приложений, работающих с Web.

Когда с помощью компилятора для платформы .Net создается модуль DLL или EXE, содержимое этого модуля – это так называемая сборка (assembly) на языке IL. Назначение IL концептуально аналогично байт-коду Java: он компилируется в платформенно – зависимые инструкции в момент обращения к блоку инструкций IL.

Помимо инструкций IL, двоичные модули .Net содержат также метаданные, которые подробно описывают все типы, использованные в модуле. Метаданные описывают интерфейсы классов, содержащихся в сборке, то есть полное описание всех методов, свойств и событий этих классов.

Таким образом, в .Net реализована идея формирования машинного кода "на лету", которая с успехом используется в Java. JITter с помощью специальных настроек может формировать машинный код только один раз – во время первого вызова программы, а может повторять эту процедуру каждый раз при вызове программы.

Технология .Net также обещает избавить нас от одной из основных головных болей, связанных с ведением версий программных компонентов. Теперь описательный файл приложений содержит полную информацию об используемых версиях библиотек и других компонентов, а само объединение элементов приложения, получающееся в результате сборки компонентов, может содержать несколько различных версий одного и того же компонента.

Для динамического Web .Net предлагает модернизированную среду ASP .Net. Причем динамический код можно создавать и отлаживать в Visual Studio с помощью специальной модели Web Forms. Кроме того, ASP .Net выгодно отличается от просто ASP возможностью сохранения состояния сессий. Конфигурационная информация Web-приложений хранится в специальном файле в формате XML (так же, как и в J2EE).

Web-сервисы – новое направление развития Интернета, которое по замыслу его создателей Microsoft и IBM позволит приложениям взаимодействовать, динамически отыскивая в глобальной сети необходимые сервисы и вызывая их по мере необходимости.