Евгений Колесников 4 ヶ月 前
コミット
9393183881
6 ファイル変更98 行追加5 行削除
  1. 74 0
      articles/cs_maui.md
  2. 8 0
      articles/lab_wireframe.md
  3. 1 1
      articles/sprint_lab.md
  4. BIN
      img/maui_01.png
  5. BIN
      img/maui_02.png
  6. 15 4
      readme.md

+ 74 - 0
articles/cs_maui.md

@@ -0,0 +1,74 @@
+# Что такое MAUI, создание мобильного приложения для Android используя VSC
+
+## Введение в .NET MAUI
+
+[взято отсюда](https://metanit.com/sharp/maui/1.1.php)
+
+**.NET Multi-platform App UI** или сокращенно **MAUI** представляет кроссплатформенный фреймворк от компании Microsoft для создания нативных мобильных и десктопных приложений с использованием языка программирования C# и языка разметки XAML. С помощью .NET MAUI можно разрабатывать приложения под такие операционные системы как Android, iOS, macOS и Windows, используя при этом один и тот же код.
+
+![](../img/maui_01.png)
+
+Первая версия MAUI вышла в мае 2022 года, далее в ноябре 2024 года вышли обновления для .NET 9. Однако стоит отметить, что сам фреймворк .NET Multi-platform App UI фактически представляет эволюцию другого фреймворка - **Xamarin Forms**, который имеет более чем 10-летнюю историю и который с 2016 года был куплен и развивался компанией Microsoft. Поэтому, имя опыт работы с Xamarin Forms, не составит больших проблем перейти на .NET MAUI.
+
+Также стоит отметить, что .NET MAUI - это opensource-фреймворк, код которого можно найти в репозитории на github по адресу https://github.com/dotnet/maui
+
+Зачем использовать .NET Multi-platform App UI, какие преимущества она несет? При разработке приложения сразу под несколько платформ (iOS, Android, Windows, macOS) разработчики сталкиваются со следующими трудностями:
+
+* различие в подходах построение графического интерфейса так или иначе влияет на разработку. Разработчики вынуждены подстраивать приложение под требования к интерфейсу на конкретной платформе
+* разные API - различие в программных интерфейсах и реализациях тех или иных функциональностей также требует от программиста учет этих специфических особенностей
+* разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда - Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Android мы можем использовать самый разный набор сред - Android Studio, Intellij IDEA, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin.
+
+    А для создания приложений под Windows используется Visual Studio, а в качестве языков - C#, F#, VB.NET, C++
+
+Такой диапазон платформ, средств разработки и языков программирования не может положительно сказываться на сроках создания приложений, и, в конечном счете, на денежных средствах, выделяемых на разработку. Было бы очень эффективно иметь один инструмент, который позволял легко и просто создавать приложения сразу для всех платформ. И именно таким инструментом и является платформа **MAUI**.
+
+Преимущества разработки на MAUI:
+
+* В процессе разработки создается единый проект, который использует общий код для всех платформ
+* MAUI предоставляет прямой доступ к нативным API каждой платформы, в том числе к аппаратным возможностям платформ
+* При создании приложений мы можем использовать платформу .NET и язык программирования C# (а также F#), который является достаточно производительным, и в тоже время ясным и простым для освоения и применения
+* Богатая коллекция встроенных элементов управления
+* Поддержка привязки данных
+* Возможности настройки поведения визуального интерфейса и встроенного функционала
+* Богатые возможности по работе с графикой
+* Наличие hot reload, что упрощает разработку
+
+### Поддерживаемые платформы
+
+На момент написания данной статьи .NET Multi-platform App UI (.NET MAUI) официально поддерживает следующие платформы:
+
+* Android 5.0 (API 21) и выше
+* iOS 11 и выше
+* macOS 10.15 и выше (с помощью Mac Catalyst)
+* Windows 11 and Windows 10 версии 1809 и выше (с использованием WinUI 3).
+
+Кроме того, подсистема .NET MAUI Blazor часть выше поднимает планку поддерживаемых версий:
+
+* Android 7.0 (API 24) и выше
+* iOS 14 и выше
+* macOS 11 и выше (с помощью Mac Catalyst)
+
+Также неофициально сообществом поддерживается Linux - проект maui-linux. Кроме того, компания Samsung осуществляет поддержку для ОС Tizen.
+
+### Как работает MAUI
+
+.NET MAUI объединяет API операционных систем Android, iOS, macOS и Windows в один единый API, который позволяет написать один общий код для всех поддерживаемых операционных систем и при необходимости добавлять для каждой отдельной платформы специфические для нее функциональности. Схематически работу .NET MAUI можно представить следующим образом:
+
+![](../img/maui_02.png)
+
+.NET MAUI предоставляет единый фреймворк для создания приложений. Однако в процессе работы он опирается на ряд субплатформ, через которые идет взаимодействие с каждой отдельной операционной системой: .NET for Android, .NET for iOS, .NET for macOS и Windows UI 3 (WinUI 3). И в общем случае код приложения сначала обращается к платформе .NET MAUI, а та затем обращается к субплатформе для конкретной ОС. Хотя фреймворк также позволяет напрямую обращаться коду приложения к этим субплатформам.
+
+Все эти субплатформы работают поверх библиотеки классов .NET Base Class Library (BCL). Эта библиотека позволяет абстрагироваться от деталей реализации конкретной платформы и зависит от среды выполнения .NET, в которой выполняется код. Для Android, iOS и macOS среду выполнения для приложения предоставляет фреймворк Mono (реализация .NET). На Windows среда выполнения предоставляется .NET CoreCLR.
+
+Таким образом, разработчик может определить общую единую логику для приложения для каждой отдельной платформы. И также при необходимости может задействовать специфические для каждой платформы функциональности.
+
+### Инструменты разработки
+
+Разрабатывать приложения формально можно на Windows и MacOS. Однако если стоит задача разрабатывать приложения под iOS и MacOS, то для этого необходим MacOS.
+
+В качестве среды разработки используется Visual Studio 2022 и выше. На MacOS в этом случае используется Visual Studio Code.
+
+## Создание проекта
+
+Для разработки на VS можете посмотреть статью на [metanit](https://metanit.com/sharp/maui/1.2.php), я же буду делать приложение испольуя VSC опираясь на [официальную инструкцию от Microsoft](https://learn.microsoft.com/ru-ru/dotnet/maui/get-started/first-app?view=net-maui-9.0&tabs=visual-studio-code&pivots=devices-android)
+

+ 8 - 0
articles/lab_wireframe.md

@@ -0,0 +1,8 @@
+# Лабораторная работа "Создание Wireframe для своей предметной области"
+
+Используя материалы лекции ["Прототипы экранов и окон пользовательского интерфейса"](./wireframe.md) разработать прототипы экранов для своей предметной области:
+
+* **админка** - десктопное приложение для заполнения справочников (аналог "продукции" и "материалов" в лекциях)
+* **клиентское приложение** - мобильное и/или веб- приложение для онлайн оформления заказа в вашем магазине/сервисе
+
+В репозитории должны быть скриншоты разработанных интерфейсов и ссылка на интерфейс, если использовали веб-приложения (типа figma)

+ 1 - 1
articles/sprint_lab.md

@@ -10,7 +10,7 @@
 
 1. Типы связей в диаграмме прецедентов стандартизованы (их всего 4). Не надо рисовать что попало. В задании не акцентировано, но диаграмма прецедентов делается для **всей** предметной области.
 
-1. На сервере **mysql** кодировка баз по-умолчанию *latin*, перед созданием своих таблиц поменяйте на *utb8mb4* (либо при создании таблиц указывайте эту кодировку).
+1. На сервере **mysql** кодировка баз по-умолчанию *latin*, перед созданием своих таблиц поменяйте на *utf8mb4* (либо при создании таблиц указывайте эту кодировку).
 
 1. Часто встречается задача типа "продукт может иметь связанные продукты". Это классическая связь *многие-ко-многим*, т.е. у продукта может быть много связанных продуктов и у связанного продукта может быть много родителей (продуктов, к которым он привязан). Решается добавлением таблицы связей, внешние ключи которой (например, *parent_product_id* и *child_product_id*) ссылаются на одну и ту же таблицу продукции.
 

BIN
img/maui_01.png


BIN
img/maui_02.png


+ 15 - 4
readme.md

@@ -290,8 +290,6 @@ https://office-menu.ru/uroki-sql Уроки SQL
 
 1. [Создание подключения к БД MySQL. Получение данных с сервера. Вывод данных согласно макету (ListBox, Image). Вывод данных плиткой.](./articles/cs_mysql_connection3.md)
 
-<!-- 1. [Вывод данных согласно макету (ListBox, Image). Вывод данных плиткой.](./articles/cs_layout2.md) -->
-
 1. [Пагинация, сортировка, фильтрация, поиск](./articles/cs_pagination2.md)<!-- datepicker -->
 
 1. [Подсветка элементов по условию. Массовая смена цены продукции.](./articles/cs_coloring2.md)
@@ -304,6 +302,13 @@ https://office-menu.ru/uroki-sql Уроки SQL
 
 1. [Avalonia](./articles/avalonia.md)
 
+---
+
+#### Лабораторные работы
+
+1. [Создание Wireframe для своей предметной области](./articles/lab_wireframe.md)
+
+
 ### Разработка своего API.
 
 1. [API. REST API. Создание сервера ASP.NET Core. Swagger.](./articles/api_asp_net_core.md)
@@ -312,9 +317,15 @@ https://office-menu.ru/uroki-sql Уроки SQL
 
 1. [HTTP запросы в C#.](./articles/cs_http.md)
 
-**Лабораторные работы**
+### Разработка мобильных приложений (MAUI)
+
+1. [Что такое MAUI, создание мобильного приложения для Android используя VSC](./articles/cs_maui.md)
+
+### Разработка веб- приложений (ASP.NET)
+
+<!-- **Лабораторные работы** -->
 
-1. [Замечания по итогам и предисловие для следующих поколений](./articles/sprint_lab.md)
+<!-- 1. [Замечания по итогам и предисловие для следующих поколений](./articles/sprint_lab.md) -->
 
 <!-- 1. [C# Параллельное программирование и асинхронность](./articles/cs_async_await.md) -->