OLEクライアントの処理の流れを以下に示します。
OLE-CORBAゲートウェイは、CORBA.Factoryという名前でパソコン上のRegistoryに登録されています。OLE-CORBAゲートウェイを起動するためには、Visual Basicが標準提供しているCreateObject関数を使用し、そのパラメタとしてCORBA.Factoryを指定します。
サーバアプリケーションのオブジェクトリファレンスを検索するために、GetObject関数を使用し、そのパラメタとしてサーバアプリケーションの名前を指定します。
GetObject関数では、パラメタで指定されたサーバアプリケーション名をネーミングサービスから検索後、オブジェクトリファレンスをクライアントに通知します。サーバのアプリケーション名を指定する場合は、ネーミングサービスに登録したオブジェクト名を指定します。なお、サーバオブジェクトのIDL定義がインタフェースリポジトリに登録されている必要があります。
(1) 実行時バインディング
GetObject関数で検索したオブジェクトのメソッドを呼び出すことにより、サーバアプリケーションが持っているメソッドを呼び出すことができます。以下にクライアントのVisual Basicでのプログラミング例を示します。
Dim GW As Object // OLE-CORBAゲートウェイのインスタンス Dim calculator As Object // サーバのオブジェクトリファレンス Dim a As Long // 入力用変数 Dim b As Long // 入力用変数 Dim exp As Object // エラー設定用 Dim res As Variant // 返り値用変数 Set GW = CreateObject("CORBA.Factory") // OLE-CORBAゲートウェイの起動 Set calculator = GW.GetObject("ODdemo::calculator") // CORBAオブジェクトの生成 a = Text1.Text // 画面に入力されたデータを代入 b = Text2.Text // 画面に入力されたデータを代入 Set res = calculator.calculate(a, b, exp) // メソッドの呼び出し
(2) 事前バインディング
CORBA.Factoryオブジェクトを格納する変数をクラス型で宣言することにより、Visual Basicの事前バインディングが有効になります。事前バインディングは、従来の実行時バインディングと比べVisual Basicプログラム実行時にCORBAクラスを読み込まないため、性能向上が図れます。Visual Basicのアプリケーション開発時に、事前バインディングを使用するには、Visual Basicの“プロジェクト”メニューの“参照設定”を選択し、“ODOLE 1.0 Type Library”を有効にしてください。以下に事前バインディングのプログラミング例を示します。
Dim Factory as CORBAFactory Set Factory = CreateObject("CORBA.Factory")