2

ソフトウェア ビルド システムとほとんど同じように機能するソフトウェア インフラストラクチャがあります。情報はさまざまなソースから収集され、いくつかの出力を生成するために使用されます。従来のソフトウェア ビルドと同様に、さまざまな種類の出力、依存関係ツリーなどがあります。

主な違いは、ソース、中間結果、および出力が本質的にファイルベースではないことです。むしろ、それらは (一意にアドレス指定可能な) データ オブジェクトです。

現在、従来のビルド システム (SCons) と組み合わせて、データ構造をファイルとディレクトリにマッピングしていますが、パフォーマンスと (より重要なことに) 保守性との両方に関して、スケーリングしません。したがって、この目的のためにゼロから構築されたインフラストラクチャを探しています。

例として、3 つの XML ドキュメントABおよびがあるとしCます。は と から計算され、同様にから計算B/foo/barされるA/x/yとしましょう。インフラストラクチャが必要ですA/x/zC/a/bA/x/y

  1. これらの関係を実装します (つまり、変換とその依存関係)
  2. 変更後に関連部分を自動的に再構築

Aファイルを使用する際の大きな問題の 1 つは、BCをいくつかのファイルA.xmlにマップし、B.xmlとをC.xml従来のビルド システムを使用すると、と( の元の依存関係) が変更されていなくても、を変更するととA.xmlの再構築がトリガーされることです。したがって、きめ細かい依存関係の解決のために、ファイルではなく、各サブディレクトリが要素を表し、ファイルが属性などを表すディレクトリに、それぞれをマップする必要があります。我ら。B.xmlC.xmlA/x/yA/x/zBABC

(当社のシステムは実際には XML に基づいていないことに注意してください)

現在、実装言語や基礎となるデータ構造に関係なく、この方向性を示す既存のソフトウェア、インフラストラクチャ、または概念を探しています。

4

2 に答える 2

2

GemStone / Sのようなアクティブオブジェクトデータベース管理システム(ODBMS)が必要なようです。ODBMSは、データ構造をファイルにマッピングするという古いコストや、オブジェクトテクノロジーのよく知られた利点なしに、従来の永続化サービスを提供します。依存関係ツリーとアドレス可能なオブジェクトについて説明したように、ODBMSでは、ナビゲーション参照がデータの一部として格納されるため、オブジェクト間の複雑な相互作用パターンを表現/アクセスできます。これは、継承、オブジェクトのネスト、および相互参照を利用するシステムを予測する場合に特に当てはまります。

オブジェクトエンジンは要件に対して大きすぎるように見えるかもしれませんが、大規模な本番ビジネスシステムでは、並行マルチユーザー環境内でOODBMを使用してメソッドを格納および実行するのが一般的です。方程式の人間的な部分(教育と経験)に投資する必要があるため、無料ではありませんが、最初の恐怖が克服されると、投資の見返りが得られます。

変更(アナウンサーからの通知)が行われた後に(サブスクライブされた)パーツを再構築する場合は、オブザーバーデザインパターンまたはそのバリアントの1つ(SASEまたはアナウンスフレームワーク)を使用して、アナウンス/サブスクリプションアーキテクチャを実装できます。このタイプのイベントフレームワークでは、すでにお気づきのように、従来のファイルベースのソリューションでは解決が難しい固有の問題があります。たとえば、依存関係メカニズムでは、オブジェクト、またはこの例ではXMLドキュメントの別のオブジェクトへの置き換えを管理するのが一般的です。最新のイベントフレームワークは、オブジェクトが削除されたときに管理する必要があり、古いオブジェクトに接続されているすべての依存関係が新しい参照に更新されます。

最後に、オブジェクト依存関係フレームワークを含む無料のGemStone / Sスタックがあるため、実際のオブジェクトデータベースを試すことができます。

于 2013-03-24T03:29:22.357 に答える
2

したがって、問題を正確に解決するものは何も思い浮かびませんが、現在よりも少し近づく可能性のあるツールがいくつかあります。

1) Fuse を使用して、データ オブジェクトをファイルにマップする方法をより適切に制御できるものを一緒に投げることができる場合があります。基本的に、Fuse を使用すると、必要なバッキング データから任意のファイル システムを構築できます。( Python バインディングは非常に使いやすいですが、他にも多くの言語インターフェイスが利用可能です)。次に、従来のビルド ツールを使用して、ファイルのようなオブジェクトをデータとより適切に関連付けることができます。

2) Cmake には、サービスにプッシュできるカスタム ターゲットを作成するためのかなり拡張可能な言語があります。残念ながら、その言語は非常に教訓的で、学習曲線が急峻であるため、最初の選択肢にはなりません。

于 2013-03-23T18:55:56.257 に答える