Publicité

Webinar 1 Intro a NET MAUI.pptx

21 Mar 2023
Publicité

Contenu connexe

Plus de Luis775803(20)

Publicité

Webinar 1 Intro a NET MAUI.pptx

  1. Luis Beltrán Microsoft MVP @darkicebeam
  2. BIBLIOTECAS BASE COMUNES / APIs INFRASTRUCTURE .NET 6 HERRAMIENTAS Visual Studio Code CLI Visual Studio Visual Studio for Mac WEB MÓVIL JUEGOS IoT IA DESKTOP NUBE ECOSISTEMA NuGet GitHub Componentes, herramientas, proveedores de bibliotecas
  3. Arquitectura de una aplicación .NET MAUI C# C# Código compartido UI, Recursos, Características de Plataforma & Lógica de Negocios C# C#
  4. Interfaz de usuario nativa multiplataforma Sistema de proyecto único, base de código única Acceso multiplataforma a la API de dispositivos Compilación nativa, rendimiento nativo Implementación en múltiples dispositivos, dispositivos móviles y de escritorio .NET MAUI .NET 6 .NET MAUI github.com/dotnet/maui WinUI Mac Catalyst Android iOS iOS macOS
  5. Basado en tecnología de confianza .NET for iOS hace una compilación completa de Ahead Of Time (AOT) para producir un binario ARM para la App Store de Apple. .NET for Android aprovecha la compilación Just In Time (JIT) y Ahead of Time (AOT) en el dispositivo Android. BINARIO ARM Se ejecuta de forma nativa .APP AOT .NET C# Bindings .APK Compila r y vincular .NET C# Bindings IL + JIT Se ejecuta de forma nativa
  6. Instalación
  7. Visual Studio 2022 (preview) Desarrollo moderno Cree aplicaciones innovadoras y modernas con .NET 6, GitHub y Azure con herramientas integradas Productividad personal y de equipo Live Share, Hot reload, Web live preview, IntelliCode, herramientas mejoradas de depuración y prueba Escale a proyectos de cualquier tamaño Una interfaz de usuario moderna y optimizada basada en una arquitectura de 64 bits para admitir las bases de código y los flujos de trabajo más grandes y complejos https://visualstudio.microsoft.com/es/vs/preview/
  8. Rápido y Fluido Centrado en el rendimiento con más de 100 problemas reportados por los usuarios solucionados; soporte nativo para el procesador M1 de Apple Interfaz de usuario moderna de macOS Una interfaz de usuario reescrita, utilizando las API nativas de macOS Cocoa. Con temática nativa, soporte de pantalla completa y herramientas de accesibilidad de macOS. Compatibilidad con .NET 6 Cree para la web, la nube y el móvil, utilizando .NET 6. https://aka.ms/vsmac-preview
  9. Plataforma de aplicaciones completa ✓ Más de 40 páginas, diseños y controles (Disponibles en C# o XAML) ✓ Data-Binding bidireccional ✓ Navegación ✓ Visual State Manager ✓ API de animación ✓ Dependency Service ✓ Messaging Center ✓ Compatibilidad con CI/CD ✓ Desarrollo híbrido con Blazor ✓ Acceso a la API de la plataforma ✓ Imágenes, iconos, fuentes, pantallas de bienvenida C# C# Código Compartido UI, Recursos, Características de Plataforma & Lógica de Negocios C# C#
  10. CarouselView CollectionView ListView Picker TableView IndicatorView ProgressBar ActivityIndicator Editor Entry CheckBox DatePicker Slider Stepper Switch TimePicker Button ImageButton RadioButton RefreshView Frame GraphicsView Image Label ScrollView SearchBar SwipeView BlazorWebview Border BoxView
  11. Layouts Páginas Content Flyout Navigation Tabbed
  12. <TargetFrameworks> net6.0-android;net6.0-ios;net6.0-maccatalyst;net6.0-windows10.0.19041 </TargetFrameworks> <!-- Display name --> <ApplicationTitle>MonkeyFinder</ApplicationTitle> App Identifier --> <ApplicationId>com.companyname.monkeyfinder</ApplicationId> <!-- Versions --> <ApplicationVersion>1</ApplicationVersion>
  13. Cross-Platform APIs Flashlight Geolocation Preferences Device Info Device Display Info Secure Settings Accelerometer Battery Clipboard Compass Connectivity Data Transfer Email File System Geocoding Gyroscope Magnetometer Phone Dialer Screen Lock Sms Text to Speech Vibration
  14. // Get cached location, else get real location. var location = await Geolocation.GetLastKnownLocationAsync(); if (location == null) { location = await Geolocation.GetLocationAsync(new GeolocationRequest { DesiredAccuracy = GeolocationAccuracy.Medium, Timeout = TimeSpan.FromSeconds(30) }); }
  15. // Register service builder.Services.AddSingleton<IGeolocation>(Geolocation.Default); // Inject service IGeolocation geolocation; public MyViewModel(IGeolocation geolocation) { this.geolocation = geolocation; }
  16. 1 Proyecto único que aloja todo el código fuente del proyecto, incluida la interfaz de usuario, el código de la plataforma, los recursos compartidos y más
  17. Las fuentes, las imágenes y los assets están contenidos en el proyecto. Fuentes: configuradas automáticamente por plataforma Imágenes – Redimensionadas, SVG Iconos de aplicaciones y Splash Screens también compatibles
  18. Las carpetas específicas de la plataforma contienen recursos específicos de la plataforma, configuración, lógica de inicio y código de plataforma.
  19. public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); return builder.Build(); }
  20. public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); builder.Services.AddSingleton<MonkeyService>(); builder.Services.AddSingleton<MonkeysViewModel>(); builder.Services.AddSingleton<MainPage>(); return builder.Build(); }
  21. Migración de Xamarin.Forms a .NET MAUI
  22. Q&A

