Введение в ASP.NET Core
ASP.NET Core представляет технологию для создания веб-приложений на платформе .NET, развиваемую компанией Microsoft. В качестве языков программирования для разработки приложений на ASP.NET Core используются C# и F#.
История ASP.NET фактически началась с выходом первой версии .NET в начале 2002 года и с тех пор ASP.NET и .NET развивались параллельно: выход новой версии .NET знаменовал выход новой версии ASP.NET, поскольку ASP.NET работает поверх .NET. В то же время изначально ASP.NET была нацелена на работу исключительно в Windows на веб-сервере IIS (хотя благодаря проекту Mono приложения на ASP.NET можно было запускать и на Linux).
Однако 2014 год ознаменовал большие перемены, фактически революцию в развитии платформы: компания Microsoft взяла курс на развитии ASP.NET как кроссплатформенной технологии, которая развивается как opensource-проект. Данное развитие платформы в дальнейшем получило название ASP.NET Core , собственно как ее официально именут Microsoft до сих пор. Первый релиз обновленной платформы увидел свет в июне 2016 года. Теперь она стала работать не только на Windows, но и на MacOS и Linux. Она стала более легковесной, модульной, ее стало проще конфигурировать, в общем, она стала больше отвечать требованиям текущего времени.
Текущая версия ASP.NET Core, которая собственно и будет охвачена в текущем руководстве, вышла вместе с релизом .NET 7 в ноябре 2022 года.
ASP.NET Core теперь полностью является opensource-фреймворком. Все исходные файлы фреймворка доступны на github в репозитории https://github.com/dotnet/aspnetcore/.
Архитектура и модели разработки
Текущую архитектуру платформы ASP.NET Core можно выразить следующим образом:
На самом верхнем уровне располагаются различные модели взаимодействия с пользователем. Это технологии построения пользовательского интерфейса и обработки ввода пользователя, как MVC, Razor Pages, SPA (Single Page Application — одностраничные приложения с использованием Angular, React, Vue) и Balzor. Кроме того, это сервисы в виде встроенных HTTP API, библиотеки SignalR или сервисов GRPC.
Все эти технологии базируются и/или взаимодействуют с чистым ASP.NET Core, который представлен прежде всего различными встроенными компонентами middleware — компонентами, которые применяются для обработки запроса. Кроме того, технологии высшего уровня также взаимодействуют с различными расширениями, которые не являются непосредственной частью ASP.NET Core, как расширения для логгирования, конфигурации и т.д.
И на самом нижнем уровне приложение ASP.NET Core работает в рамках некоторого веб-сервера, например, Kestrel, IIS, библиотеки HTTP.sys.
Это вкратце архитектура платформы, теперь рассмотрим моделей разработки приложения ASP.NET Core:
- Прежде всего это базовый ASP.NET Core , который поддерживает все основные моменты, необходимые для работы соввременного веб-приложения: маршрутизация, конфигурация, логгирования, возможность работы с различными системами баз данных и т.д.. В ASP.NET Core 6 в фреймворк был добавлен так называемый Minimal API — минимизированная упрощенная модель, который еще упростила процесс разработки и написания кода приложения. Все остальные модели разработки работаю поверх базового функционала ASP.NET Core
- ASP.NET Core MVC представляет в общем виде построения приложения вокруг трех основных компонентов — Model (модели), View (представления) и Controller (контроллеры), где модели отвечают за работу с данными, контроллеры представляют логику обработки запросов, а представления определяют визуальную составляющую.
- Razor Pages представляет модель, при котором за обаботку запроса отвечают специальные сущности — страницы Razor Pages. Каждую отдельную такую сущность можно ассоциировать с отдельной веб-страницей.
- ASP.NET Core Web API представляет реализацию паттерна REST, при котором для каждого типа http-запроса (GET, POST, PUT, DELETE) предназначен отдельный ресурс. Подобные ресурсы определяются в виде методов контроллера Web API. Данная модель особенно подходит для одностраничных приложений, но не только.
- Blazor представляет фреймворк, который позволяет создавать интерактивные приложения как на стороне сервера, так и на стороне клиента и позволяет задействовать на уровне браузера низкоуровневый код WebAssembly.
Особенности платформы
- ASP.NET Core работает поверх платформы .NET и, таким образом, позволяет задействовать весь ее функционал.
- В качестве языков разработки применяются языки программирования, поддерживаемые платформой .NET. Официально встроенная поддержка для проектов ASP.NET Core есть у языков C# и F#
- ASP.NET Core представляет кросс-платформенный фреймворк, приложения на котором могут быть развернуты на всех основных популярных операционных системах: Windows, Mac OS, Linux. И таким образом, с помощью ASP.NET Core мы можем как создавать кросс-платформенные приложения на Windows, на Linux и Mac OS, так и запускать на этих ОС.
- Благодаря модульности фреймворка все необходимые компоненты веб-приложения могут загружаться как отдельные модули через пакетный менеджер Nuget.
- Поддержка работы с большинством распространенных систем баз данных: MS SQL Server, MySQL, Postgres, MongoDB
- ASP.NET Core характеризуется расширяемостью. Фреймворк построен из набора относительно независимых компонентов. И мы можем либо использовать встроенную реализацию этих компонентов, либо расширить их с помощью механизма наследования, либо вовсе создать и применять свои компоненты со своим функционалом.
- Богатый инструментарий для разработки приложений. В качестве инструментария разработки мы можем использовать такую среду разработки с богатым функционалом, как Visual Studio от компании Microsoft. Также можно использовать для разработки среду Rider от компании JetBrains. Кроме того, имеющаяся оснастка .NET CLI позволяет созадвать и запускать проекты ASP.NET в консоли. И таким образом, для написания кода можно использовать обычных текстовый редактор, например, Visual Studio Code .
Обзор ASP.NET
ASP.NET — это бесплатная веб-платформа для создания отличных веб-сайтов и веб-приложений с помощью HTML, CSS и JavaScript. Вы также можете создавать веб-API и использовать технологии в режиме реального времени, такие как веб-сокеты.
Начало работы
Установите Visual Studio Community Edition, бесплатную интегрированную среду разработки для ASP.NET в Windows.
Веб-сайты и веб-приложения
ASP.NET предлагает три платформы для создания веб-приложений: веб-формы, ASP.NET MVC и веб-страницы ASP.NET. Все три платформы являются стабильными и зрелыми, и вы можете создавать отличные веб-приложения с помощью любой из них. Независимо от того, какую платформу вы выберете, вы получите все преимущества и возможности ASP.NET во всем мире.
Каждая платформа предназначена для разных стилей разработки. Выбор зависит от сочетания ресурсов программирования (знаний, навыков и опыта разработки), типа создаваемого приложения и удобного подхода к разработке.
Ниже приведен обзор каждой платформы и некоторые идеи по выбору между ними. Если вы предпочитаете видеообращение, см . статьи Создание веб-сайтов с помощью ASP.NET и Что такое веб-инструменты?
Инфраструктура | Если у вас есть опыт работы в | Стиль разработки | Экспертная область |
---|---|---|---|
веб-формы | Win Forms, WPF, .NET | Быстрая разработка с использованием богатой библиотеки элементов управления, которые инкапсулируют разметку HTML | Средний уровень, расширенный rad |
MVC | Ruby on Rails, .NET | Полный контроль над разметкой HTML, разделенным кодом и разметкой, а также простой в написании тестов. Оптимальный вариант для мобильных и одностраничных приложений (SPA). | Средний уровень, расширенный |
Веб-страницы | Классический ASP, PHP | Разметка HTML и код вместе в одном файле | Новое, Mid-Level |
веб-формы
С помощью ASP.NET Web Forms вы можете создавать динамические веб-сайты с помощью знакомой модели перетаскивания, управляемой событиями. Область конструирования и сотни элементов управления и компонентов позволяют быстро создавать комплексные сайты с пользовательским интерфейсом и доступом к данным.
MVC
ASP.NET MVC предлагает эффективный, основанный на шаблонах способ создания динамических веб-сайтов для четкого разделения проблем и предоставления пользователям полного контроля над разметкой для гибких разработок. ASP.NET MVC содержит множество функций для быстрой, согласованной с TDD разработкой для создания сложных приложений, использующих новейшие веб-стандарты.
Веб-страницы ASP.NET
веб-страницы ASP.NET и синтаксис Razor обеспечивают быстрый, доступный и упрощенный способ объединения серверного кода с HTML для создания динамического веб-содержимого. Подключение к базам данных, добавление видео, создание ссылок на сайты социальных сетей и множество других функций, которые помогут вам создавать красивые сайты, соответствующие новейшим веб-стандартам.
Примечания о веб-формы, MVC и веб-страницах
Все три платформы ASP.NET основаны на платформа .NET Framework и совместно используют основные функции .NET и ASP.NET. Например, все три платформы предлагают модель безопасности входа, основанную на членстве, и все три платформы используют одни и те же средства для управления запросами, обработки сеансов и т. д., которые являются частью основных функций ASP.NET.
Кроме того, эти три структуры не являются полностью независимыми, и выбор одной из них не исключает возможности использования другой. Так как платформы могут сосуществовать в одном веб-приложении, нередко можно увидеть отдельные компоненты приложений, написанные с помощью разных платформ. Например, клиентские части приложения могут быть разработаны в MVC для оптимизации разметки, а части доступа к данным и административные части разрабатываются в веб-формы, чтобы воспользоваться преимуществами управления данными и простым доступом к данным.
Веб-API
Платформа веб-API ASP.NET позволяет с легкостью создавать службы HTTP для широкого диапазона клиентов, включая браузеры и мобильные устройства. ASP.NET Web API — это идеальная платформа для сборки REST-приложений на базе .NET Framework.
Технологии реального времени
ASP.NET SignalR — это новая библиотека для разработчиков ASP.NET, которая упрощает разработку веб-функций в режиме реального времени. SignalR обеспечивает двунаправленную связь между сервером и клиентом. Серверы могут мгновенно отправлять содержимое подключенным клиентам по мере его доступности. SignalR поддерживает веб-сокеты и возвращается к другим совместимым методам для старых браузеров. SignalR включает API для управления подключениями (например, события подключения и отключения), группирования подключений и авторизации.
Мобильные приложения и сайты
ASP.NET могут использовать собственные мобильные приложения с помощью серверной части веб-API, а также мобильные веб-сайты, использующие адаптивные платформы дизайна, такие как Начальная загрузка Twitter. Если вы создаете собственное мобильное приложение, можно легко создать веб-API на основе JSON для обработки доступа к данным, проверки подлинности и push-уведомлений для приложения. Если вы создаете адаптивный мобильный сайт, вы можете использовать любую платформу CSS или открытую систему сетки, или выбрать мощную мобильную систему, например jQuery Mobile или Sencha, и отличные мобильные приложения с PhoneGap.
Одностраничные приложения
ASP.NET одностраничное приложение (SPA) помогает создавать приложения, включающие значительные взаимодействия на стороне клиента с помощью HTML 5, CSS 3 и JavaScript. Visual Studio включает шаблон для создания одностраничных приложений с помощью knockout.js и веб-API ASP.NET. В дополнение к встроенному шаблону SPA, шаблоны SPA, созданные сообществом, также доступны для скачивания.
WebHooks
Веб-перехватчики — это упрощенный шаблон HTTP, предоставляющий простую модель pub/sub для объединения веб-API и служб SaaS. При возникновении события в службе уведомление отправляется зарегистрированным подписчикам в виде HTTP-запроса POST. Запрос POST содержит сведения о событии, которые позволяют получателю действовать соответствующим образом.
Веб-перехватчики предоставляются большим количеством служб, включая Dropbox, GitHub, Instagram, MailChimp, PayPal, Slack, Trello и многие другие. Например, веб-перехватчик может указать, что файл был изменен в Dropbox, изменение кода было зафиксировано в GitHub, платеж был инициирован в PayPal или карта был создан в Trello.