開発 API リファレンス

開発 API は、ss に対する Common Object Request Broker Architecture (CORBA)ベースのアプリケーション プログラム インターフェース(API)です。 この API は、オブジェクト リクエスト ブローカ(ORB)に依存しているため、ss オブジェクト リクエスト ブローカ(SSORB)インターフェースまたは SSORB と呼ばれることもあります。 このセクションでは、開発 API の目的、構成要素、および何ができるかについて説明します。
casp1032
開発 API は
SpectroSERVER
に対する Common Object Request Broker Architecture (CORBA)ベースのアプリケーション プログラム インターフェース(API)です。 これはオブジェクト リクエスト ブローカ(ORB)によって異なるため、
SpectroSERVER
オブジェクト リクエスト ブローカ(SSORB)インターフェースまたは SSORB として参照することもできます。 このセクションでは、開発 API の目的、構成要素、および何ができるかについて説明します。
開発 API インターフェースのリリース固有の変更箇所(存在する場合)については、「リリース情報」を参照してください。
アーキテクチャ
開発 API は、CORBA ネーミング サービスを通じてアドバタイズします。 CORBA ネーミング サービスによるアドバタイズは、Orbacus や Java など、標準のネーミング サービスをサポートする他の ORB との互換を容易にします。
クライアント アプリケーションはネーミング サービスと通信し、利用可能なサービスのリストを取得します。 ネーミング サービスのリストに対して
osfind
ツールまたは
nsutil
ツールを使用すると、リストを表示することができます。 クライアント アプリケーションがアドバタイザと通信し、必要なサービスの場所を取得すると、クライアント サービスはそのサービスと直接通信することができます。 セキュリティ チェックがクリアされた後、データを取得するためのコールが可能になります。
ネイティブ スレッドは、VisiBroker CORBA レイヤで着信データ要求を処理します。 要求は
SpectroSERVER
が処理するキューに入れられます。
SpectroSERVER
は、キューの最初の要求を取り出し、必要なデータを取得します。 データは発信キューに添付され、クライアント アプリケーションに返されます。 非同期データまたはコールバックの場合、
SpectroSERVER
はアクティブな変更のリストを保持し、それらをクライアント アプリケーションに通知します。 クライアント アプリケーションがコールバックを実装するマルチ CPU システムでは、この作業負荷がネイティブ スレッド間で再分配され、処理サイクルが解放されます。
開発 API のアーキテクチャは以下のとおりです。
image2014-10-16 12:12:47.png
このアーキテクチャでは、ロケーション サーバ、
SpectroSERVER
、およびアーカイブ マネージャ(図示されていません)がそれぞれ、データ取得用の CORBA インターフェースを持っています。 ロケーション サーバは、分散
SpectroSERVER
ドメインの利用可能な
SpectroSERVER
のリストを提供します。
SpectroSERVER
では、モデル ドメイン、アラーム ドメイン、およびタイプ カタログへのインターフェースを処理します。 アーカイブ マネージャは、イベント ドメインを処理します。
SpectroSERVER
、ロケーション サーバ、またはアーカイブ マネージャの起動時に、そのサービスがネーミング サービスにアドバタイズされます。
CORBA 標準
CORBA は、オブジェクト管理グループ(OMG)コンソーシアムによって開発された標準です。 CORBA 標準は、分散アプリケーションが ORB を使用して通信できる方法を指定するミドルウェアおよびフレームワークです。
以下の図は、ORB によるクライアント/サーバ通信を示しています。
image2014-10-16 12:13:21.png
ORB は、異なるハードウェア アーキテクチャの異なるオペレーティング システムの異なる言語で記述されたソフトウェア コンポーネント間の通信を容易にします。 これによってネットワーク上の異なるオブジェクトが互いに認識し、互いのメソッドを呼び出すことができるようになります。
ORB は製品ではなく、OMG の CORBA 標準を実装しています。 CORBA 標準は、以下を記述するのに使用されるインターフェース定義言語(IDL)を定義します。
  • CORBA オブジェクトへのインターフェース
  • プログラミング言語マッピング
  • トランスポート プロトコル
  • ネーミングやセキュリティなどの高レベル サービス
