About eXpressApp Framework (XAF)

Concentrate on business problems without being distracted by the general activities of application development.

eXpressApp Framework (XAF) is a modern and powerful application framework allowing simultaneous ASP.NET and WinForms development. Its modular design allows developers to choose from the built in modules, or create their own, to build applications faster and in a more robust manner than they do today. The scaffolding of the UI and database allows the developer to concentrate on the specific business problem at hand without being distracted by the general activities of application development, whilst the modular design of XAF facilitates a plug and play metaphor for common activities such as security and reporting.

eXpressApp Framework (XAF) Key features include:

  • UI and database scaffolding
  • Multi platform support (ASP.NET and WinForms)
  • Modular design with many built-in modules provided out of the box, along with support for user-generated modules
  • Designers to facilitate changes to underlying XML files
  • Built in support for security, including Active Directory support
  • Business object definition via interfaces

Three-Tier Architecture
XAF is built on a standard three tier architecture, with eXpressPersistent Objects providing the storage layer, a mixture of built in XAF business classes and the developer's own classes providing the business layer and XAF's scaffolding plus the developer's extensions, providing the UI layer.

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). In the eXpressApp Framework, such a layer is provided by the eXpress Persistent Objects (XPO). The XPO provides reliability and flexibility in storing the information, proven by years of existence as a standalone product. Its simplicity comes from the fact that you needn't learn the details of how the data is stored.

Business Class Library
The eXpressApp Framework comes with the Business Class Library - a set of business classes that you will need most frequently. You can use these classes directly, modify the implementation or create your own replacements. This library also includes a number of interfaces you will need to provide proper interaction of your data with some XAF modules. You can implement these interfaces if the implementation doesn't suit your needs. Of course it's possible that others 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.

Controller Library
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 mostly responsible for data management. With their help, you can add new records, delete existing ones, perform 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, though also at runtime.

Application Model
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 and thereby to specify 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.

Object-Relational Mapping tool
When building a business application, you will ultimately have to deal with data. If you are using the eXpressApp Framework, you don't actually have to create a database in a DBMS, customize tables, fields, etc. And you won't need to use low-level ADO.NET constructs to access your data. The eXpressApp Framework is based on an object-based data handling approach. Instead of direct interaction with databases, you have a clean, simple, object-oriented API to perform data storage. To provide mapping of objects into database tables the eXpressApp Framework uses the eXpress Persistent Objects (XPO). XPO is the Object/Relational Mapping product, which has been available separately for a few years. This mature system forms the basis of the data storage functionality in the eXpressApp Framework. It provides compatibility with a number of database backends, an advanced criteria system for data selection and much more. Full information about XPO can be found on its own product page - suffice it to say that its stability provides a great platform for the eXpressApp Framework to live on.

Business Class Library
There are many common kinds of objects that tend to be used in many applications, and some of them are so basic that DevExpress decided to include them in the standard distribution of the eXpressApp Framework. DevExpress have also chosen a structure for the implementation of these objects that allows you to supply your own implementation for any or all of them and derive your own objects from them, so you can choose yourself what part of the library you find useful for your projects while the part you don't use isn't in the way.

Customizable UI Model
All the information that the eXpressApp Framework uses to build user interfaces comes from the Application Model. For instance, when the framework creates a grid editor that displays a list of Contact objects, information for each column's visibility, location, caption and other settings is taken from the Application Model. When you run an application project (Windows Forms or ASP.NET application), the Application Model is created, and then used to create UI elements. The Application Model provides details on business classes, Controllers, Actions, Property Editors and other elements that provide or influence application functionality. All the information loaded to the Application Model is represented as metadata - data defined via a neutral format that can be adapted to any target platform. So, the Application Model represents one the mechanisms that enable UI-independent code to be used. Initially, Application Model information is collected from the code. You can customize and extend this information in code of your own eXpressApp Framework modules. The resulting Application Model can be customized at design time via the Model Editor. The changes made at design time are saved to definition files. You can produce these files in any project in your application. For instance, you can make UI-specific changes by customizing the Model in appropriate UI-specific projects. Moreover, an application's administrator can invoke the Model Editor and make required changes as well. As a result, when the application runs, all the changes saved to definition files are applied to the Application Model in a certain order. The changes made by end-user can also be saved to a separate definition file. This file is read last when the application runs. The multi-layer structure of the Application Model allows a developer, application administrator and end-user to customize the application independently. The Model Editor is a tool that runs directly inside Visual Studio or at runtime as a separate window, and allows you to edit model information. It has a lot of advanced functionality helping you provide the required customizations.

