A classic n-tier .NET solution for managing companies and their employees, demonstrating how multiple client applications (WPF desktop, ASP.NET MVC web) can share the same business logic and data access layers through a REST Web API.
| Project | Type | Role |
|---|---|---|
DTO |
Class library | Shared data transfer objects (Company, Employee) |
EmployeeDataAccess |
Class library | Entity Framework context, entities, repositories, and entity↔DTO mappers |
BusinessLogic |
Class library | Business rules (CompanyBLL, EmployeeBLL) |
WebAPI |
ASP.NET Web API | REST endpoints (CompanyApiController, EmployeeApiController) |
WebGUI |
ASP.NET MVC | Web frontend consuming the API (Company/Employee/Home controllers) |
EmployeeWPF |
WPF | Desktop client |
TestApp / testAPI |
WPF / Web API | Test harness clients |
EmployeeWPF (desktop) WebGUI (ASP.NET MVC)
\ /
\ /
WebAPI (ASP.NET Web API, REST)
|
BusinessLogic (BLL)
|
EmployeeDataAccess (EF, repository + mapper pattern)
|
SQL Server (Entity Framework, seeded via EmployeeInitializer)
Key patterns: repository pattern, DTO mapping between persistence entities and transport objects, and strict layering - clients never touch the database directly.
- C# / .NET Framework 4.8
- ASP.NET Web API 2 & ASP.NET MVC 5
- Entity Framework (code-first with database initializer/seeding)
- WPF
- IIS Express / Visual Studio or JetBrains Rider
- Open
EmployeeApp.slnin Visual Studio or Rider. - Set
WebAPIas the startup project and run it (IIS Express). EF creates and seeds the database on first run. - Start
WebGUIand/orEmployeeWPFto use the web or desktop client against the API.