Как инструментальное средство, NET является достаточно универсальным, поскольку поддерживает многоязыковую среду Common Language Runtime (CLR), которая, как упоминалось ранее, поддерживает разработку компонентов на различных языках. При этом важной особенностью является возможность построения фрагментов проекта на наиболее подходящих для этого языках.
При реализации бизнес-логики и интерфейса их, конечно, необходимо разделять. Бизнес-логику лучше реализовать на Прологе как набор условий и логических альтернатив, другой подход – сделать это на функциональном языке, таком как F#, а интерфейс можно достаточно легко реализовать на C#, который включает все механизмы взаимодействия с Windows и библиотеками. NET Framework наиболее быстрым и прозрачным способом, т. е. различные компоненты достаточно быстро реализуются.
И в этом смысле у. NET практически нет альтернатив, такого большого спектра языков и разнообразия подходов больше не найти. Причем сервисные средства. NET, такие как отладка, анализ кода и т. д., поддерживаются для всех без исключения языков, реализованных в рамках Visual Studio. То есть на каком бы языке ни велась разработка, программист получает все сервисные возможности, интегрированные в среду разработки. Как было сказано ранее, можно разрабатывать собственные языки программирования, это достаточно интересно и актуально. Одним из современных направлений развития программной инженерии является создание программного обеспечения на основе DSL – предметно-ориентированных языков, т. е. языков для приложений того или иного рода, той или иной предметной области.
Можно заметить, что одни языки разработаны Microsoft, другие – сторонними организациями и т. д. То есть существует бесконечное их разнообразие, поскольку есть возможность создать любой язык, погрузить его в. NET и экспериментировать.
Посмотрим на архитектурную схему: сбоку, интегрируя все доступные сервисы (рис. 8.1), начиная с уровня естественного языка, с уровня исходного кода на языке программирования, находится Visual Studio.NET – как средство разработки, оно интегрирует все особенности платформы. Основой для программирования являются различные языки программирования. Работа происходит в исходном тексте, в стандартном редакторе Visual Studio.NET, при этом на любом языке. Типы этого языка, какими бы своеобразными они ни были, транслируются автоматически при трансляции кода в стандартные системные типы. NET, т. е. имеют место трансляции в типы Common Language Specification (CLS). Далее используются на уровне пользовательского интерфейса различные веб-формы, веб-сервисы, скажем, средства SP.NET Windows Forms, технологии, связанные с. NET Remoting, и т. д. На уровне взаимодействия с данными используются технологии ADO.NET и т. д., слабоструктурированные данные могут преобразовываться по средствам форматов в стандарты XML. Естественно, все взаимодействие со средой выполнения строится на основе базовых классов. NET Framework, которые едины для любого языка программирования, строятся на основе компонентов, берущих свое начало в базовых классах. И все трансляции осуществляются в термины ассемблера высокого уровня – это ассемблер Common Language Runtime (CLR), т. е. виртуальной машины. NET (рис. 8.2).
Рис. 8.1.Архитектурная схема. NET Framework и Visual Studio.NET
Рис. 8.2.Схема компиляции в Common Language Runtime
При компиляции некоторого модуля программного текста, который написан на том или ином языке, запускается компилятор, зависящий от языка программирования, но среда у них общая, и в итоге получается сборка в форме DLL или EXE, который содержит все необходимые метаданные, чтобы развернуть и запустить эту сборку в составе корпоративного приложения.
Естественно, трансляция осуществляется в терминал языка MSIL – это ассемблер высокого уровня, который в 3–5 раз плотнее, чем обычный ассемблер, если рассматривать, например, процессор Intel 8086 или ассемблер Z80.
Рис. 8.3.Схема выполнения CLR
При этом в ряде случаев не представляется возможным осуществить безопасную компиляцию в управляемый код. К сожалению, работа с некоторыми механизмами, например с памятью, небезопасна, и в этом случае программист обязан пометить этот фрагмент кода как неуправляемый код. Он транслируется по другому пути, без MSIL, и объединяется с родным кодом уже как неуправляемый объект – и в этом случае ответственность за безопасность лежит на программисте. В любом другом случае компилятор преобразует сборку в исходный текст. После чего осуществляется сборка с использованием JIT-компилятора на платформе CLR, и, по сути, идет работа в терминах операционной системы, т. е. взаимодействие со средой Windows уже скомпилированного и собранного приложения.
Читать дальше
Конец ознакомительного отрывка
Купить книгу