Virtual member manager は、DataGraph
モデルをメモリーにロードするための動的ロードおよび静的ロードという 2 つの方法をサポートしています。それぞれの方法に利点があります。
動的ロード
動的ロードとは、DataGraph モデルを実行時に XSDEcoreBuilder を使用して、XSD ファイルから ECore モデルとしてメモリーにロードすることです。
この方法の利点:
- 拡張が容易である
- 静的ロードと異なり、動的ロードの場合は、静的モデル・コードを生成する必要がありません。すべてのスキーマ定義が定義され、XSD ファイルからロードされます。
- Virtual member manager 組み込みスキーマに変更可能
- 新しいプロパティー・タイプは、wimxmlextension.xml ファイルから Virtual member manager
の組み込みエンティティー・タイプに追加できます。
- 実行時の新しいスキーマの追加をサポート
- 利用者は、createSchema API を実行時に呼び出して、新しいエンティティー・タイプおよびプロパティー・タイプを作成できます。
この方法の欠点:
- ロードが遅い
- XSD ファイルのロードには、静的モデル・コードのロードよりも時間がかかります。
ロード処理は、Virtual member manager が開始するたびに実行されます。
- 固有タイプを使用できない
- この方法では、ユーザーは、DataObjects を固有のタイプ (PersonAccount、Group など) にキャストすることも、これらのタイプで固有メソッドを使用することもできません。例えば、ユーザーが名前を設定するために使用できるのは DataObject の setString(“givenname”, Smith”) メソッドのみで、PersonAccount の setGivenname(“Smith”) は使用できません。
- ランタイム・パフォーマンスが低い
- 動的ロードを使用した場合の SDO のパフォーマンスは、静的モデルよりも低くなります。
静的ロード
静的ロードとは、開発時に EMF (Eclipse Modeling Framework) コード生成によって静的モデル・コードを生成することです。モデル・コードは、SDO の EMF での実装です。SDO アプリケーションは、生成されたモデル・コードのパッケージを使用します。この方法では、動的ロードでモデルを XSD ファイルからロードする場合よりも時間がかかりません。また、ユーザーは、DataObjects を固有オブジェクト・タイプにキャストして、ランタイム・パフォーマンスを上げることができます。
この方法の利点:
- ロードが速い
- XSD ファイルからのモデルのロードに比べて、静的モデル・コードからのモデルのロードのほうが時間がかかりません。
これにより、Virtual member manager の開始時間短縮されます。
- 利用者が固有タイプを使用可能
- DataObject を固有のタイプ (PersonAccount、Group など) にキャストして、これらのタイプで固有メソッドを使用できます。例えば、DataObject を PersonAccount にキャストし、メソッド “setGivenname” を使用してプロパティー“givenname”を設定できます。
- ランタイム・パフォーマンスが高い
- 固有のタイプおよびメソッドを使用すると、SDO のランタイム・パフォーマンスは動的ロードの方法の場合よりもよくなります。
この方法の欠点:
- 拡張が容易ではない
- スキーマを拡張するには、Eclipse または RAD 開発環境で静的モデル・コードの生成が必要になります。
Virtual member manager の利用者が拡張を行うには、EMF、SDO、および XML スキーマの知識が必要になります。
- Virtual member manager 組み込みスキーマへの変更が困難
- Virtual member manager の組み込みエンティティー・タイプ (PersonAccount や Group など)
に新しいプロパティー・タイプを追加したい場合、wimdomain.xsd を直接変更して、Virtual member manager
の静的モデル・コードを再生成する必要があります。
- 実行時の新しいスキーマの追加をサポートしていない
- 生成されたモデル・コードは固定しているので、
実行時に Virtual member manager スキーマを拡張することはできません。