Application Solution Structure
- 4 minutes to read
An XAF solution contains multiple projects. This topic describes these projects and supported platforms.
The Solution Wizard allows you to create a solution for the following frameworks:
.NET 5+: WinForms, ASP.NET Core Blazor, and Web API applications
.NET Framework 4.5.2+: WinForms and ASP.NET Web Forms applications
Your solution may not include projects for all supported platforms. You can select platforms for the current solution in the Solution Wizard. The following image shows this wizard, which creates a .NET Framework XAF WinForms application.
Projects
Module Project (.NET Framework & .NET 5+)
Use this project to implement UI-independent application elements. For example, you can define a Business Model and implement UI-independent Controllers. Your applications can use the same Business Model and share Controllers from this project.
Use the Add New Item dialog to declare a new class in the Module project.
Utilize a special template to add a Business Object, View Controller, or Window Controller.
WinForms Module Project (.NET Framework & .NET 5+)
Use this project to add elements for the WinForms application version. You can implement a Controller that includes WinForms-specific code or an editor that creates a WinForms control.
ASP.NET Web Forms Module Project (.NET Framework)
Use this project to add elements for the ASP.NET Web Forms application version. You can implement a Controller that includes ASP.NET Web Forms-specific code or an editor that creates an ASP.NET Web Forms component.
Blazor Module Project (.NET 5+)
Use this project to add elements for the ASP.NET Core Blazor application version. You can implement a Controller that includes ASP.NET Core Blazor-specific code or an editor that creates an ASP.NET Core Blazor component.
WinForms Application Project (.NET Framework & .NET 5+)
Contains code specific to your application’s WinForms version. Usually, only the Program.cs (Program.vb) and WinApplication.cs (WinApplication.vb) files can be modified. Do not add business classes, editors, or Controllers to this project because XAF cannot automatically find these items and include them in your application. Use Module projects for this purpose.
ASP.NET Web Forms Application Project (.NET Framework)
Contains code specific to a browser-based interface. Usually, only the Global.asax.cs (Global.asax.vb) and WebApplication.cs (WebApplication.vb) files can be modified. Do not add business classes, editors, or Controllers to this project because XAF cannot automatically find these items and include them in your application. Use Module projects for this purpose.
Blazor Application Project (.NET 5+)
Contains code specific to your application’s ASP.NET Core Blazor version. Usually, only the Program.cs, BlazorApplication.cs, and Startup.cs files can be modified. Do not add business classes, editors, or Controllers to this project because XAF cannot automatically find these items and include them in your application. Use Module projects for this purpose.
Web API Application Project (.NET 5+)
Contains Web API settings. See the following topic for more information on how to add a Web API service to your application: Backend Web API Service (CTP).
Important Notes
WinForms, ASP.NET Web Forms, ASP.NET Core Blazor, and Web API applications can be built based on the same Business Model, business logic, and Controllers when all applications use the same set of modules.
If you do not need the WinForms, Blazor, Web API, or ASP.NET Web Forms application version, do not include the corresponding project in the solution. A straightforward application can contain two projects: the application project and the module.
You can also create a platform-specific solution with three projects: an application project, a module project, and a UI-specific module project. For Web API projects, platform-specific solution contains two projects: the Web API application project and the module.
Optionally, your XAF solution may include the Application Server Project, Workflow Server Project, and any other custom projects.