Automatic Data Representation
When building a business application using the eXpressApp Framework, you don't have to create forms to represent data, arrange numerous controls, write code to bind these controls to data, and manage this data by interacting with that DBMS you chose. If you're using the eXpressApp Framewok, you only need to design your business model. The framework then handles data server management and automatically generates UI for the required platform. This makes it easy to maintain applications, since if you change data, you don't have to modify numerous forms and/or web pages - it is done automatically. To represent business object details, a Detail View is autogenerated. Detail Views consist of Property Editors - items that present property data via a particular control. A vast range of Property Editors for different data types is supplied with XAF. Some of them are used to represent data by default. Other Property Editors can be assigned when requires. In addition, you can implement custom Property Editors, for instance, for specific data types or to use a specific control.Note that Property Editors are supplied for the ASP.NET platform as well. To show object collections, the framework generates List Views for each registered business class. In a UI, List Views are represented via List Editors. As Property Editors, List Editors represent mediators between data (object collections) and a particular contol. There are several List Editors supplied with XAF for Windows Forms and ASP.NET applications. However, you are free to implement your own List Editors to satisfy your requirements. In addition to using required editors, you can customize the editors layout in a Detail View, column set in a List View and set different options for Views in whole. To do this, just customize the Application Model using the Model Editor. If there is something you cannot achieve in the Model Editor, you can do this in code.

Modularized Architecture
In the eXpressApp Framework, every piece of functionality must be enclosed into a module. A module in the eXpressApp Framework is a special kind of assembly that contains a class derived from a certain base class. This structure provides a common hook for the eXpressApp Framework to recognize an assembly as a module, to provide management information to that module and in turn to request details about what's contained in the module. When an application runs, it includes only those features that are implemented in the referenced modules.