Notes de l'éditeur

  1. - En mayo de 2014, Xamarin.Forms fue lanzado como parte de Xamarin 3.0. Esto fue casi dos años antes de que Microsoft adquiriera Xamarin, ya que operaban como una compañía independiente. Era obvio en ese momento que Xamarin.Forms era más un experimento que un producto destacado. Una buena cantidad de funcionalidad no se completó, no fue consistente o simplemente no existía, particularmente en torno al soporte de Windows. Xamarin estaba claramente sorprendido por lo popular que se volvió en un período de tiempo muy corto. Hoy Xamarin.Forms se ha convertido en la forma más común de trabajar con la plataforma Xamarin. Si bien es parte de la oferta general de Microsoft, es en muchos sentidos separado y distinto de la plataforma subyacente. Es probable que el mantenimiento del producto también sea difícil. Con el tiempo, el equipo de Xamarin.Forms ha estandarizado la implementación en muchas plataformas y ha agregado nuevas y emocionantes características. Pero detrás de eso tiene que estar la realidad de que el producto original no fue hecho para ser un producto de primer nivel y en muchos sentidos fue lanzado como un experimento. Ese tipo de historial probablemente ha llevado a que el código subyacente no sea completamente tan robusto y mantenible como se requiere. No es raro ver que las actualizaciones de la plataforma rompen la funcionalidad existente. Microsoft ha estado pasando por muchos cambios con .NET Standard y .NET Core. Y a través de esto, Xamarin.Forms se ha mantenido en gran medida, pero sigue siendo un producto separado y distinto. Microsoft quería cambiar eso y, junto con ello, se convirtió en una oportunidad para reexaminar Xamarin.Forms. Microsoft no solo quería la próxima versión de Xamarin.Forms. En muchos sentidos, querían algo nuevo, algo que ahora es parte de .NET. MAUI se encuentra en la parte superior de los frameworks específicos de la plataforma para iOS, Android, Windows y macOS, que a su vez, se encuentran en la parte superior de la biblioteca de clases base de .NET o BCL. Con esta reinvención, el equipo también cambió cosas como los espacios de nombres, los diseños y cómo funciona el código específico de la plataforma. Si bien gran parte del código antiguo de Xamarin.Forms seguirá funcionando en .NET MAUI con algunos cambios en el espacio de nombres, para crear una verdadera aplicación MAUI se requieren algunos cambios en la forma en que se hacen las cosas.
  2. .NET Multi-platform App UI (.NET MAUI) Interfaz de usuario para aplicación multiplataforma en .NET es un framework multiplataforma para crear aplicaciones móviles y de escritorio nativas con C# y XAML. integrados en .NET a partir de .NET 6 y posteriores. Utilizando .NET MAUI, puede desarrollar aplicaciones que se pueden ejecutar en Android, iOS, macOS y Windows desde una única base de código compartida.
  3. Puede que ni siquiera te des cuenta, pero es posible que ya conozcas .NET. MAUI en forma de Xamarin.Forms. .NET MAUI es una tecnología open-source y la evolución de Xamarin.Forms, con escenarios extendidos de móvil a escritorio, con controles de interfaz de usuario reconstruidos desde cero para el rendimiento y extensibilidad. Si ya has usado Xamarin. Forms para crear interfaces de usuario multiplataforma, notará muchos similitudes con .NET MAUI.
  4. Sin embargo, también hay algunas diferencias. Con .NET MAUI, puede crear aplicaciones multiplataforma con un solo proyecto, pero puede agregar código y recursos específicos de la plataforma si es necesario. Uno de los objetivos clave de .NET MAUI es permitirle implementar la mayor cantidad posible de la lógica de la aplicación y el diseño de la interfaz de usuario en una sola base de código.
  5. Entonces, ¿cómo hace .NET MAUI su magia? .NET MAUI unifica API de Android, iOS, Mac OS y Windows en una única y abstracta API que permite una experiencia de desarrollador de escritura única y ejecución en cualquier lugar. Sin embargo, cuando sea necesario, como acabo de mencionar, aún puede comunicarse con en esos marcos de plataforma y aprovechar todos los aspectos de cada marco. .NET proporciona una serie de marcos específicos de plataforma para creando aplicaciones. .NET para Android, .NET para iOS y .NET para macOS, Es posible que anteriormente los conozcas como Xamarin.iOS y Xamarin. Android, y ahora tenemos la interfaz de usuario de Windows, también conocida como WinUI. Para quién es .NET MAUI .NET MAUI es para desarrolladores que desean: Escribir aplicaciones multiplataforma en XAML y C#, desde una única base de código compartida en Visual Studio. Compartir la estructura y el diseño de la interfaz de usuario en todas las plataformas. Compartir código, pruebas y lógica empresarial entre plataformas.
  6. Echemos un vistazo más de cerca a cómo se relaciona todo esto. Todo comienza con el código de tu aplicación. Aquí es donde quieres pasar todo tu tiempo para que sea productivo. Esta es tu lógica de negocios. Esta es tu aplicación, tu idea de mil millones de dólares. Pero para llegar allí, tenemos que pasar por un par de capas. La primera capa de la tecnología. la segunda son los SDK de la plataforma nativa. Esto es lo que Google, Apple y Microsoft envían en sus plataformas para que tu puedas trabajar. Entonces, ¿cómo pasamos del código de nuestra aplicación a esas plataformas y ejecutamos en los dispositivos? Primero, necesitamos algo que pueda ejecutar código .NET, el Runtime de .NET. Para iOS, Mac OS y Android esto todavía usa Mono y usa CoreCLR en Windows, pero eso no es realmente tan importante. Llegaremos a eso en un minuto. A continuación, necesitamos una API .NET común contra la que podamos escribir nuestro código. Y esa es la Biblioteca de clases base o BCL. Lo nuevo en .NET 6 es que todos los runtimes de la aplicación tales como Mono y CoreCLR usan el mismo BCL que acabo de mencionar. Para usar .NET contra SDK de plataforma nativa, necesitamos una representación .NET de los SDKs. Hacemos esto vinculando una API .NET y una implementación a la API nativa. Cuando llama a un método nativo desde C#, es igual que si lo hubieras hecho desde Objective-C, Swift, Java, Kotlin, C++ u otro. La capa final del pastel que realmente lo hace delicioso es .NET MAUI. .NET MAUI proporciona una rica biblioteca de controles, diseños y servicios que funcionan en todas las plataformas admitidas, por lo que debe solo dominar una API para obtener todas las aplicaciones nativas con .NET MAUI.
  7. Toda esa complejidad se entrega en un solo marco que te da acceso a todo esto. Así que si aprendes a trabajar con .NET MAUI, puede concentrarse en lo único que es lo más importante: su código de aplicación.
  8. Las aplicaciones de Netmui pueden se escriben en PC o Mac y se compilan en nativos paquetes de aplicaciones. Las aplicaciones de Android construidas usan .NET Maui compilado de C# a Lenguaje Intermedio o IL que es entonces compilado JIT justo a tiempo. a un ensamblado nativo cuando se inicia la aplicación. Aplicaciones de iOS creadas con .NET MAUI están usando AOT (ahead of time) compilado de C# a un código ensamblado ARM nativo. Las apps Mac OS creadas con .NET MAUI usan Mac Catalyst, una solución de Apple que lleva tus aplicaciones iOS creadas con UIKit a Desktop y aumentadas con un AppKit adicional y API de plataforma según sea necesario. Aplicaciones de Windows creadas con .NET MAUI use la biblioteca WinUI para crear aplicaciones nativas que se dirijan a Windows Desktop.
  9. Aunque .NET Multi-platform App UI (.NET MAUI) ha sido liberado, el soporte de Visual Studio para .NET MAUI se encuentra actualmente en versión preliminar.
  10. Basando tu configuración de máquina para el desarrollo móvil en Xamarin, esto incluye cosas como configurar el SDK de Android y cualquier otra herramienta de desarrollo móvil requerida. Es útil instalar las cargas de trabajo para el desarrollo móvil con .NET, .NET Desktop Development, Universal Windows Platform Development, y si nos desplazamos hacia abajo en la lista, debe asegurarse de tener instalado Windows 10 SDK, 10.0.1836 2.0. 
  11. Para desarrollar aplicaciones iOS y macOS, aún necesitará una Mac al menos en algún lugar de tu canal de desarrollo. Hay formas de evitarlo con el producto de Microsoft. Hot-Reload que le permite depurar tus aplicaciones iOS en un dispositivo físico directamente desde Windows. O puedes alquilar una Mac a través de un servicio en la nube. Pero la mejor experiencia siempre será tener una Mac. Todavía puedes usar esa Mac sin tener que usar macOS. Puedes crear tus aplicaciones a través de una Mac que está en algún lugar de tu red. Veremos mas adelante cómo configurarlo para tu entorno de desarrollo. incluida una copia instalada de Xcode y visual Studio para Mac.  ¿puedo usar Visual Studio Code para desarrollar apps .NET MAUI? Y la respuesta es una especie de sí y no, porque .NET MAUI es parte de. Net ahora y por lo tanto parte de las herramientas CLI. Desarrollándolo y ejecutándolo a través de Vs el código funciona un poco. Sin embargo, Microsoft también anunció que por el momento, al menos, solo Visual Studio y Visual Studio para Mac será compatible oficialmente y tendrá la mejor experiencia para desarrollar aplicaciones en Maui.
  12. Así que lo que ¿Tiene.net Maui para ofrecerle? Bueno, la respuesta corta a esto es todo lo que necesita para construir tu idea de aplicación de mil millones de dólares porque .NET MAUI es el sucesor de Xamarin.Forms que ha existido desde hace casi una década. Ya se ha implementado mucho. Esto incluye más de 40 páginas, diseño y controles que puedes usar de Csharp y XAML que tal vez ya hayas utilizado desde otros frameworks de UI basados ​​en XAML. El enlace de datos está ahí para asegurarse de que pueda separar tu código de tu UI e implementar el patrón MVVM con éxito. Todo lo que necesitas para navegación, animación, integración continua y soporte de implementación para que pueda lanzar tu aplicación desde tu repositorio directamente a las tiendas de aplicaciones. Usar SVG para imágenes, íconos, pantalla flash, la capacidad de llegar al 100% de las API de la plataforma en caso de .NET MAUI no hizo una abstracción para lo que quiere usar todavía, y mucho, mucho más.
  13. Ahora toda esta bondad es ofrecido a través de un enfoque de proyecto único que utiliza múltiples targets. Esto puede sonar un poco complicado, pero más adelante profundizaremos y veremos que en realidad no es tan complicado como suena.
  14. Essentials. si has estado trabajando con Xamarin antes, es posible que sepas sobre Xamarin.Essentials. Essentials ofrece todo tipo de abstracciones para API de plataforma como acceso a servicios de ubicación, obtención de información sobre tu aplicación o dispositivo usando linterna, todo tipo de API y sensores que llegan a través de las plataformas. En realidad, debería decir la funcionalidad anteriormente conocida como Essentials porque el nombre Essentials se ha ido y todas estas API acaban de subir en .NET MAUI, lo que hace que este marco de interfaz de usuario sea aún más completo que nunca Más adelante aprenderemos dónde están todos estos elementos esenciales. y cómo usarlas.
  15. Habrás notado que mencioné MVVM. Gran parte de la remodelación que ha estado sucediendo para .NET MAUI es asegurarnos de que ahora también abrió la puerta a otros patrones de diseño. por ejemplo, hay ya un proyecto que se llama Comet que te permite escribir MVU Para diseñar aplicaciones tal como lo hace Swift UI y Jetpack Compose
  16. El cambio más notable que veremos en .NET MAUI es la nueva estructura de proyecto único. Xamarin Forms tenía proyectos independientes para cada plataforma, mientras que MAUI tiene solo uno. Este cambio simplifica de muchas maneras la estructura del proyecto y una solución MAUI sobre lo que teníamos en formas de Xamarin sin perder ninguna capacidad de la estructura del proyecto por plataforma.  Echemos un vistazo a cómo se implementa esto. Así que voy a empezar por ir y abrir Visual Studio. Así que escribiremos "Visual Studio" aquí mismo. Y actualmente tengo la versión preliminar y la cargaremos y quiero crear un nuevo proyecto. Así que repasaremos y haremos clic en "Crear un nuevo proyecto". Queremos un proyecto MAUI. Así que escribiremos "maui" aquí, y eso buscará y encontrará los tres tipos de proyectos MAUI. Y vemos la biblioteca de aplicaciones y clases. Y el tercer tipo es una aplicación Blazor y ese es un tipo ligeramente diferente de aplicación MAUI, algo nuevo de los formularios Xamarin. Así que simplemente haremos clic en . NET MAUI y haremos clic en Siguiente. Y vamos a nombrar esto "NewMauiApp".  Muy bien, ahora podemos ver que tenemos un solo proyecto. Y si abrimos las dependencias podemos ver que hay cuatro secciones principales, una para cada una de las plataformas, iOS, Android, Mac Catalyst o MacOS y windows. Estos son los paquetes para una plataforma determinada. Si agregamos un nuevo paquete nuget para una plataforma específica, aparecerá en el directorio de paquetes adecuado. Si agregamos un paquete que es para múltiples plataformas, aparecerá en el directorio de paquetes para todas las plataformas relevantes. También hay código específico de la plataforma en el proyecto. Eso aparece debajo de la carpeta de la plataforma. Y si abrimos esto, podemos ver una vez más que tenemos las mismas cuatro carpetas.  Y si miramos debajo de la carpeta de Android, por ejemplo, podemos ver todo el contenido específico de Android que normalmente veríamos que habría sido parte del proyecto de Android dentro de los formularios de Xamarin. Así podemos ver, por ejemplo, el manifiesto de Android y MainActivity. Si agregamos la clase normal bajo el directorio de la plataforma, no estará disponible para codificar en ninguna otra carpeta específica de la plataforma, incluso si no contiene características específicas de la plataforma. Sin embargo, podemos agregar código a una de estas carpetas y acceder a él desde código fuera de las carpetas, pero es posible que no se compile para otras plataformas si no hay clases o métodos similares disponibles. Por el contrario, si ponemos un archivo fuera del directorio de la plataforma, puede ser consumido por las cuatro plataformas.
Publicité