.NET — это платформа, которая является общеязыковой средой исполнения Common Language Runtime и подходит для разных языков программирования.
Введение
В начале двадцать первого века корпорация Microsoft сообщила о выходе в свет нового языка программирования, а именно, языка C#. Данная акция была частью более существенного события, которым стало объявление о платформе .NET (.NET Framework). Платформа .NET по существу явилась новой моделью формирования приложений, которая обладает следующим набором возможностей:
- Возможность использовать библиотеки базовых классов, которые предлагают целостную объектно-ориентированную модель программирования для всех языков программирования, способных поддерживать .NET.
- Наличие полного и абсолютного межъязыкового взаимодействия, которое позволяет формировать фрагменты одного и того же проекта на разных языках программирования.
- Наличие общей среды исполнения приложений .NET, независимо от того, на каком языке программирования для данной платформы они были сформированы. Причем среда должна брать на себя функции контроля за безопасностью исполнения приложений и управление ресурсами.
- Наличие упрощенного процесса развертывания приложения, в результате чего установка приложения может быть сведена к простому копированию файлов приложения в заданный каталог.
Программирование под платформу .NET
Одним из главных компонентов .NET Framework может считаться библиотека классов под общим названием FCL (Framework Class Library), к которой имеется возможность обращения из разных языков программирования, в том числе из С#. Данная библиотека поделена на модули таким образом, что присутствует возможность использования той или иной ее части в зависимости от необходимых результатов. Так, к примеру, в одном из модулей могут содержаться «кирпичики», из которых можно формировать Windows-приложения, а в другом могут быть «кирпичики», которые необходимы, для того чтобы организовать работу в сети и так далее.
Помимо FCL в составе платформы .NET присутствует CLR (Common Language Runtime), то есть, единая среда исполнения программ. Название говорит само за себя, то есть, это среда, ответственная за поддержку исполнения всех типов приложений, которые разработаны на разных языках программирования с применением библиотек .NET.
Необходимо подчеркнуть, что главными языками, которые предназначены для платформы .NET Framework, могут считаться С#, VB.NET, Managed C++ и JScript .NET. Для этих языков Microsoft имеет собственные компиляторы, которые способны перевести программу в специальный код, называемый IL-кодом и исполняемый средой CLR.
Помимо корпорации Microsoft, еще ряд компаний и академических организаций сформировали свои собственные компиляторы, способные генерировать код, работающий в CLR. На текущий момент существуют для Pascal, Cobol, Lisp, Perl, Prolog и так далее. Это значит, что программа может быть написана, к примеру, на языке Pascal, а далее, используя необходимый компилятор, можно сформировать специальный код, способный исполняться в среде CLR.
Среда CLR способна взять на себя всю совокупность низкоуровневой работы, к примеру, выполнять автоматическое управление памятью. В языках программирования предыдущего поколения возможность управлять ресурсами, включая и управление памятью, считалась одной из самых важных проблем. Объекты, которые были созданы в памяти, необходимо вовремя удалять из нее, в противном случае возможно переполнение памяти и, как следствие, исполнение программы может прекратиться. Так как это является достаточно сложным процессом, то иногда программисты просто забывали удалять уже ненужные объекты.
При формировании платформы .NET специалисты данную проблему смогли решить. То есть, управление памятью взяла на себя среда CLR. В процессе выполнения программы среда должна следить за объектами и в автоматическом режиме удалять те, которые уже не используются. Система управления памятью получила название Garbage Collector (GC) или сборщик мусора.
Среда CLR способна обеспечить интеграцию языков и предоставить возможность объектам, которые были созданы на одном языке, работать с объектами, написанными на другом языке. Подобная интеграция стала возможной за счет использования стандартного набора типов и информации, которая описывает тип (метаданные). Интеграция языков считается очень сложной задачей, поскольку отдельные языки могут не учитывать регистры символов, другие могут не поддерживать методы с переменным числом параметров и так далее.
Для того чтобы сформировать тип, который будет доступен для других языков, следует использовать только те возможности языка, которые являются доступными и в других языках. По этой причине корпорация Microsoft разработала следующие программные модули:
- Общую систему типов CTS (Common Type System), призванную описать все базовые типы данных, которые поддерживает среда CLR, и определить, как данные типы будут представляться в формате метаданных .NET.
- Общеязыковую спецификацию CLS (Common Language Specification), которая описывает минимальный набор возможностей, реализуемый производителями компиляторов, для того чтобы их продукты могли работать в CLR. А также она определяет правила, которым обязаны соответствовать видимые извне типы, чтобы к ним можно было получать доступ из любого другого, совместимого с CLS, языка программирования.
Следует иметь в виду, что система CLR/CTS способна поддерживать значительно большее количество возможностей для программиста, чем спецификации CLS. Когда при формировании какого-либо типа необходимо, чтобы он являлся доступным для других языков, то запрещается использование возможностей своего языка, которые выходят за рамки возможностей, предоставляемых CLS. В противном случае сформированный тип может оказаться недоступным программистам, которые пишут код на других языках.