Udostępnij przez


Samouczek: modernizacja aplikacji WPF

Istnieje wiele sposobów modernizacji istniejących aplikacji klasycznych przez zintegrowanie najnowszych funkcji systemu Windows z istniejącym kodem źródłowym zamiast ponownego zapisywania aplikacji od podstaw. W tym samouczku zapoznamy się z kilkoma sposobami modernizacji istniejącej aplikacji biznesowej WPF przy użyciu następujących funkcji:

  • .NET Core 3
  • Kontrolki XAML platformy UWP z XAML Islands
  • Karty adaptacyjne i powiadomienia systemu Windows
  • Wdrażanie MSIX

Ten samouczek wymaga następujących umiejętności programistycznych:

  • Doświadczenie w tworzeniu aplikacji desktopowych Windows z użyciem WPF.
  • Podstawowa wiedza na temat języka C# i XAML.
  • Podstawowa wiedza na temat platformy UWP.

Przegląd

Ten samouczek zawiera kod prostej aplikacji biznesowej WPF o nazwie Contoso Expenses. W fikcyjnym scenariuszu samouczka, Contoso Expenses to wewnętrzna aplikacja używana przez menedżerów Contoso Corporation do śledzenia wydatków zgłaszanych przez ich pracowników. Menedżerowie są teraz wyposażone w urządzenia z obsługą dotykową i chcą korzystać z aplikacji Contoso Expenses bez myszy lub klawiatury. Niestety bieżąca wersja aplikacji nie jest przyjazna dla dotyku.

Firma Contoso chce zmodernizować tę aplikację przy użyciu nowych funkcji systemu Windows, aby umożliwić pracownikom wydajniejsze tworzenie raportów wydatków. Wiele funkcji można łatwo zaimplementować, tworząc nową aplikację platformy UWP. Jednak istniejąca aplikacja jest złożona i jest wynikiem wielu lat opracowywania przez różne zespoły. W związku z tym ponowne zapisywanie go od podstaw przy użyciu nowej technologii nie jest opcją. Zespół szuka najlepszego podejścia do dodawania nowych funkcji do istniejącej bazy kodu.

Na początku samouczka aplikacja Contoso Expenses jest skierowana na .NET Framework 4.7.2 i korzysta z następujących bibliotek zewnętrznych:

  • MVVM Light — podstawowa implementacja wzorca MVVM.
  • Unity, kontener iniekcji zależności.
  • LiteDb , osadzone rozwiązanie NoSQL do przechowywania danych.
  • Bogus, narzędzie do generowania fałszywych danych.

W tym samouczku ulepszysz aplikację Contoso Expenses przy użyciu nowych funkcji systemu Windows:

  • Migrowanie istniejącej aplikacji WPF do platformy .NET Core 3.0. Spowoduje to otwarcie nowych i ważnych scenariuszy w przyszłości.
  • Użyj wysp XAML do hostowania InkCanvas i MapControl opakowanych kontrolek dostarczonych przez zestaw narzędzi Windows Community Toolkit.
  • Użyj wysp XAML do hostowania dowolnej standardowej kontrolki XAML platformy UWP (w tym przypadku elementu CalendarView).
  • Integrowanie kart adaptacyjnych i powiadomień systemu Windows z aplikacją.
  • Spakuj aplikację przy użyciu pliku MSIX i skonfiguruj potok CI/CD na platformie Azure DevOps. Dzięki temu będziesz mógł automatycznie dostarczać nowe wersje aplikacji testerom i użytkownikom natychmiast po ich udostępnieniu.

Wymagania wstępne

Aby wykonać ten samouczek, na komputerze dewelopera muszą być zainstalowane następujące wymagania wstępne:

Upewnij się, że zainstalowano następujące obciążenia i funkcje opcjonalne w programie Visual Studio 2019:

  • Programowanie aplikacji desktopowych .NET
  • Programowanie na platformie uniwersalnej systemu Windows
  • Zestaw Windows SDK (10.0.18362.0 lub nowszy)

Pobieranie przykładowej aplikacji Contoso Expenses

Przed rozpoczęciem samouczka pobierz kod źródłowy aplikacji Contoso Expenses i upewnij się, że możesz skompilować kod w programie Visual Studio.

  1. Pobierz kod źródłowy aplikacji z zakładki Wydań w repozytorium warsztatówAppConsult WinAppsModernization . Bezpośredni link jest https://github.com/microsoft/AppConsult-WinAppsModernizationWorkshop/releases.
  2. Otwórz plik zip i wyodrębnij całą zawartość do katalogu głównego dysku C:\ . Spowoduje to utworzenie folderu o nazwie C:\WinAppsModernizationWorkshop.
  3. Otwórz program Visual Studio 2019 i kliknij dwukrotnie plik C:\WinAppsModernizationWorkshop\Lab\Exercise1\01-Start\ContosoExpenses\ContosoExpenses.sln , aby otworzyć rozwiązanie.
  4. Sprawdź, czy możesz kompilować, uruchamiać i debugować projekt Contoso Expenses WPF, naciskając przycisk Start lub CTRL + F5.

Wprowadzenie

Gdy już masz kod źródłowy przykładowej aplikacji Contoso Expenses i możesz potwierdzić, że można ją skompilować w programie Visual Studio, możesz rozpocząć samouczek:

Ważne pojęcia

