Rozwiązanie prezentuje implementację architektury DDD dla aplikacji .NET MAUI z lokalną bazą SQLite oraz usługą gateway w ASP.NET Core. Projekt został przygotowany w oparciu o .NET 8 (aktualnie dostępna stabilna wersja środowiska wykonawczego) i zawiera następujące elementy:
- Domain – warstwa domenowa z agregatem
TaskItemoraz podstawową infrastrukturą DDD. - Application – logika przypadków użycia wykorzystująca Mediatr oraz kontrakty repozytoriów asynchronicznych.
- Infrastructure – implementacja repozytoriów i konfiguracja EF Core dla SQLite (klient) oraz SQL Server (gateway), a także integracja z CRM Dynamics 365.
- MauiClient – aplikacja .NET MAUI (Windows, Android, iOS, Mac Catalyst) korzystająca z kontrolki Telerik RadDataGrid oraz RadEntry/RadButton do pracy na lokalnej bazie SQLite i synchronizacji przez REST API.
- Gateway – lekka usługa WebAPI (Minimal API) działająca jako brama komunikacyjna z bazą SQL Server oraz CRM Dynamics 365 8.2 on-premise, z włączonym CORS.
- .NET MAUI
- Entity Framework Core z dostawcami SQLite oraz SQL Server
- MediatR
- Dawn.Guard do walidacji danych wejściowych
- CommunityToolkit.MVVM dla wzorca MVVM
- Telerik UI for .NET MAUI – wymagane zdefiniowanie źródła pakietów NuGet Telerik w celu pobrania bibliotek (konieczna aktywna licencja)
- Swashbuckle do generowania dokumentacji Swagger w gateway
- Workload .NET MAUI – aby zbudować aplikację należy zainstalować workload MAUI i platformowe SDK (
dotnet workload install maui). - Źródło pakietów Telerik – dodaj prywatne źródło NuGet Telerik w pliku
NuGet.Configlub globalnie (dotnet nuget add source). - Przygotowanie baz danych – gateway wymaga dostępnego serwera SQL Server; domyślny connection string
GatewayDatabasemożna zmienić wsrc/Gateway/appsettings.json. Klient MAUI tworzy lokalny plik SQLite (testappmaui.db). - Konfiguracja CRM – sekcja
Crmwsrc/Gateway/appsettings.jsondefiniuje adres Web API (BaseUrl) oraz poświadczenia (NTLM). W przypadku braku konfiguracji końcówki CRM nie są wystawiane. - Uruchomienie gateway –
dotnet run --project src/Gateway/Gateway.csproj(po zainstalowaniu SDK). Końcówki REST są domyślnie dostępne dla klientów przeglądarkowych (Angular) dzięki włączonemu CORS. - Uruchomienie klienta MAUI –
dotnet build src/MauiClient/MauiClient.csprojoraz uruchomienie na wybranej platformie (dotnet build -t:Run). Klient komunikuje się z gateway przy użyciuHttpClient; adres bazowy można nadpisać zmienną środowiskowąGATEWAY_BASE_URL.
Schemat warstwowy (DDD):
Presentation (MauiClient, Gateway)
↓
Application (MediatR, DTO)
↓
Domain (Encje, Agregaty)
↓
Infrastructure (EF Core, SQLite)
Warstwa Application nie zna implementacji repozytoriów – komunikuje się z nimi przez interfejs IRepository. Wstrzykiwanie zależności zapewniają metody rozszerzające AddGatewayApplication i AddGatewayInfrastructure.
Gateway został przygotowany jako Minimal API i może pełnić warstwę komunikacji z aplikacją Angular. Udostępnia końcówki REST (GET /tasks, POST /tasks) operujące na tych samych przypadkach użycia co aplikacja MAUI.
- Obecnie stabilne środowisko to .NET 8; po udostępnieniu .NET 10 wystarczy zaktualizować
TargetFrameworkw plikach.csproj. - Środowisko demonstracyjne nie posiada zainstalowanego SDK .NET ani workloadów MAUI, dlatego nie wykonano kompilacji ani testów automatycznych.
- Ikony pakietu dla platformy Windows są generowane w trakcie kompilacji z danych Base64, aby repozytorium nie zawierało plików binarnych.