В 2000 году компания Microsoft объявила о создании нового языка программирования - языка C#. Эта акция стала частью более значительного события - объявления о платформе .NET (.NET Framework). Платформа .NET по сути представляла собой новую модель создания приложений, которая включает в себя следующие возможности:
1) использование библиотеки базовых классов, предлагающих целостную объектно-ориентированную модель программирования для всех языков программирования, поддерживающих .NET;
2) полное и абсолютное межъязыковое взаимодействие, позволяющее разрабатывать фрагменты одного и того же проекта на различных языках программирования;
3) общая среда выполнения приложений .NET, независимо от того, на каких языках программирования для данной платформы они были созданы; при этом среда берет на себя контроль за безопасностью выполнения приложений и управление ресурсами;
4) упрощенный процесс развертывания приложения, в результате чего установка приложения может свестись к простому копированию файлов приложения в определенный каталог.
Одним из основных элементов .NET Framework является библиотека классов под общим именем FCL (Framework Class Library), к которой можно обращаться из различных языков программирования, в частности, из С#. Эта библиотека разбита на модули таким образом, что имеется возможность использовать ту или иную ее часть в зависимости от требуемых результатов. Так, например, в одном из модулей содержатся "кирпичики", из которых можно построить Windows-приложения, в другом — "кирпичики", необходимые для организации работы в сети и т.д.
Кроме FCL в состав платформы .NET входит Common Language Runtime (CLR — единая среда выполнения программ), название которой говорит само за себя - это среда ответственна за поддержку выполнения всех типов приложений, разработанных на различных языках программирования с использованием библиотек .NET.
Замечания. Следует отметить, что основными языками, предназначенными для платформы .NET Framework, являются С#, VB.NET, Managed C++ и JScript .NET. Для данных языков Microsoft предлагает собственные компиляторы, переводящие программу в специальный код, называемый IL-кодом, который выполняется средой CLR.
Среда CLR берет на себя всю низкоуровневую работу, например, автоматическое управление памятью. В языках программирования предыдущих поколений управление ресурсами, в частности, управление памятью, являлось одной из важных проблем. Объекты, созданные в памяти, должны быть удалены из нее, иначе память будет исчерпана и программа не сможет продолжить выполнение. Т.к. это достаточно сложный процесс, то часто программисты просто забывали удалять неиспользуемые объекты.
При разработке платформы .NET эту проблему постарались решить. Теперь управление памятью берет на себя среда CLR. В процессе работы программы среда следит за объектами и автоматически уничтожает неиспользуемые.
Замечание. Система управления памятью называется Garbage Collector (GC) или сборщиком мусора.
Среда CLR обеспечивает интеграцию языков и позволяет объектам, созданным на одном языке, использовать объекты, написанные на другом. Такая интеграция возможна благодаря стандартному набору типов и информации, описывающей тип (метаданным). Интеграция языков очень сложная задача, так как некоторые языки не учитывают регистры символов, другие не поддерживают методы с переменным числом параметров и т.д. Чтобы создать тип, доступный для других языков, придется задействовать лишь те возможности языка, которые гарантированно доступны в других языках. С этой целью Microsoft разработал:
1) общую систему типов (Common Type System, CTS), которая описывает все базовые типы данных, поддерживаемые средой CLR, и определяет, как эти типы будут представлены в формате метаданных .NET.
2) общеязыковую спецификацию (Common Language Specification, CLS), описывающую минимальный набор возможностей, который должен быть реализован производителями компиляторов, чтобы их продукты работали в CLR, а также определяющую правила, которым должны соответствовать видимые извне типы, чтобы к ним можно было получить доступ из любых других CLS-совместимых языков программирования.
Важно понимать, что система CLR/CTS поддерживает гораздо больше возможностей для программиста, чем спецификации CLS (см. Рис. 1. Схема пересечения возможностей языков).
Рис. 1. Схема пересечения возможностей языков
Если при разработке какого-то типа требуется, чтобы он был доступен другим языкам, нельзя использовать возможности своего языка, выходящие за рамки возможностей, определяемых CLS. Иначе созданный тип может оказаться недоступным программистам, пишущим код на других языках. Если межъязыковое взаимодействие не требуется, то можно разрабатывать очень мощные типы, ограничиваясь лишь возможностями языка.
|