DIコンテナによる開発

Seasar.NETを使うようになって半年くらい経ちました。DIコンテナをどーやって使ったら良いか、ずっと悩んでいましたが、結局、愚直なやり方で落ち着きました。手順はこんな感じ。

  1. インタフェースを作成する。ネーミングはIXXXとかIYYY。
  2. インタフェースはまとめてDLLにする(関連するインタフェースグループ単位でDLLは分ける)。
  3. インタフェースDLLに実装は混ぜない(ヘルパ用クラスはOK)。
  4. インタフェースと一対一対応でdiconファイルを作成し、同一プロジェクトに放り込む(diconファイルは常にコピーするにしておく)。
  5. diconファイルの記述は、例えばIAAA、IBBBをインジェクションする場合は、IAAA.dicon、IBBB.diconをインクルードする。
  6. 実装クラスの作成者はインタフェースDLLを受け取って、インタフェースとヘルパクラスを使って実装する。

何のひねりもないやり方ですが、ルールがはっきりしているので説明が楽です。IXXXインタフェースを実装し、IYYY、IZZZをインジェクションする場合は、IXXX.diconにコンポーネントとしてXXXImplクラスを登録し、IYYY.dicon、IZZZ.diconをインクルードしてください、と説明すればOK。

ちなみに、社内にはDIコンテナを使ったプロジェクトが存在しないので、DIコンテナによる一般的な開発のやり方は分かってません。みんな、どーやっているのかしら・・・