雇用主が文書管理に使用する、社内で開発されたアプリケーションのコアを書き直す機会がありました。私の「コア」要件リストは次のようになります。
- さまざまな形式へのインポート/エクスポートを容易にします (ファイルのコレクション + かなり広範なメタデータが共通の要素です)。
- 複数のレベルで新しいフィールド (グローバルではなくデータ駆動型のフィールド) を簡単に追加できるようにする
- 古いシステムの基本的な前提に違反するいくつかの新しい機能を導入します (基本的に、ドキュメントを取り巻くメタデータの構造は根本的な変化を遂げています)。
- ドキュメントとメタデータの関係と規則を厳密に管理する能力を維持する
私はシリアライゼーションを世界との通信の主要な手段として使用するアーキテクチャをいじくり回してきましたが、これまでのところ結果に満足しています。ユーザー インターフェイス、XML ストア、およびさまざまなソースとシンクに対応するためにコア クラスを変更することなく、簡単にデータベースにアクセスできます。これは基本的に六角形のアーキテクチャであると考えています。すべてのシリアライゼーション ターゲットを同じように扱います (Serialize メソッドの注入可能な依存関係として)。
ただし、これはこのアプローチを使用した最初の試みであり、誰かが経験を持っているかどうか、もしそうなら洞察やアドバイスがあるかどうか疑問に思っています。