W poniższych sekcjach przedstawiono podstawowe informacje dotyczące niektórych kluczowych pojęć omówionych w tym samouczku. Jeśli znasz już te pojęcia, możesz pominąć tę sekcję.

Platforma uniwersalna systemu Windows (UWP)

W systemie Windows 8 firma Microsoft wprowadziła nowy zestaw interfejsów API w ramach środowiska uruchomieniowego systemu Windows (WinRT). W przeciwieństwie do platformy .NET Framework winRT to natywna warstwa interfejsów API, które są udostępniane bezpośrednio aplikacjom. Platforma WinRT wprowadziła również projekcje językowe, które są dodawane na wierzchu środowiska uruchomieniowego, aby umożliwić deweloperom interakcję z nim w językach takich jak C# i JavaScript, jak również C++. Projekcje umożliwiają deweloperom tworzenie aplikacji na platformie WinRT, które korzystają z tej samej wiedzy języka C# i XAML uzyskanej w tworzeniu aplikacji za pomocą programu .NET Framework.

W systemie Windows 10 firma Microsoft wprowadziła Uniwersalną platformę Windows (UWP), która jest oparta na WinRT. Najważniejszą funkcją platformy uwP jest to, że oferuje wspólny zestaw interfejsów API na każdej platformie urządzeń: niezależnie od tego, czy aplikacja jest uruchomiona na pulpicie, na konsoli Xbox One lub na urządzeniu HoloLens, możesz używać tych samych interfejsów API.

W przyszłości większość nowych funkcji systemu Windows jest uwidacznianych za pośrednictwem interfejsów API WinRT, w tym funkcji, takich jak Oś czasu, Project Rome i Windows Hello.

Pakowanie MSIX

MSIX to nowoczesny model tworzenia pakietów dla aplikacji systemu Windows. MSIX obsługuje aplikacje UWP, a także aplikacje klasyczne kompilowane przy użyciu takich technologii jak Win32, WPF, Windows Forms, Java, Electron i nie tylko. Podczas pakietowania aplikacji komputerowej w pakiecie MSIX możesz opublikować ją w sklepie Microsoft Store. Aplikacja klasyczna uzyskuje również tożsamość pakietu po jej zainstalowaniu, co umożliwia aplikacji klasycznej korzystanie z szerszego zestawu interfejsów API WinRT.

Aby uzyskać więcej informacji, zobacz następujące artykuły:

Wyspy XAML

Począwszy od systemu Windows 10 w wersji 1903, można umieszczać kontrolki UWP w aplikacjach nie-UWP przy użyciu funkcji o nazwie wyspy XAML. Ta funkcja umożliwia ulepszenie wyglądu, działania i funkcjonalności istniejących aplikacji klasycznych przy użyciu najnowszych funkcji interfejsu użytkownika systemu Windows, które są dostępne tylko za pośrednictwem kontrolek platformy UWP. Oznacza to, że można używać funkcji platformy uniwersalnej Windows, takich jak Windows Ink i kontrolek obsługujących Fluent Design System, w istniejących aplikacjach WPF, Windows Forms i C++ Win32.

Aby uzyskać więcej informacji, zobacz kontrolki platformy UWP w aplikacjach klasycznych (wysp XAML). Ten samouczek prowadzi Cię krok po kroku przez proces używania dwóch różnych typów kontrolek XAML Island.

  • InkCanvas i MapControl w Zestawie Narzędzi Społeczności Windows. Te kontrolki WPF opakowują interfejs i funkcjonalność odpowiednich kontrolek UWP i mogą być używane jak każda inna kontrolka WPF w projektancie Visual Studio.

  • Kontrolka widoku kalendarza platformy UWP . Jest to standardowa kontrolka UWP, którą będziesz hostować przy użyciu kontrolki WindowsXamlHost w Windows Community Toolkit.

.NET Core 3

.NET Core to platforma typu open source, która implementuje międzyplatformową, uproszczoną i łatwo rozszerzalną wersję pełnego programu .NET Framework. W porównaniu z pełnym programem .NET Framework czas uruchamiania platformy .NET Core jest znacznie szybszy i wiele interfejsów API zostało zoptymalizowanych.

W kilku pierwszych wersjach głównym celem platformy .NET Core była obsługa aplikacji internetowych lub zaplecza. Za pomocą platformy .NET Core można łatwo tworzyć skalowalne aplikacje internetowe lub interfejsy API, które mogą być hostowane w systemach Windows, Linux lub w architekturach mikrousług, takich jak kontenery platformy Docker.

.NET Core 3 to najnowsza wersja platformy .NET Core. Wyróżnieniem tej wersji jest obsługa aplikacji klasycznych systemu Windows, w tym aplikacji Windows Forms i WPF. Możesz uruchamiać nowe i istniejące aplikacje klasyczne systemu Windows na platformie .NET Core 3 i korzystać ze wszystkich korzyści oferowanych przez platformę .NET Core. Kontrolki platformy UWP hostowane na wyspach XAML mogą być również używane w aplikacjach Windows Forms i WPF przeznaczonych dla platformy .NET Core 3.

Uwaga / Notatka

WPF i Windows Forms nie stają się międzyplatformowe i nie można uruchomić WPF lub Windows Forms w systemach Linux i MacOS. Składniki interfejsu użytkownika WPF i Windows Forms nadal mają zależność od systemu renderowania systemu Windows.

Aby uzyskać więcej informacji, zobacz Co nowego w programie .NET Core 3.0.