The eXpressApp Framework ships with a number of ready-to-use modules:

  • System Module - Contains basic features that are common for business applications (object filtering, creating, deleting, navigating, etc.). This module is added to each XAF application by default, which makes even an empty application full of essential features.
  • Audit Trail Module - Allows you to audit and log information on changes made to persistent objects when the application is running.
  • Chart Module - Contains List Editors that allow you visualize data via the XtraCharts library developed by DevExpress. The Chart module adopts controls from this library for XAF applications, so you can visualize your data with ease.
  • Clone Object Module - Provides ability for end-users to quickly create similar objects by cloning them and changing the required properties.
  • Conditional Appearance - The Conditional Appearance module allows you to dynamically configure a UI, and is designed to supersede the Conditional Formatting and Conditional Editor State modules. UI customizations are performed on the basis of predefined business rules.
  • Conditional Editor State Module - Allows you to dynamically configure a UI to simplify user data entry and provide a simple workflow
  • Conditional Formatting Module - Allows you to highlight List View records or cells that satisfy specified criteria.
  • File Attachments Module- Includes Property Editors and Controllers to attach, save, open and download files in Windows Forms and ASP.NET Web applications.
  • HTML Property Editor Module - Contains the Property Editors which allows end-users to format string properties' values using Hyper Text Markup Language (HTML).
  • KPI Module - Allows you to create and manage Key Performance Indicators which are quantitative measurements of dynamic business processes.
  • Pivot Chart Module - Provides the capability to analyze data via the XtraCharts, ASPxPivotGrid and XtraPivotGrid controls.
  • Pivot Grid Module - Contains List Editors, that allow you to analyze data via the XtraPivotGrid and ASPxPivotGrid controls. The Pivot Grid module adopts these controls for XAF applications, so you can add data analysis functionality with ease.
  • Printing Module - Uses the XtraPrinting library to provide an ability to set up printing, preview and print Views in Windows Forms XAF applications.
  • Reports Module - Uses the XtraReports library to provide end-user interaction with reports in Windows Forms and ASP.NET XAF applications. Allows a user to design, customize, filter, view, export and print reports.
  • Scheduler Module - Uses the XtraScheduler and ASPxScheduler control suites to display event-specific objects in Windows Forms and ASP.NET XAF applications.
  • Script Recorder Module - Supplies a script recorder for the EasyTest functional testing engine shipped with the eXpressApp Framework.
  • Security Module - Supplies various security system strategies and authentication implementations. Allows you to assign different permissions to different users or user groups. Supports custom Security strategies and authentication implementations if they use the Business Class Library's interfaces.
  • TreeList Editors Module - Uses the XtraTreeList controls suite to display object lists as a tree in XAF applications.
  • Validation Module - Contains a powerful and flexible validation engine and a large number of ready-to-use validation rule types. Allows you to create rules both at runtime or design time and check them when required.
  • View Variants Module - Allows you to create several variants of a View so that end-users can select the required one.

By default, an XAF solution with both Windows Forms and ASP.NET application projects includes three modules. You are not limited to them. Generally, you may have one feature per module, so that you then use individual custom modules in other XAF applications. It is very easy to create your own modules for the eXpressApp Framework and thereby to create and distribute your own reusable functionality.

Easy Functionality Extension
The eXpressApp Framework automatically generates the UI based on your business model. This UI contains built-in features to work with data: filtering, reporting, navigating and so on. These features may be sufficient for a simple business application. However, complex applications may demand a more extensive functionality set. To implement additional features, the eXpressApp Framework provides the Controllers and Actions concept. This concept allows the implementation of both internal application features and end-user interaction. Controllers are the objects that provide access to the main elements in a window at any stage of their life cycle. For the most part, Controllers serve as containers for Actions. Like XPO classes are abstractions of data tables, Actions are abstractions of end-user interaction elements - buttons, menus, etc. An Action specifies the visual representation of a UI element and its associated code. So, you don't have to deal with low-level implementation details of particular editors, toolbar systems, context menus or anything else. And at the same time, this higher-level of abstraction allows the same Action to be used in both Windows Forms and ASP.NET Web applications. The Controllers that represent the basic functionality are contained in the System Module, which is added to every XAF application by default. So, even the applications that have the only business model implemented include a lot of functionality. The default Controllers are mostly responsible for data management. With their help, you can add new records, delete existing ones, perform full text search, etc. To extend your application's functionality, add the required Controllers and Actions. In addition, you can modify the default features by replacing the corresponding Controllers with your own.

Security System
Security is very important to every multi-user application, but at the same time it can be complex to implement, as it influences so many design decisions across an application. The eXpressApp Framework has been built from the ground up with security considerations in mind. To enable the security system in your application, add the Security Module to your application. This module allows you to use one of the following authentication strategies:

Standard Authentication Strategy
An end-user is authenticated by the credentials specified in a logon window.

Active Directory Authentication Strategy
Uses the WindowsActiveDirectory service to obtain information on a user. The requirements for security are seldom the same across a number of applications. It supplies two security system strategies:

  • Simple Security Strategy - There are two user types: a user and an administrator. Users have access to any operation with all objects, except for User objects.Administrators have access to all operations on all objects, including the User objects.
  • Complex Security Strategy - A user is assigned a role(s) that is characterized by a set of permissions.

