运行时控制
在 C# 应用程序中初始化运行时环境的启动过程是在 Database.RuntimeStart()
方法中实现的,当实例化一个 Database
对象时,该方法会被构造函数自动调用。并且当 Database
对象被销毁时,Database.RuntimeStop()
会被自动调用,以有序的方式关闭运行时。
运行库
对于 C# 应用程序,运行时库选项是在数据库构造函数调用中指定的。数据库类有四个构造函数:
Database()
Database(Mode mode)
Database(Mode mode, string runtime_path)
Database(SmartEDBWrapper)
第一个构造函数为默认函数,会加载默认运行时,在发布模式库中,对于所有内存数据库使用常规内存和 MURSIW 事务管理器。
第二个构造函数允许选择要加载的运行时库。在实例化数据库对象之前,通常的做法是通过设置 Database.Mode
值来设置运行时选项以加载特定的DLL。可能的选项有:
选项 | 说明 |
---|---|
DebugSupport | 加载调试版本的库以提供额外的诊断异常。 |
SharedMemorySupport | 加载_shm 版本库以使用共享内存的数据库。 |
DiskSupport | 加载持久存储库。 |
MVCCTransactionManager | 加载_mvcc 版本库以使用 MVCC 事务管理器 - 默认加载_mursiw (MURSIW 事务管理器)版本。 |
TransactionLoggingSupport | 加载TL支持库。 |
HighAvailabilitySupport | 加载HA支持库。 |
ClusterSupport | 加载集群支持库。 |
MPIClusterSupport | 加载用于 MPI 通道传输层的库。 |
可以使用“|”运算符将多个选项组合在一起。例如,以下选项组合表示基于磁盘的MVCC事务管理器和调试库:
db = new Database( Database.DiskSupport \| Database.MVCCTransactionManager \| Database.DebugSupport);
当指定模式参数时,将使用加载.NET Framework 程序集的标准规则来搜索要加载的运行时库:首先搜索全局程序集缓存 (GAC),然后搜索本地应用程序目录。如果希望在其他位置加载运行时库,可以使用第三个构造函数来指定运行时文件路径 runtime_path
。
为了与使用以前版本或.NET Framework API 创建的应用程序保持向后兼容,第四个构造函数接受 SmartEDBWrapper
参数。此构造函数通常按如下方式调用:
Database db = new Database( new SmartEDBWrapper() );
SmartEDBWrapper
是管理 API (用托管 C++ 实现) 的封装类。 其他构造函数会自动实例化这个封装接口。
持久化数据库
对于持久化数据库应用程序,必须在数据库构造函数调用中指定Database.Mode.DiskSupport
标志。
例如:
Database.Mode mode = Database.Mode.DiskSupport;
db = new Database(mode);
GetRuntimeInfo
Database.GetRunTimeInfo()
方法在数据库实例化后的任何时间都可以调用,以获取当前运行时的具体配置细节。
请参考 SDK 示例 csharp/open 。
示例:
public static void Main(String[] args)
{
Database db;
...
Database.Mode mode = Database.Mode.SharedMemorySupport | Database.Mode.MVCCTransactionManager;
...
mode |= Database.Mode.DebugSupport;
// Initialize runtime and open database with shared memory, MVCC and debug libraries
db = new Database(mode);
...
// Call method GetRunTimeInfo() to view runtime options
Database.RuntimeInfo ri = db.GetRunTimeInfo();
}