Udostępnij za pośrednictwem


Wprowadzenie do platformy .NET MAUI

Napiwek

Ta zawartość jest fragmentem książki eBook, wzorców aplikacji dla przedsiębiorstw przy użyciu platformy .NET, dostępnej na platformie .NET MAUIDocs lub jako bezpłatnego pliku PDF do pobrania, który można odczytać w trybie offline.

Wzorce aplikacji dla przedsiębiorstw przy użyciu miniatury książki eBook platformy .NET MAUI .

Niezależnie od platformy deweloperzy aplikacji dla przedsiębiorstw muszą zmierzyć się z kilkoma wyzwaniami:

  • Wymagania aplikacji, które mogą ulec zmianie w czasie.
  • Nowe możliwości biznesowe i wyzwania.
  • Bieżąca opinia podczas opracowywania, która może znacząco wpłynąć na zakres i wymagania aplikacji.

Mając to na uwadze, ważne jest, aby tworzyć aplikacje, które można łatwo modyfikować lub rozszerzać wraz z upływem czasu. Projektowanie pod kątem takiej adaptacji może być trudne, ponieważ wymaga architektury, która umożliwia niezależne opracowanie i przetestowanie poszczególnych części aplikacji w izolacji bez wpływu na pozostałą część aplikacji.

Wiele aplikacji dla przedsiębiorstw jest wystarczająco złożonych, aby wymagać więcej niż jednego dewelopera. Może to być istotne wyzwanie, aby zdecydować, jak zaprojektować aplikację, aby wielu deweloperów mógł efektywnie pracować nad różnymi elementami aplikacji niezależnie, zapewniając jednocześnie, że elementy są bezproblemowo połączone po zintegrowaniu z aplikacją.

Tradycyjne podejście do projektowania i tworzenia aplikacji skutkuje tym, co jest określane jako aplikacja monolityczna , gdzie składniki są ściśle powiązane bez wyraźnego rozdzielenia między nimi. Zazwyczaj takie monolityczne podejście prowadzi do aplikacji, które są trudne i nieefektywne do utrzymania, ponieważ rozwiązywanie błędów może być trudne bez przerywania innych składników w aplikacji i może być trudne do dodania nowych funkcji lub zastąpienia istniejących funkcji.

Skutecznym rozwiązaniem tych wyzwań jest podzielenie aplikacji na dyskretne, luźno powiązane składniki, które można łatwo zintegrować ze sobą w aplikacji. Takie podejście oferuje kilka korzyści:

  • Umożliwia ona opracowywanie, testowanie, rozszerzanie i obsługę poszczególnych funkcji przez różne osoby lub zespoły.
  • Promuje ponowne użycie i czystą separację problemów między możliwościami poziomymi aplikacji, takimi jak uwierzytelnianie i dostęp do danych, oraz możliwości pionowe, takie jak funkcje biznesowe specyficzne dla aplikacji. Umożliwia to łatwiejsze zarządzanie zależnościami i interakcjami między składnikami aplikacji.
  • Pomaga zachować separację ról, umożliwiając różnym osobom lub zespołom skupienie się na konkretnym zadaniu lub funkcji zgodnie z ich wiedzą. W szczególności zapewnia ona bardziej czytelną separację między interfejsem użytkownika a logiką biznesową aplikacji.

Istnieje jednak wiele problemów, które należy rozwiązać podczas partycjonowania aplikacji w dyskretne, luźno powiązane składniki. Są to:

  • Podjęcie decyzji o sposobie zapewnienia czystej separacji problemów między kontrolkami interfejsu użytkownika a ich logiką. Jedną z najważniejszych decyzji podczas tworzenia aplikacji dla przedsiębiorstw platformy .NET MAUI jest to, czy należy umieścić logikę biznesową w plikach za pomocą kodu, czy też utworzyć czystą separację problemów między kontrolkami interfejsu użytkownika a ich logiką, aby aplikacja jest bardziej czytelna i testowalna. Aby uzyskać więcej informacji, zobacz Model-View-ViewModel.
  • Określanie, czy używać kontenera iniekcji zależności. Kontenery wstrzykiwania zależności zmniejszają sprzężenie zależności między obiektami, zapewniając obiekt do konstruowania wystąpień klas ze wstrzykniętymi zależnościami i zarządzania ich okresem istnienia na podstawie konfiguracji kontenera. Aby uzyskać więcej informacji, zobacz Wstrzykiwanie zależności.
  • Wybór między udostępnianymi zdarzeniami platformy a luźno połączoną komunikacją opartą na komunikatach między składnikami, które są niewygodne do łączenia według odwołań do obiektu i typu. Aby uzyskać więcej informacji, zobacz Wprowadzenie do komunikacji między luźno powiązanymi składnikami.
  • Podjęcie decyzji o sposobie nawigowania między stronami, w tym sposobu wywoływania nawigacji i miejsca, w którym powinna znajdować się logika nawigacji. Aby uzyskać więcej informacji, zobacz Nawigacja.
  • Określanie sposobu sprawdzania poprawności danych wejściowych użytkownika. Decyzja musi obejmować sposób weryfikacji danych wejściowych użytkownika oraz sposób powiadamiania użytkownika o błędach walidacji. Aby uzyskać więcej informacji, zobacz Walidacja.
  • Podejmowanie decyzji o sposobie przeprowadzania uwierzytelniania i sposobie ochrony zasobów przy użyciu autoryzacji. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie i autoryzacja.
  • Określanie sposobu uzyskiwania dostępu do danych zdalnych z usług internetowych, w tym sposobu niezawodnego pobierania danych i sposobu buforowania danych. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do danych zdalnych.
  • Podjęcie decyzji o sposobie testowania aplikacji. Aby uzyskać więcej informacji, zobacz Testowanie jednostkowe.

