Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ActiveX インタフェースの要素

Caché ActiveX バインディングは、ActiveX オブジェクトをサポートするすべてのアプリケーションからの Caché へのアクセスを提供します。このバインディングにより、クライアント・アプリケーション内の Caché オブジェクトをインスタンス化し、操作することができます。また、サーバ側オブジェクトをインスタンス化するための、透過的なインタフェースが提供されます。このドキュメント内の例は Visual Basic で記述されていますが、Caché ActiveX バインディングはその他の多くの開発環境でも同様に簡単に使用できます。

ActiveX 用 Caché オブジェクト・サーバ

ActiveX 用 Caché オブジェクト・サーバ (CacheActiveX.dll) は、完全な ActiveX インプロセス・オートメーション・サーバです。これにより、クライアント・アプリケーションは、サーバ上の Caché オブジェクトにアクセスすることができます。ActiveX 用 Caché オブジェクト・サーバは、内部に ActiveX プロキシ・オブジェクトを作成します。ActiveX プロキシ・オブジェクトは、Caché サーバのオブジェクトを反映します。オブジェクト・プロパティは ActiveX プロパティとして公開されます。同様に、メソッドは ActiveX メソッドとして公開されます。ActiveX プロキシ・オブジェクトのメソッドが呼び出されると、サーバ・マシン上のミラーリングされた Caché オブジェクトにより、対応するメソッドが呼び出されます。

すべてのクライアント側 ObjInstance プロキシ・オブジェクトは、サーバ上の Caché オブジェクトを参照します。複数のクライアント側オブジェクトが、同じサーバ側オブジェクトを参照することができます。クライアント側オブジェクトが接続されている限り、それぞれの参照が追加されるたびに、サーバ側オブジェクトの参照数は 1 ずつ増加します。

SysListResultSet オブジェクトのような特別な機能を実行するクライアント側オブジェクトは、Caché オブジェクトに基づいておらず、サーバ上のオブジェクトを参照しません。ActiveX から使用可能なオブジェクトのタイプに関する詳細は、"Caché ActiveX API リファレンス" を参照してください。

クライアント側プロキシ・オブジェクトは ActiveX オブジェクトで、IDispatch インタフェースへのポインタを使用して参照されます。例えば、patient オブジェクトのプロパティとメソッドに Visual Basic からアクセスするには、以下のコードを使用します。

Print patient.Name
'returns the value of Name for the referenced patient object
Print patient.Admit
'runs the Admit() method of the patient object on the server

一般的な ActiveX オートメーション・サーバの進歩に伴い、Caché ActiveX 用オブジェクト・サーバは、クライアント・オペレーティング・システムで定義するオブジェクト・クラスのすべてを登録する必要がありません。その代わりに、実行時にクラス情報を決定します。これにより、ActiveX レジストリ・エントリを維持する必要なく、多数のクライアント・マシンと多数のサーバ・ベースのオブジェクトで大規模アプリケーションを開発することが可能です。

CacheObject.dll からのアップグレード

Caché 5.1 以降では CacheActiveX.dll が Caché ActiveX バインディングの推奨バージョンとなっていますが、このバインディングは、従来の DLL、CacheObject.dll でも使用可能です。この DLL は処理が比較的遅く、このドキュメントに示したとおり、その機能にも若干の違いがあります。すべての新規開発では CacheActiveX.dll を使用してください。古い DLL は、下位互換性のためにのみに提供されています。この 2 つの DLL は、主に以下の点で異なります。

  • CacheActiveX.dll は 64 ビット Windows の 64 ビット・プロセスで使用できます。

  • 内部的に、CacheActiveX.dll は Caché C++ バインディングを使用して、Caché サーバにオブジェクト・レベルでアクセスし、さらに高度なオブジェクト・キャッシュにより、場合によってはパフォーマンスが向上します。

  • CacheActiveX.dll は Caché セキュリティをサポートします (Kerberos 認証を使用する機能などを含む) が、CacheObject.dll で使用される、安全性が高くないパスワードの暗号化機能はサポートしません。

  • 既定の SQL 実行時表示モードは、CacheObject.dll では Logical でしたが、CacheActiveX.dll では ODBC です。

  • CacheActiveX.dll プロキシ・オブジェクトを使用する場合 ("Objinstance クラス" を参照)、sys_Close() メソッドは実際にサーバ・オブジェクトを閉じます。CacheObject.dll プロキシ・オブジェクトから呼び出された場合は、何もしません。

既存のアプリケーションとの完全な互換性を維持するため、Caché では CacheActiveX.dllCacheObject.dll の両方がインストールされます。既定では、既存のアプリケーションは引き続き従来の CacheObject.dll を使用します。新しいバインディングを使用する場合は、この新しい DLL を参照するように既存のアプリケーションを変更し、アプリケーションが予想どおり動作することを確認する必要があります。コードを CacheObject.dll から CacheActiveX.dll にアップグレードするには、以下の手順を実行します。

  • CacheObject.Factory へのすべての参照を CacheActiveX.Factory に置き換えます。

  • Logical から ODBC SQL 実行時表示モードへの切り替えに必要なすべての変更を行います (ResultSet.SetRunTimeMode() メソッドを参照)。

  • "サーバへの接続" の説明に従って、必要に応じて、新しい Caché セキュリティ機能を使用するように接続ロジックを変更します。

FeedbackOpens in a new tab