The frontend of an app does not open an iModel directly. Instead, it "connects" to an IModelDb that is managed by a backend through an IModelConnection. IModelConnection is an abstract class that encapsulates the IModelDb on the frontend.

Various subclasses of IModelConnection are used depending on the type of connection:

CheckpointConnection is used for readonly web frontends connected over HTTP to Checkpoint iModels opened by cloud-based backends. A CheckpointConnection is initiated via the static CheckpointConnection.openRemote method. Due to the stateless nature of HTTP connections, it is important to understand that the backend servicing calls to a CheckpointConnection can change during a session, and requests may be directed to more than one backend at the same time. For this reason, CheckpointConnections may only use Checkpoint iModels, so identical copies of the checkpoint will be found on all equivalent backends.

A SnapshotConnection can be used for readonly connections to a Snapshot iModel. It uses RPC, so may be used from web or native applications.

A BriefcaseConnection may be used to connect to an editable BriefcaseDb. A BriefcaseConnection connects to a dedicated backend through Ipc. That means to create a BriefcaseConnection, the backend must have an active IpcHost and the frontend must have an active IpcApp. This will be true for NativeApps, the various MobileApps, and WebEditApps.

You can create a BlankConnection to show Views from sources other than an iModel.

Last Updated: 15 June, 2021