Платформа. NET Framework - Программирование на языке C++

.NET Framework - программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.

Считается, что платформа. NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит Oracle).

Хотя. NET является патентованной технологией корпорации Microsoft и официально рассчитана на работу под операционными системами семейства Microsoft Windows, существуют независимые проекты (прежде всего это Mono иPortable. NET), позволяющие запускать программы. NET на некоторых других операционных системах.

Архитектура. NET

Программа для. NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для. NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). В терминах. NET получается Сборка, англ.Assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen. exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR встроенный в нее JIT-компилятор "на лету" (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Архитектура. NET Framework описана и опубликована в спецификации Common Language Infrastructure (CLI), разработанной Microsoft и утвержденной ISO и ECMA. В CLI описаны типы данных. NET, формат метаданных о структуре программы, система исполнения байт-кода и многое другое.

Объектные классы. NET, доступные для всех поддерживаемых языков программирования, содержатся в библиотеке Framework Class Library (FCL). В FCL входят классы Windows Forms, ADO. NET, ASP. NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation и другие. Ядро FCL называется Base Class Library (BCL).

Языки программирования в. NET

Одной из основных идей Microsoft. NET является совместимость программных частей, написанных на разных языках. Например, служба, написанная на C++ для Microsoft. NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C++ можно написать класс, наследованный от класса, написанного на Visual Basic. NET, а исключение, созданное методом, написанным на C++, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в. NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

Языки, поставляемые вместе с Microsoft Visual Studio:

    - C++ - Visual Basic. NET - JScript. NET - C++/CLI -- новая версия Managed C++ - F++ -- член семейства языков программирования ML, включен в VS2010/VS2012/VS2015 - J++ -- последний раз был включен в VS2005

.NET Core

.NET Core является кроссплатформенным (Windows, Mac, Linux) аналогом. NET Framework, с открытым исходным кодом. Он содержит среду CoreCLR -- кросс-платформенную реализацию CLR, в которую входит JIT-компилятор -- RyuJIT. Также. NET Core включает в себя CoreFX -- набор библиотек, функциональность которых частично совпадает с BCL: API. NET Core предоставляет подмножество API. NET Framework, но также и предоставляет ряд собственных API.

.NET Core версии 1.0 выпущен 27 июня 2016 года, вместе с Microsoft Visual Studio 2015 Update 3, в которой поддерживается разработка под. NET Core.

ASP. NET

Active Server Pages для. NET - технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформыMicrosoft. NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP. NET 5.

ASP. NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP. NET. В то же время внутреннее устройство ASP. NET существенно отличается от ASP, поскольку она основана на платформе. NET и, следовательно, использует все новые возможности, предоставляемые этой платформой.

Принципы ASP. NET

Хотя ASP. NET берет свое название от старой технологии Microsoft ASP, она значительно от нее отличается. Microsoft полностью перестроила ASP. NET, основываясь на Common Language Runtime (CLR), которая является основой всех приложений Microsoft. NET. Разработчики могут писать код для ASP. NET, используя практически любые языки программирования, входящие в комплект. NET Framework (C++, Visual Basic. NET и JScript. NET). ASP. NET имеет преимущество в скорости по сравнению со скриптовыми технологиями, так как при первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.

Преимущества ASP. NET перед ASP

    - Компилируемый код выполняется быстрее, большинство ошибок отлавливается еще на стадии разработки - Значительно улучшенная обработка ошибок во время выполнения запущенной готовой программы, с использованием блоков try..catch - Пользовательские элементы управления (controls) позволяют выделять часто используемые шаблоны, такие как меню сайта - Использование метафор, уже применяющихся в Windows-приложениях, например, таких как элементы управления и события - Расширяемый набор элементов управления и библиотек классов позволяет быстрее разрабатывать приложения - ASP. NET опирается на многоязыковые возможности. NET, что позволяет писать код страниц на VB. NET, Delphi. NET, Visual C++, J++ и т. д. - Возможность кэширования всей страницы или ее части для увеличения производительности - Возможность кэширования данных, используемых на странице

ASP. NET MVC Framework

ASP. NET MVC - фреймворк для создания веб-приложений, который реализует шаблон Model-view-controller.

В апреле 2009 года исходный код ASP. NET MVC был опубликован под лицензией Microsoft Public License (MS-PL). 27 марта 2012 года лицензия была изменена на Apache License 2.0

В настоящее время разрабатывается ASP. NET MVC 6, как часть ASP. NET Core; 27 июня 2016 года состоялся выход версии 1.0.0.

Основные компоненты ASP. NET MVC

Платформа ASP. NET MVC базируется на взаимодействии трех компонентов: контроллера, модели и представления. Контроллер принимает запросы, обрабатывает пользовательский ввод, взаимодействует с моделью и представлением и возвращает пользователю результат обработки запроса.

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

Движок представлений

Для управления разметкой и вставками кода в представлении используется движок представлений. До версии MVC 5 использовались два движка:

Web Forms и Razor. Начиная с MVC 5 единственным движком, встроенным по умолчанию, является Razor. Движок WebForms использует файлы. aspx, а Razor -- файлы. cshtml и. vbhtml для хранения кода представлений. Основой синтаксиса Razor является знак @, после которого осуществляется переход к коду на языках C++/VB. NET. Также возможно и использование сторонних движков. Файлы представлений не являются стандартными статическими страницами с кодом html, а в процессе генерации контроллером ответа с использованием представлений компилируются в классы, из которых затем генерируется страница html.

Маршрутизация

При обработке запросов фреймворк ASP. NET MVC опирается на систему маршрутизации, которая сопоставляет все входящие запросы с определенными в системе маршрутами, которые указывают какой контроллер и метод должен обработать данный запрос. Встроенный маршрут по умолчанию предполагает трехзвенную структуру: контроллер/действие/параметр.

Паттерны программирования

Шаблон программирования или паттерн в разработке программного обеспечения -- повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях. Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.

"Низкоуровневые" шаблоны, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.

На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.

Алгоритмы по своей сути также являются шаблонами, но не проектирования, а вычисления, так как решают вычислительные задачи.

Плюсы

В сравнении с полностью самостоятельным проектированием, шаблоны обладают рядом преимуществ. Основная польза от использования шаблонов состоит в снижении сложности разработки за счет готовых абстракций для решения целого класса проблем. Шаблон дает решению свое имя, что облегчает коммуникацию между разработчиками, позволяя ссылаться на известные шаблоны. Таким образом, за счет шаблонов производится унификация деталей решений: модулей, элементов проекта, -- снижается количество ошибок. Применение шаблонов концептуально сродни использованию готовых библиотек кода. Правильно сформулированный шаблон проектирования позволяет, отыскав удачное решение, пользоваться им снова и снова. Набор шаблонов помогает разработчику выбрать возможный, наиболее подходящий вариант проектирования.

Минусы

Хотя легкое изменение кода под известный шаблон может упростить понимание кода, по мнению Стива Макконнелла, с применением шаблонов могут быть связаны две сложности. Во-первых, слепое следование некоторому выбранному шаблону может привести к усложнению программы. Во-вторых, у разработчика может возникнуть желание попробовать некоторый шаблон в деле без особых оснований.

Многие шаблоны проектирования в объектно-ориентированном проектировании можно рассматривать как идиоматическое воспроизведение элементов функциональных языков. Питер Норвиг утверждает, что 16 из 23 шаблонов, описанных в книге "Банды Четверых", в Lisp или Dylan реализуются существенно проще, чем в С++, либо оказываются незаметны. Пол Грэхэм считает саму идею шаблонов проектирования -- антипаттерном, сигналом о том, что система не обладает достаточным уровнем абстракции, и необходима ее тщательная переработка. Нетрудно видеть, что само определение шаблона как "Готового решения, но не прямого обращения к Библиотеке" по сути означает отказ от повторного использования в пользу дублирования. Это, очевидно, может быть Неизбежным для сложных систем при использовании языков, не поддерживающих комбинаторы и полиморфизм типов, и это в принципе может быть Исключено в языках, обладающих свойством гомознаковости (хотя и не обязательно эффективно), так как любой шаблон может быть реализован в виде исполнимого кода.

Похожие статьи




Платформа. NET Framework - Программирование на языке C++

Предыдущая | Следующая