Udostępnij za pośrednictwem


Wprowadzenie do tworzenia aplikacji dla przedsiębiorstw

Uwaga

Ta książka elektroniczna została opublikowana wiosną 2017 r. i od tego czasu nie została zaktualizowana. Jest wiele w książce, która pozostaje cenna, ale niektóre z materiałów są przestarzałe.

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 Xamarin.Forms aplikacji dla przedsiębiorstw 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 i 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 programu Xamarin.Forms. Wskazówki mają na celu pomoc w tworzeniu kodu z możliwością dostosowania, konserwacji i testowania przez rozwiązywanie typowych Xamarin.Forms scenariuszy tworzenia aplikacji dla przedsiębiorstw oraz oddzielenie kwestii związanych z prezentacją, logiką prezentacji i jednostkami za pomocą obsługi wzorca Model-View-ViewModel (MVVM).

Przykładowa aplikacja

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

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

Przykładowa architektura aplikacji

Rysunek 1–1 zawiera ogólne omówienie architektury przykładowej aplikacji.

eShopOnContainers high-level architecture

Rysunek 1–1. Architektura wysokiego poziomu eShopOnContainers

Przykładowa aplikacja jest dostarczana z trzema aplikacjami klienckimi:

  • Aplikacja MVC opracowana z platformą ASP.NET Core.
  • Aplikacja jednostronicowa (SPA) opracowana z platformą Angular 2 i typescript. Takie podejście w przypadku aplikacji internetowych pozwala uniknąć wykonywania rundy na serwerze przy użyciu każdej operacji.
  • Aplikacja mobilna opracowana z Xamarin.Formsprogramem , która obsługuje systemy iOS, Android i platforma uniwersalna systemu Windows (UWP).

Aby uzyskać informacje o aplikacjach internetowych, zobacz Tworzenie architektury i tworzenie nowoczesnych aplikacji internetowych przy użyciu platformy ASP.NET Core i Microsoft Azure.

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 przy użyciu ASP.NET Core MVC i są wdrażane jako unikatowe kontenery na jednym hoście platformy Docker. Zbiorczo te usługi zaplecza są określane jako aplikacja referencyjna eShopOnContainers. 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 platformy Docker, zobacz Konteneryzowane mikrousługi.

Aby uzyskać informacje o implementacji usług zaplecza, zobacz .NET Microservices: Architecture for Containerized .NET Applications (Mikrousługi platformy .NET: architektura konteneryzowanych aplikacji .NET).

Aplikacja mobilna

Ten przewodnik koncentruje się na tworzeniu międzyplatformowych aplikacji dla przedsiębiorstw przy użyciu metody Xamarin.Formsi używa aplikacji mobilnej eShopOnContainers jako przykładu. Rysunek 1–2 przedstawia strony z aplikacji mobilnej eShopOnContainers, które zapewniają funkcje opisane wcześniej.

The eShopOnContainers mobile app

Rysunek 1–2. Aplikacja mobilna eShopOnContainers

Aplikacja mobilna korzysta z usług zaplecza udostępnianych przez aplikację referencyjną eShopOnContainers. 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 mobilna eShopOnContainers wykonuje następujące Xamarin.Forms czynności:

  • XAML
  • Kontrolki
  • Powiązania
  • Konwertery
  • Style
  • Animacje
  • Polecenia
  • Zachowania
  • Wyzwalacze
  • Efekty
  • Niestandardowe programy renderujące
  • MessagingCenter
  • Kontrolki niestandardowe

Aby uzyskać więcej informacji na temat tej funkcji, zobacz dokumentację Xamarin.Formsi Tworzenie aplikacji mobilnych za pomocą usługi .Xamarin.Forms

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

Rozwiązanie aplikacji mobilnej

Rozwiązanie aplikacji mobilnej eShopOnContainers organizuje kod źródłowy i inne zasoby w projektach. Wszystkie projekty używają folderów do organizowania kodu źródłowego i innych zasobów w kategorie. W poniższej tabeli przedstawiono projekty tworzące aplikację mobilną eShopOnContainers:

Projekt opis
eShopOnContainers.Core Ten projekt jest projektem biblioteki klas przenośnych (PCL), który zawiera udostępniony kod i udostępniony interfejs użytkownika.
eShopOnContainers.Droid Ten projekt zawiera kod specyficzny dla systemu Android i jest punktem wejścia dla aplikacji systemu Android.
eShopOnContainers.iOS Ten projekt zawiera kod specyficzny dla systemu iOS i jest punktem wejścia dla aplikacji systemu iOS.
eShopOnContainers.UWP Ten projekt zawiera kod specyficzny dla platformy platforma uniwersalna systemu Windows (UWP) i jest punktem wejścia dla aplikacji systemu Windows.
eShopOnContainers.TestRunner.Droid Ten projekt jest modułem uruchamiającym testy systemu Android dla projektu eShopOnContainers.UnitTests.
eShopOnContainers.TestRunner.iOS Ten projekt jest modułem uruchamiającym testy systemu iOS dla projektu eShopOnContainers.UnitTests.
eShopOnContainers.TestRunner.Windows Ten projekt to platforma uniwersalna systemu Windows moduł uruchamiający testy dla projektu eShopOnContainers.UnitTests.
eShopOnContainers.UnitTests Ten projekt zawiera testy jednostkowe dla projektu eShopOnContainers.Core.

Klasy z aplikacji mobilnej eShopOnContainers można ponownie używać w dowolnej Xamarin.Forms aplikacji bez modyfikacji.

eShopOnContainers.Core Project

Projekt eShopOnContainers.Core PCL 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.
Efekty Zawiera klasę EntryLineColorEffect , która służy do zmieniania koloru obramowania określonych Entry kontrolek.
Wyjątki Zawiera niestandardowy ServiceAuthenticationExceptionelement .
Rozszerzenia Zawiera metody rozszerzeń dla VisualElement klas i IEnumerable .
Pomocników Zawiera klasy pomocnika dla aplikacji.
Modele Zawiera klasy modeli dla aplikacji.
Właściwości Zawiera AssemblyInfo.csplik metadanych zestawu .NET.
Usługi Zawiera interfejsy i klasy, które implementują usługi udostępniane aplikacji.
Wyzwalacze BeginAnimation Zawiera wyzwalacz, który służy do wywoływania animacji w języku XAML.
Walidacje 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.
Projekty platformy

Projekty platformy zawierają implementacje efektów, niestandardowe implementacje modułu renderowania i inne zasoby specyficzne dla platformy.

Podsumowanie

Wieloplatformowe narzędzia i platformy do tworzenia aplikacji mobilnych platform Xamarin zapewniają kompleksowe rozwiązanie dla aplikacji klienckich B2E, B2B i B2C, zapewniając możliwość udostępniania kodu na wszystkich platformach docelowych (iOS, Android i Windows) oraz pomaga obniżyć całkowity koszt 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ą.