Skip to main content


XEP is a lightweight API that provides high-performance .NET technology for persisting simple to moderately complex object hierarchies. XEP projects the data in .NET objects as persistent events (database objects that store a persistent copy of the data fields) in an InterSystems IRIS® database. XEP is optimized for applications that must acquire and persist data at the highest possible speed.

InterSystems IRIS provides .NET APIs for easy database access via either objects or relational database tables. This book discusses the API for object access. See Using the InterSystems Managed Provider for .NET for relational table access.

Requirements and Configuration

The following sections provide instructions for including XEP when installing InterSystems IRIS, and for configuring your environment to use the XEP API.


  • The .NET Framework, version 2.0, 4.0, or 4.5.

  • InterSystems IRIS.

Computers that run your .NET client applications do not require InterSystems IRIS, but they must have a connection to the InterSystems IRIS Server and must be running a supported version of the .NET Framework.


  • When installing InterSystems IRIS in Windows, select the Setup Type: Development option.

  • If InterSystems IRIS has been installed with security level 2, open the Management Portal and go to System Administration > Security > Services, select %Service_CallIn, and make sure the Service Enabled box is checked.

    If you installed InterSystems IRIS with security level 1 (minimal) it should already be checked.


Your .NET project must include references to the following files. Different versions of these files are located in appropriately named subdirectories of <install-dir>/dev/dotnet/bin (for example, <install-dir>/dev/dotnet/bin/v4.0.30319 contains the file for .NET 4.0). Use the appropriate files for the release that will be used to compile your project:

  • InterSystems.Data.XEP.dll — is provided for the 4.0 and 4.5 releases of the .NET Framework.

  • InterSystems.Data.IRISClient.dll — is provided in three different versions, one for each supported release of the .NET Framework.

In order to run XEP applications:

  • The InterSystems IRIS User namespace must exist and must be writable.

  • Your PATH environment variable must include <install-dir>/bin. If your PATH includes multiple instances of <install-dir>/bin (for example, if you have installed more than one instance of InterSystems IRIS) only the first one will be used, and any others will be ignored.

XEP Sample Applications

XEP sample applications are available from GitHub (see “Downloading Sample Applications from GitHub”). To run them, compile the project as described in the ReadMe file. The project includes the following components:

  • RunAll.cs — is a program that runs all of the other sample applications in sequence. Run this application with command line argument -h for a list of available command line options.

  • Coverage.cs — tests basic functionality such as connecting, importing a schema, storing, querying, updating and deleting XEP events. It also exercises most of the supported data types.

  • SingleString.cs — is the most basic XEP test program. It connects to the database, imports a simple class containing only one string field, then stores and loads a number of objects corresponding to that class.

  • FlightLog.cs — is an example that demonstrates the XEP full inheritance model. It tracks airline flight information such as times, locations, personnel, and passengers.

  • Benchmark.cs — is a performance test for the XEP API.

  • IdKeys.cs — extends the Benchmark test by adding the composite IdKey feature.

  • Threads.cs — is a multithreaded XEP test program.

The sample package includes supporting files that provide test data for the applications. See the help files included in the sample package for detailed documentation of these programs.

RunAll.cs connects to InterSystems IRIS with the default superserver port value (see “DefaultPort” in the Configuration Parameter File Reference), but you can specify a different superserver port as a command line parameter.