[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Collapse]WPF Controls
 [Expand]What's Installed
 [Expand]Common Concepts
 [Expand]MVVM Framework
 [Expand]Controls and Libraries
 [Collapse]Scaffolding Wizard
   Getting Started
    System Requirements
    Common Application Architecture
    Functionality Overview
    View Types
    Structure of Classes in a Scaffolded Application
    Unit of Work Policy
  [Expand]Data Access Layer
   UI Generation
  Redistribution and Deployment
  Get More Help
 [Expand]API Reference
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Report and Dashboard Server
[Expand]eXpressApp Framework
[Expand]eXpress Persistent Objects
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

Common Application Architecture

This topic describes the common application architecture generated by the Scaffolding Wizard.

Below is a diagram that illustrates this application architecture.


Most of the implementation of the Data Access, Data Model and View Model layers is kept in separate assemblies: DevExpress.Mvvm.v18.2.DataModel, DevExpress.Mvvm.v18.2.DataModel.EF6, DevExpress.Mvvm.v18.2.DataModel.WCF and DevExpress.Mvvm.v18.2.ViewModel.

The Test Data Provider and the Unit Tests parts are not generated by the Scaffolding Wizard.

The Data Access Layer is a storage-dependent set of classes that provides access to persistent data.

The Data Model Layer is a Repository/Unit Of Work pattern. The Scaffolding Wizard generates two implementations of the Data Model Layer interfaces.

  • The Runtime implementation uses a Data Access Layer (DbContext) to obtain and manipulate real persistent data. There are two possible implementations of the Runtime Data Layer: for the Entity Framework and for the WCF Data services.
  • The Design-time implementation provides sample data that is used in views at design-time.

The View Model Layer is the core of an application and contains several view models that are initialized with the unit of work instance and provide all user interaction logic. View models are Data Access- and View layers-independent and can work with either runtime or design-time implementations of the Data Model Layer. You can switch your runtime data provider to another data access technology (for example, from the Entity Framework to the WCF Data Services) without affecting view models.

The View Layer contains collection and detail views. The Scaffolding Wizard can generate several types of Views (see View Types).

Is this topic helpful?​​​​​​​