The Security Module is agile enough to let you implement custom authentication and autherization strategies and certain classes used in them. Of course, the Security Module works with both Windows Forms as well as ASP.NET target platforms.

Data Validation
There are lots of mistakes an end user can make when entering or editing data, and often it's important to catch related issues as early as possible. The eXpressApp Framework includes a powerful and flexible validation engine and a large number of readily usable validation rules. The system is dynamic, so you can extend it with your own rule definitions and basically implement any business rule checking you need. Validity of data is not a clearly defined status, so the eXpressApp Framework uses a system of context based checks. Validity checking can either be triggered by the user manually or it will be performed by the framework automatically at specific points. Once more this is extensible, so you can implement your own business logic in validator classes and your own (business) processes can leverage the checking functionality at any point. Like the rest of the eXpressApp Framework, data validation works independently from the user interface. Once defined, your business rules will be adhered to, whether you're targetting the Windows Forms or the ASP.NET frontend, or whether you are checking them in a totally UI independent data import process.

User Interface Localization
Localization is one of the centralized features the eXpressApp Framework can offer as a result of having the model at the core of the configuration subsystem. Every application based on the eXpressApp Framework is easily localizable using the Model Editor. Advanced linking of property values in the model makes localization very efficient - you never need to change things like field captions in more than one place, unless they are actually supposed to be different. The Model Editor can be used to configure and edit any number of different cultures. By default, the application will run with the culture that is configured for the current system (if that culture is available, of course), but for development purposes, a static culture can easily be activated.

The reporting functionality in the eXpressApp Framework is represented by the Reports Module. This module is based on the separate XtraReports product. XtraReports has been available separately for several years and it is a mature reporting system with lots of advanced features like an end-user designer (please note that this is currently a Windows Forms only feature), report creation wizards, built-in previews, data parametrisation and mail merging, to name just a few. XtraReports has the ability to create reports in many different formats, including HTML and PDF. As a result, a report can as easily be viewed in Windows Forms as it can in ASP.NET applications.

For data analysis functionality, the eXpressApp Framework supplies the PivotChart Module, which has the Windows Forms and ASP.NET versions. This module allows end-users to analyze data by using a combination of DevExpress XtraCharts, XtraPivotGrid and ASPxPivotGrid controls. These controls are available separately. They offer a big range of features like filtering, top value display, hierarchical value arrangement on chart axes, grand and group totals, etc.

To print the data presented in an application, the eXpressApp Framework offers you the following capabilities. To print data content in your Windows Forms applications easily, the eXpressApp Framework ships with the Printing Module. This module uses the tools provided by the XtraPrinting library - one of the products that has been available for several years and has proved its usability and quality. The Preview window shown by the Reports Module to represent a report contains tools for printing. The Windows Forms version of the PivotChart Module adds buttons ( and ) for previewing and printing the current analysis.

Visual Studio Integration
A lot of effort has gone into usability in the eXpressApp Framework, and to make things as easy as possible, DevExpress have integrated the product with Visual Studio in many places. For example, the Module and Application Designer gives an overview of the configuration of a Module or Application, allows property modification to configure Module parameters and supports drag&drop to activate additional Modules. The eXpressApp Framework has been designed to leverage the functionality of Visual Studio as much as possible. For example, to edit the templates that are used by the Windows Forms and ASP.NET projects for forms and pages, the built-in standard designers can be used. This is important for developers, because they don't have to get used to a new tool or new designer paradigms to do their work - changing a template is as easy as designing a form or a web page in Visual Studio.  In some areas, DevExpress have chosen to extend the standard functionality of Visual Studio. One obvious example of this are the templates DevExpress deliver to create new application solutions and a number of different project items quickly and easily. Another example is the integration of the Model Editor, which can be brought up directly from the context menu of the Solution Explorer. With the eXpressApp Framework, a developer never needs to leave Visual Studio!