DIコンテナによる開発
Seasar.NETを使うようになって半年くらい経ちました。DIコンテナをどーやって使ったら良いか、ずっと悩んでいましたが、結局、愚直なやり方で落ち着きました。手順はこんな感じ。
- インタフェースを作成する。ネーミングはIXXXとかIYYY。
- インタフェースはまとめてDLLにする(関連するインタフェースグループ単位でDLLは分ける)。
- インタフェースDLLに実装は混ぜない(ヘルパ用クラスはOK)。
- インタフェースと一対一対応でdiconファイルを作成し、同一プロジェクトに放り込む(diconファイルは常にコピーするにしておく)。
- diconファイルの記述は、例えばIAAA、IBBBをインジェクションする場合は、IAAA.dicon、IBBB.diconをインクルードする。
- 実装クラスの作成者はインタフェースDLLを受け取って、インタフェースとヘルパクラスを使って実装する。
何のひねりもないやり方ですが、ルールがはっきりしているので説明が楽です。IXXXインタフェースを実装し、IYYY、IZZZをインジェクションする場合は、IXXX.diconにコンポーネントとしてXXXImplクラスを登録し、IYYY.dicon、IZZZ.diconをインクルードしてください、と説明すればOK。
ちなみに、社内にはDIコンテナを使ったプロジェクトが存在しないので、DIコンテナによる一般的な開発のやり方は分かってません。みんな、どーやっているのかしら・・・