В этом уроке мы рассмотрим модели приложений, которые можно создавать на платформе .NET: web-приложения, микросервисы, мобильные и десктопные приложения.
Web-приложения
Один из наиболее распространенных видов приложений, которые строятся на платформе .NET – это web-приложения. Для создания таких решений в .NET есть специальный фреймворк ASP.NET, который также является бесплатным, кроссплатформенным с открытым исходным кодом. Используя его, можно разрабатывать web-приложения и сервисы.
Фреймворк ASP.NET позволяет построить:
- Классические web-приложения.
- Приложения Web API.
- Web-приложения реального времени.
- Микросервисы.
Классические web-приложения
С такими приложениями мы сталкиваемся повсюду, когда заходим в интернет через браузер. ASP.NET позволяет разрабатывать полноценные решения, состоящие из серверной и клиентской части.
Помимо классического варианта, когда клиентская часть строится с помощью стандартного набора из HTML + CSS + JavaScript или с использованием фреймворков типа React, Angular, Vue.js и т.п., в ASP.NET можно создавать решения с интерактивным пользовательским интерфейсом на базе технологии Blazor.
Web API
Если с вашим ресурсом работаю не только приложения в браузере, но и мобильные устройства или другие сервисы, то высока вероятность, что, скорее всего, вам придется реализовать REST API интерфейс (или gRPC). Такого типа решения также можно создать на базе ASP.NET, затратив минимум усилий.
Фреймворк предоставляет инструменты для удобной и гибкой сериализация данных, решения вопросов авторизации и аутентификации, маршрутизации запросов, интеграции с другими платформами и т.п.
Приложения реального времени
Благодаря встроенной поддержке SignalR протокола, на ASP.NET можно строить различные приложения реального времени. Например, выполняющие трекинг объектов на карте, считывающие данные с датчиков и т.п.
Микросервисы
Микросервисы – это такой архитектурный стиль разработки приложений, предполагающий разбиение системы на ряд сервисов, каждый из которых представляет собой независимое приложение и может развертываться на отдельном сервере, при этом сервисы совместно работают друг с другом для выполнения общей задачи. Важной особенностью является то, что каждый микросервис сосредоточен на решении какой-то одной конкретной задачи (например, он может работать с заказами, быть шлюзом для отправки email’ов или сервисом, отвечающим за логистику). Такой подход, при большой сложности общей системы, значительно упрощает разработку, тестирование и развертывание приложений, также в этом случае довольно легко решается задача масштабирования – вы просто можете запустить ещё несколько копий приложений, которые не справляются с нагрузкой.
До появления микросервисов, приложения поставлялись в виде результата компиляции исходного кода (например, exe- или jar-файл). В эпоху микросервисов единицей развертывания является контейнер. Контейнер объединяет в себе само приложение, конфигурацию для него и требуемое окружение (операционная система + набор фреймворков и библиотек). Контейнеры разворачиваются как отдельные единицы, по сути, это облегченные виртуальные машины, которыми можно независимо или коллективно управлять (запускать, останавливать и т.п.). Основным решением для контейнерной виртуализации является Docker.
Для разработки микросервисов в .NET используется фреймворк ASP.NET.
Docker
Построив микросервис на .NET платформе, полученное решение можно упаковать в Docker-контейнер. Для автоматизации этого процесса, средства разработки .NET предоставляют специальные инструменты.
Docker — это платформа виртуализации с открытым исходным кодом, позволяющая размещать приложение со всеми его зависимостями в контейнере и запускать его в подготовленной среде. Развернуть полученный контейнер, можно как в облаке, так и в локальной инфраструктуре. В каждом контейнере настраивается окружение под конкретное приложение.
Мобильные и десктопные приложения
Мобильные приложения
Растущий рынок мобильных приложений послужил появлению в экосистеме .NET решения Xamarin Forms. Этот продукт появился в 2016 году как SDK (набор инструментов для разработки программного обеспечения) с открытым исходным кодом для создания мобильных и десктопных приложений с использованием C# и языка разметки XAML. Впоследствии на основе него был создан .NET MAUI (Multi-platform App UI) – фреймворк, на котором можно разрабатывать приложения для Android, iOS, macOS и Windows, используя одну общую кодовую базу.
Рассмотрим наиболее интересные особенности фреймворка .NET MAUI.
Общая база кода
Фреймворк позволяет использовать общую кодовую базу для всех платформ: Android, iOS, macOS и WinUI 3. Все они имеют доступ к единой библиотеке базовых классов .NET (BCL).
Единый API
.NET MAUI имеет единую платформу для создания пользовательских интерфейсов для мобильных и десктопных приложений. Фреймворк объединяет API операционных систем Android, iOS, macOS и Windows в один единый API и дает возможность добавлять функциональность для каждой из них.
Настройка визуального интерфейса
Пользовательский интерфейс каждой платформы имеет свои особенности. Благодаря .NET MAUI можно разработать интерфейс приложения “один раз” и использовать его на “всех платформах”. MAUI также предоставляет доступ к нативным (“родным”) сервисам и функциям каждой платформы, например, к файловой системе, уведомлениям, настройкам устройства и т.п.
Отладка и горячая перезагрузка
Платформа поддерживает горячую перезагрузку (hot reload): в процессе отладки приложения нет необходимости её каждый раз прерывать и перезапускать заново, когда требуется внести изменения в код.
Развертывание приложений
Приложение на платформе .NET MAUI можно скомпилировать в собственные пакеты под каждую ОС. “Приложение Android” компилируется из C# в промежуточный язык (IL) и при запуске приложения компилируется в собственную сборку. “Приложение iOS” сразу компилируются в код сборки ARM. “Приложение Windows” использует библиотеку WinUI3 для создания приложений для Windows.
Десктопные приложения
При разработке настольных .NET приложений можно использовать:
- Windows Forms – платформу для разработки классических приложений Windows.
- WPF (Windows Presentation Foundation) – фреймворк для создания десктопных систем со сложным пользовательским интерфейсом.
- UWP (Universal Windows Platform) – универсальная платформа для создания и запуска приложений на Windows 10 и Windows 11.
- Avalonia – фреймворк для создания кроссплатформенных приложений.
Windows Forms
Windows Forms – простая и удобная платформа для разработки многофункциональных приложений для ОС Windows, исторически является первым подходом к разработке десктопных приложений, появившимся на заре появления .NET, до сих пор развивается и является очень популярной. Основным средством взаимодействия с пользователем является форма, которую мы видим как окно, через неё можно отображать и получать данные от пользователя.
WPF
Windows Presentation Foundation – фреймворк для создания пользовательского интерфейса, является частью экосистемы .NET, позволяет создавать приложения только под ОС Windows. Особенностями WPF являются:
- использование DirectX для отрисовки графики;
- независимость от конечного разрешения экрана;
- декларативное описание интерфейса с помощью языка разметки XAML;
- поддержка двумерной и трехмерной графики, стилей, шаблонов и мультимедиа;
- поддержка механизма привязки к данным (data binding).
UWP
UWP использует API WinRT для создания универсальных приложений для разных устройств на Windows, таких, как десктопы, планшеты и т.п. Для разработки пользовательского интерфейса доступны WinUI, XAML, HTML или DirectX, языки программирования: C#, C++, Visual Basic и JavaScript. Распространять созданные приложения можно через магазин Windows Store.
Avalonia
Avalonia – это фреймворк для создания кроссплатформенных приложений (Windows, macOS, Linux, Android, iOS и WebAssembly) с графическим интерфейсом для платформы .NET. Фреймворк развивается при поддержке сообщества и является open-source проектом. Приложения на Avalonia можно разрабатывать на языках C# или F# в любой из популярных IDE для .NET-разработки: Visual Studio, Visual Studio Code, JetBrains Rider.
Если Вы хотите больше узнать про язык C#, приглашаем Вас на наш курс “C#. Базовый уровень“.