Xafari Report Server

Xafari Report Server is a special case of using Xafari Server, it provides remote reporting. This functionality is supplied by Xafari.Reports.MQ and Xafari.Reports.Server modules. Xafari.Reports.MQ module implements interfaces of the Xafari.MQ module and provides Message handling and reporting, i.e. the result of handling the Message is a Report. Message Handler blocks the Message in the database and changes the Message status to "Processing". Then the Report is generated and saved in the database, for these purposes, Xafari Reports support the persistence.

The User generates a Message, Message Handler generates the Report using the Security Permissions of that User. This task is provided by the MQSecuredObjectSpaceProvider class, that registers the User in a new thread and uses appropriate Permissions. Multithreaded interaction with the database is provided by the connections pool are limited.

Reports can be generated both locally and on a remote server (see Xafari Server. Operation Modes topic). Moreover, from the point of view of the user, the application behaves the same way.

When generating Reports localy, the so-called internal Message Queue is operating, it is stored in the computer's memory and Reports are generated in the application. After closing the application the Queue will be deleted, and the Reports stored in the database.

In dedicated server mode, reports are generated on a dedicated server, freeing up computer resources.

Report Server is used in the Northwind DC Win demo application.

To apply Xafari Report Server functionality, execute the following steps:

  • Implement and test the Report.
  • Add Xafari.MQ, Xafari.MQ.Administration, Xafari.Reports.MQ.Win (or Web), Xafari.Reports.Server to Module Project.
  • Starts the Report Server via the RunCmd utility (see Xafari Server. Dedicated Mode).
  • To set server operation mode, add the special flag to the app-config:
  • xml

    <add key="UseDedicatedXafariServer" value="False" />

  • True specifies the dedicated server mode.
  • False specifies the local server mode.
  • Start application.

The framework will suggest either to wait for a generate Report, or put the generating in the background mode. If you select waiting, then the resulting Report will open automatically. If you select the background mode, then you can continue to work with the app. The result of the successful handling of the Message is the generated Report, which can be viewed in the Saved reports, or in the navigation bar.

Saved report list shows the stored Report, when you view the saved Report, it is not generated again.


If the report is not persistence, it cannot be stored in the database. These reports will be generated in the application, and not on the server.