Out-of-the-Box Modular Architecture
The Traditional Approach
You need to assume multiple roles in order to design a rock-solid architecture to fully support data access, business logic, UI, modularization, extensibility, etc.
Determining the best place to write code for specific behaviors can cause numerous development headaches. To lower costs and improve productivity, learning and following a well-designed architecture is always recommended. And of course, any such architecture should be flexible enough to allow a project to evolve as needs dictate, without painting you and your team into a corner.
The XAF Advantage
A proven modularized Model/View/Controller (MVC) architecture with support for distributed scenarios (N-tier).
XAF is based on a fully-documented and easy-to-use architecture. The placement of every piece of custom functionality is clear. With XAF, you can easily create applications that run on both Windows and the Web with a common code base, which means less work to evolve and maintain it over time. Extensibility is guaranteed because XAF is a highly customizable modularized framework.
As you can see in the following diagram, XAF is built on a standard three tier architecture.
ORM Layer (Entity Framework or XPO)
The ability to use object-based data handling, instead of direct interaction with databases, leads to a layer that provides mapping of objects into database tables (Object-Relational Mapping tool). You can choose either Entity Framework (EF) or eXpress Persistent Objects (XPO) to map your coded or designed data model to a database.
Business Class Library
The eXpressApp Framework comes with a Business Class Library - a set of business classes that you will need most frequently. You can use these classes directly, modify our implementation or create your own replacements. This library also includes a number of interfaces to provide proper interaction of your data with some XAF modules. You can implement these interfaces if our implementation doesn't suit your needs.
Of course it's possible that other users will create their own domain specific extension libraries and make them available to developers.
Application Specific Business Classes
These are the business classes that are written specifically for a given application. They can reuse the Business Class Library functionality or be implemented stand-alone.
Controllers are objects that manage your application's flow. They are also responsible for end-user interaction. Even the simplest applications built with the eXpressApp Framework use a number of built-in Controllers from the Controller Library. These default Controllers are primarily responsible for data management. With their help, you can add new records, delete existing ones, perform a full text search, etc.
Application Specific Controllers
These are the Controllers that are written to provide a custom functionality in your application. They can reuse or modify Controllers from the Controller Library or be implemented stand-alone.
Views / Reports
Views are the user interface representations of (potentially editable) data, while reports are representations for the purpose of reporting to screen, paper, web or export formats. Views can be created automatically by eXpressApp Framework at runtime (there's no code generation in eXpressApp Framework!), while reports are typically created manually, also at runtime.
The Application Model is a collection of information on which the automatic mechanisms in the eXpressApp Framework, including UI generation, are based. Sources of model data include metadata queried from business classes and Controllers, default information from standard or custom modules included in a given application, and configuration files on various levels. An important part of the development work for an eXpressApp Framework application is to modify the Application Model specifying options and parameters for the automatic mechanisms.
WinForms / ASP.NET
Windows Forms and ASP.NET are the two user interface platforms that are currently supported.