Ten przewodnik zawiera wskazówki dotyczące tych problemów i koncentruje się na podstawowych wzorcach i architekturze tworzenia wieloplatformowej aplikacji dla przedsiębiorstw przy użyciu platformy .NET MAUI. Wskazówki te mają na celu pomoc w tworzeniu kodu z możliwością dostosowania, konserwacji i testowania, uwzględniając typowe scenariusze tworzenia aplikacji dla przedsiębiorstw platformy .NET MAUI oraz oddzielając kwestie związane z prezentacją, logiką prezentacji i jednostkami za pomocą obsługi wzorca Model-View-ViewModel (MVVM).

Aplikacja przykładowa

Ten przewodnik zawiera przykładową aplikację eShop, która jest sklepem online zawierającym następujące funkcje:

  • Uwierzytelnianie i autoryzowanie względem usługi zaplecza.
  • Przeglądanie wykazu elementów.
  • Filtrowanie wykazu.
  • Porządkowanie elementów z wykazu.
  • Wyświetlanie historii zamówień użytkownika.
  • Konfiguracja ustawień.

Przykładowa architektura aplikacji

Poniżej przedstawiono ogólne omówienie architektury przykładowej aplikacji.

Architektura wysokiego poziomu eShop

Przykładowa aplikacja jest dostarczana z:

  • Hosting aplikacji .NET Aspire i orkiestracja
  • Aplikacja internetowa platformy Blazor opracowana przy użyciu platformy ASP.NET Core.
  • Wieloplatformowa aplikacja opracowana przy użyciu platformy .NET MAUI, która obsługuje systemy iOS, Android, macOS za pośrednictwem narzędzia Mac Catalyst i Windows.

Przykładowa aplikacja obejmuje następujące usługi zaplecza:

  • Mikrousługa tożsamości, która używa ASP.NET Core Identity i IdentityServer.
  • Mikrousługa wykazu, która jest opartą na danych usługą tworzenia, odczytu, aktualizowania, usuwania (CRUD), która korzysta z bazy danych programu SQL Server przy użyciu elementu EntityFramework Core.
  • Kolejność mikrousługi, która jest usługą opartą na domenie, która używa wzorców projektowych opartych na domenie.
  • Mikrousługa koszyka, która jest opartą na danych usługą CRUD korzystającą z pamięci podręcznej Redis Cache.

Te usługi zaplecza są implementowane jako mikrousługi korzystające z platformy ASP.NET Core i są wdrażane jako unikatowe kontenery za pomocą platformy .NET Aspire. Zbiorczo te usługi zaplecza są określane jako aplikacja referencyjna eShop. Aplikacje klienckie komunikują się z usługami zaplecza za pośrednictwem interfejsu internetowego usługi Representational State Transfer (REST). Aby uzyskać więcej informacji na temat mikrousług i konnainerów, zobacz Konteneryzowane mikrousługi.

Aplikacja wieloplatformowa

Ten przewodnik koncentruje się na tworzeniu międzyplatformowych aplikacji dla przedsiębiorstw przy użyciu platformy .NET MAUIi używa aplikacji wieloplatformowej eShop jako przykładu. Na poniższej ilustracji przedstawiono strony z wieloplatformowej aplikacji eShop, które zapewniają funkcje opisane wcześniej.

Aplikacja eShop MAUI

Aplikacja wieloplatformowa korzysta z usług zaplecza udostępnianych przez aplikację referencyjną eShop. Można go jednak skonfigurować do korzystania z danych z pozornych usług dla tych, którzy chcą uniknąć wdrażania usług zaplecza.

