記事 Hiroshi Sato · 10月 14, 2022 2m read

CachéでCache Directエミュレータを使っているアプリケーションをIRISのCache Directエミュレータに書き換える方法

IRISでは.Net Binding機能が非推奨になったため、VisM.OCXの置き換えのために用意していたCaché版Cache Directエミュレータ(.Net Binding機能を使用していたため)の使用も非推奨となりました。
そこでIRISのNative API機能を使用して書き換えたものを作成し、OpenExchange(以下のFAQトピックを参照してください)に登録しています。

FAQのトピック


Caché版Cache Directエミュレータを使っているアプリケーションをIRISに移行するためには、IRIS用のCache Directエミュレータに置き換えて、アプリケーションのコードをいくつか書き換える必要があります。

内容は、それぞれのプロジェクトに含まれるコンソールアプリケーションサンプル(consoleApp.cs)を比較することで大体理解できると思いますが、以下にその手順について説明します。

1. IRISの.Net Native API用のdllの参照設定を追加します。

Visual Studioのプロジェクト設定から参照の追加を選び、以下のファイルを追加してください。

c:\InterSystems\IRIS\dev\dotnet\bin\v4.6.2
InterSystems.Data.IRISClient.dll

2.  using句

Caché版の場合は、以下のusing句が使われていると思います。

using InterSystems.Data.CacheClient;
using InterSystems.Data.CacheTypes;

IRISでは、以下の様に変更します。

using InterSystems.Data.IRISClient;
using InterSystems.Data.IRISClient.ADO;


3. 接続処理およびインスタンスの生成

Caché版の場合は、以下のような記述で接続、インスタンス生成処理を行っていると思います。

cacheDirectWapper cdw = new cacheDirectWapper("Server = localhost; Log File=cprovider.log;Port=1972; Namespace=USER; Password = SYS; User ID = _system;");

IRIS版でも同じ処理で接続、インスタンス生成できます。

IRIS版では先にIRISへの接続を確立後、その接続オブジェクトを使用して接続する方法もサポートしています。

IRISConnection irisconn = new IRISConnection();
irisconn.ConnectionString = "Server = localhost; Log File=cprovider.log;Port=1972; Namespace=USER; Password = SYS; User ID = _system;";
irisconn.Open();
cacheDirectWapper cdw = new cacheDirectWapper(irisconn);

4.  プロパティの参照

Caché版の場合には、.Net Bindingの仕様の制約によって、プロパティやメソッドの参照は、以下の様に2段階(.を2つ使用)になっていました。

cdw.cd.P0 = "ABC;DEF;GHI";


IRIS版の場合は、そのような制約がないので、直接1つの.で参照できるようになりました。
 

cdw.P0 = "ABC;DEF;GHI";