CORBA のメカニズム
リモート アプリケーション間の通信を容易にする CORBA コンポーネントは、API を定義する IDL です。
SPECTRUM Development API
は、各オブジェクト タイプの IDL ファイルで構成されます。 通常、この IDL ファイルのセットは、
DX NetOps Spectrum
IDL と呼ばれます。
IDL という用語は、インターフェースを表す場合もあります。
CORBA は、すべてのプログラミング言語の言語マッピングを定義します。 言語マッピングは、IDL が言語固有の API に変換する方法について記述します。 IDL コンパイラは、IDL ファイルを一連のスタブおよびスケルトンにコンパイルすることで、このマッピングを実装します。
スタブ
は、アプリケーションが使用することができるメソッドおよびオブジェクトです。
スケルトン
は、サーバの実装のために使用する空のメソッドおよびオブジェクトです。 ベンダが ORB を提供しているときに、IDL はスタブおよびスケルトンを生成します。
CORBA サービス オブジェクトを作成するプログラマは、CORBA 標準言語、つまり IDL でインターフェースを定義します。 IDL が適切なコンパイラで実行される場合は、標準的なプログラミング言語でサーバおよびクライアント コードの両方が生成されます。 サーバ コードは基本オブジェクトを、プログラマがサービスを実装するためにクラスを派生させた抽象クラスとして表すため、スケルトンとなります。 クライアント コードは、コーディング不要なオブジェクト参照スタブのセットで構成されます。
たとえば、C++ マッピングでは、スタブには、アプリケーションおよびアプリケーションにリンクされたオブジェクト ライブラリのコンパイルに使用されるヘッダ ファイルが含まれます。
以下の図に示すように、アプリケーションとサーバは、ORB ライブラリにリンクする必要があります。
image2014-10-16 12:13:37.png
サーバを開発するには、IDL と実装をスケルトンに書き込む必要があります。 アプリケーションを開発するには、スタブを呼び出す必要があります。
CORBA フレームワークに参加しているプログラムは、言語とプロセスの場所のコミュニケーション障壁を回避するため、ローカル ORB に依存しています。 プログラムは、システム内のすべての ORB で構成されているデータ パイプラインに要求を送信し、パイプラインから応答を受信します。 この ORB のネットワークを ORB と呼ぶことが多々あります。
各 CORBA サービスは、いくつかのコンピュータ上に配置され、プログラミング言語で記述されたオブジェクトとして実装されます。 クライアントが自身を利用できるようにするには、オブジェクトが ORB を使用してサービスをアドバタイズします。 ネーミング サービス(標準 CORBA サービス)はアドバタイズメントを取得し、サービス名とオブジェクト参照を記録します。 クライアントがサービスを使用する場合、そのサービス名を指定し、ORB を使用してネーミング サービスと通信します。 オブジェクト参照を受信し、それを使用してオブジェクトのサービスにアクセスします。
オブジェクト参照と対応するサーバ オブジェクトは、同じインターフェースを備えたさまざまなクラスのインスタンスです。 クライアントがネーミング サービスから取得したオブジェクト参照は、クライアント上で実行されます。 サーバ オブジェクトはサーバ上に存在します。 クライアントがオブジェクト参照メソッドを呼び出すと、メソッドは ORB を使用して、サーバ上の対応するメソッドを呼び出します。 このサーバ メソッドは、サービス要求を実行し、必要なデータを返します。 クライアントの場合、ローカル オブジェクト参照がサーバ オブジェクトをシミュレートしますが、実際は、参照はサーバに対してリモート メソッド呼び出しのみを実施します。
DX NetOps Spectrum
が CORBA を使用する理由
開発 API は、CORBA を使用して、Java アプリケーション開発に集中します。
Web ベースのアプリケーションでの Java の使用が増えています。
SPECTRUM Development API
は C++ と Java 開発者の両方に同じコア サービスのセットを提供していますが、Java により焦点を当てています。
オープン標準である CORBA は Java アプリケーションの開発に最も適しています。 CORBA を使用すると、
DX NetOps Spectrum
の顧客が
DX NetOps Spectrum
と他の CORBA サービスを統合する CORBA アプリケーションを作成するのに役立ちます。
CORBA ソース
OMG は CORBA のアーキテクチャおよび言語固有のマッピングをカバーする CORBA 標準セクションを公開しています。 これらの標準は http://www.omg.org で入手することができます。
また、
DX NetOps Spectrum
が使用する VisiBroker ORB のベンダである Borland Software Corporation からも、CORBA の情報を取得することができます。 ドキュメントは http://www.borland.com で入手できます。
データ構造クラス
データ構造クラスには、パラメータとヘルパーの 2 つのタイプがあります。
  • パラメータ クラス
    データを転送します。 クライアント プログラムはこれらのクラスをインスタンス化し、それをインターフェース メソッドに渡します。 また、このメソッドは、プログラムにこれらのクラスのインスタンスを返します。 例には、CsCModelPropList、CsCMTypePropList、CsCAttrValList が含まれます。
  • ヘルパー クラス
    複雑なパラメータ クラス オブジェクトを構築およびアンラップします。
ファイル <
$SPECROOT
>/SDK/docs/SSORB/index.html のリンク com.aprisma.spectrum.core.util をクリックして、これらのクラスの Java docs を確認することができます。 例には、CsCorbaValueHelper および CsCAttrFilterHelper が含まれます。
エラー レポート
CORBA は例外を通じてエラーをレポートします。 例外によるエラー レポートは、他の結果が得られないため、オール オア ナッシングの方法です。 この方法は、要求のいくつかの項目だけが失敗した場合などの部分的な障害には役立ちません。 また、すべての失敗について例外を発生させることは最適ではありません。 CORBA の方法では、完全な障害に例外を使用し、部分的な障害は結果リスト内にエラー コードを使用してレポートします。 リスト全体を検索して、項目が失敗したかどうかを確認するのは最適ではないため、結果リストは全体的なエラー コードも提供して、部分的な障害を示します。
Windows での C++ 開発
以下の表では、Windows 上での C++ 開発に必要なライブラリとダイナミック リンク ライブラリを示します。 対応するディレクトリの場所は、<
$SPECROOT/lib
> です。
ライブラリ ファイル
SDK
libGlobl (dll)、libssorb (dll)、ibssorbutil (dll)
SPECTRUM
orb_r_70 (dll)、cosnm_r_70 (dll)、vport_r_70 (dll)、vdlog_r_70 (dll)
Borland VisiBroker
以下の表は、対応するヘッダ ファイルの場所を示しています。
ライブラリ
ヘッダ ファイルの場所
libGlobl.dll
<
$SPECROOT
>\SDK\include\GLOBL
libssorb.dll
<
$SPECROOT
>\SDK\include\SSORB\idl
libssorbutil.dll
<
$SPECROOT
>\SDK\include\SSORB\util
cosnm_r_70.dll、orb_r_70.dll、vbsec.dll、vdlog_r_70.dll、vport_r_70.dll
Borland VisiBroker SDK によって提供(SPECTRUM CORBA ツールキットには含まれていません)