Aplikacja wieloplatformowa eShop wykonuje następujące funkcje platformy .NET MAUI :

  • XAML
  • Kontrolki
  • Powiązania
  • Konwertery
  • Style
  • Animacje
  • Polecenia
  • Zachowania
  • Wyzwalacze
  • Efekty
  • Kontrolki niestandardowe

Aby uzyskać więcej informacji na temat tej funkcji, zobacz dokumentację platformy .NETMAUI.

Ponadto testy jednostkowe są udostępniane dla niektórych klas w aplikacji wieloplatformowej eShop.

Rozwiązanie aplikacji wieloplatformowej

Rozwiązanie aplikacji wieloplatformowej eShop organizuje kod źródłowy i inne zasoby w wielu projektach. Wszystkie podstawowe składniki mobilne są zawarte w pojedynczym projekcie o nazwie eShopContainers. Jest to funkcja wprowadzona z platformą .NET 6, która umożliwia projektowi kierowanie wielu danych wyjściowych, co pomaga wyeliminować potrzebę wielu projektów platformy, które byłyby używane na platformie Xamarin.Forms i wcześniejszych wersjach platformy .NET. Dodatkowy projekt jest uwzględniony na potrzeby testowania jednostkowego.

Mimo że ten projekt zawiera wszystkie jego składniki przechowywane w pojedynczym projekcie, warto rozważyć rozdzielenie go na wiele projektów na podstawie Twoich potrzeb. Jeśli na przykład masz wiele implementacji dostawców usług opartych na usłudze z własnymi zależnościami, warto podzielić te implementacje dostawców usług na własny oddzielny projekt. Dobrymi kandydatami do separacji projektów są modele udostępnione, implementacje usług, składniki klienta interfejsu API, baza danych lub warstwy buforowania. Każde miejsce, w którym czujesz, że firma może ponownie używać składnika w innym projekcie, jest potencjalnym kandydatem do separacji. Te projekty można następnie spakować za pomocą narzędzia NuGet w celu łatwej dystrybucji i przechowywania wersji.

Wszystkie projekty używają folderów do organizowania kodu źródłowego i innych zasobów w kategorie. Klasy z aplikacji wieloplatformowej eShop można ponownie używać w dowolnej aplikacji platformy .NET MAUI bez żadnych modyfikacji.

Projekt eShop

Projekt eShop zawiera następujące foldery:

Folder opis
Animacje Zawiera klasy, które umożliwiają używanie animacji w języku XAML.
Zachowania Zawiera zachowania, które są widoczne dla klas wyświetlania.
Kontrolki Zawiera kontrolki niestandardowe używane przez aplikację.
Konwertery Zawiera konwertery wartości, które stosują logikę niestandardową do powiązania.
Wyjątki Zawiera niestandardowy wyjątek ServiceAuthenticationException.
Rozszerzenia Zawiera metody rozszerzeń dla VisualElement klas i IEnumerable<T> .
Pomocników Zawiera klasy pomocnika dla aplikacji.
Modele Zawiera klasy modeli dla aplikacji.
Właściwości Zawiera AssemblyInfo.cs, plik metadanych zestawu .NET.
Usługi Zawiera interfejsy i klasy, które implementują usługi udostępniane aplikacji.
Wyzwalacze Zawiera wyzwalacz BeginAnimation, który służy do wywoływania animacji w języku XAML.
Sprawdzanie poprawności Zawiera klasy związane z weryfikowaniem danych wejściowych.
Modele widoków Zawiera logikę aplikacji, która jest widoczna na stronach.
Widoki Zawiera strony aplikacji.

Podsumowanie

Wieloplatformowe narzędzia i platformy deweloperskie aplikacji wieloplatformowych firmy Microsoft zapewniają kompleksowe rozwiązanie dla aplikacji klienckich B2E, B2B i B2C, zapewniając możliwość udostępniania kodu na wszystkich platformach docelowych (iOS, macOS, Android i Windows) oraz obniżanie całkowitego kosztu posiadania. Aplikacje mogą udostępniać swój interfejs użytkownika i kod logiki aplikacji, zachowując wygląd i działanie natywnej platformy.

Deweloperzy aplikacji dla przedsiębiorstw muszą zmierzyć się z kilkoma wyzwaniami, które mogą zmieniać architekturę aplikacji podczas opracowywania. Dlatego ważne jest, aby utworzyć aplikację, aby można ją było modyfikować lub rozszerzać w miarę upływu czasu. Projektowanie pod kątem takiej adaptacji może być trudne, ale zazwyczaj polega na partycjonowaniu aplikacji w dyskretne, luźno powiązane składniki, które można łatwo zintegrować z aplikacją.