A robust, distributed desktop application architecture consisting of a WPF (Windows Presentation Foundation) client and an ASP.NET Core Web API backend.
This project was built to demonstrate enterprise-level .NET engineering practices, strictly separating the user interface (Desktop Client) from business logic and data persistence (RESTful API).
This architecture was designed to showcase modern C# engineering standards. Key technical milestones include:
- Distributed System Architecture: Decoupled the desktop client from direct database access. The WPF app communicates exclusively via asynchronous HTTP requests to a secure ASP.NET Core REST API.
- MVVM Pattern Mastery (WPF): Strictly adhered to the Model-View-ViewModel pattern in the desktop application to ensure total separation of concerns, testability, and UI responsiveness. Implemented
INotifyPropertyChangedand customICommandinterfaces. - RESTful API Design (ASP.NET): Built a scalable backend using ASP.NET Core controllers, handling routing, status codes, and JSON serialization.
- Asynchronous Programming: Extensive use of
async/awaitandTaskthroughout the entire data flow (from UI button clicks to database queries) to prevent UI thread blocking. - Data Access (Entity Framework Core): Implemented EF Core for database operations using the Code-First approach, managing migrations and relationships cleanly.
- Dependency Injection: Utilized the built-in .NET IoC container in the API for injecting database contexts and services.
Frontend (Client):
- Framework: WPF (.NET 10.0)
- Language: C#
- Architecture: MVVM (Model-View-ViewModel)
- Libraries:
Newtonsoft.Json/System.Text.Json,HttpClient
Backend (API):
- Framework: ASP.NET Core Web API
- Language: C#
- ORM: Entity Framework Core
- Database: MariaDB
- Documentation: Swagger / OpenAPI
The solution is divided into two main projects. To run the application locally, you must start the API backend first, followed by the WPF desktop client.
- IDE (with .NET desktop development and ASP.NET workloads)
- .NET 10.0 SDK
- A local SQL server running
- Clone the repository:
git clone https://github.com/JUSICK/ASP.NET-WPF.git - Open the
.slnx(Solution) file in your IDE. - Set the CsFullStackApp project as the Startup Project.
- Open
appsettings.jsonand ensure theMariaDbConnectionpoints to your local database instance. (IF you are opening using CLI - dotnet restore for installing NuGet packages) - Open the Package Manager Console and update the database (FOR Visual Studio):
Update-Database - Open the CLI and update the database (FOR Rider JetBrains):
cd .\MyFullStackAppApi\ dotnet ef database update