Skip to content

v2.0(仮)変更案:Quill/S2Container.NET

koyakgit edited this page Sep 28, 2014 · 4 revisions

Quill(S2Container.NET)

修正方針

  • 対象:.NET4.0以上(4.5でもいいが、4.5以降では記法に大きな変化はないため4.0とする)
  • .NET3系、4系の記法を積極的に取り入れる(既存インターフェースには必要以上に拘らない)
  • 拡張の自由度を重視
  • メンテナンス量軽減
  • 「Code Contracts」は使いたいけど使わない(VisualStudioのExpress Editionでは使えないので)

新機能

  • 拡張性の向上
    • 基本的にデリゲートの差し替えで拡張できるようにする
      • インターフェース実装、リフレクションなどは前提としない
      • 単純な処理でもいい場合はstaticメソッドなどでも拡張・差替ができる
      • 抽象クラスなどを提供しなくても部分的な処理の変更が可能になる
    • QuillContainerの拡張ポイント
      • インスタンス生成スコープ(singleton(既定)、それ以外)
      • インスタンス生成方法(単純なnew、それ以外(どうしてもAOPを利用したい場合はここを拡張してもらう)
      • 実装型の取得(Implementation属性, IDictionary<Type,Type>によるマッピング、それ以外)
      • 上記三点のデフォルト設定、型ごとの切替機能の提供
    • QuillInjectorの拡張ポイント
      • QuillContainerの入替
      • インジェクション条件
      • 再帰的なインジェクション条件
  • 設定ファイル
    • App.configでも独自ファイルでもxml形式で既定のセクションが含まれていれば同じように使えるようにする
    • 詳細は検討中
  • (不要?)log4net以外でもログ出力できるようにする

削除機能

  • AOP、各種Interceptor、Castleの参照削除、S2DynamicProxyプロジェクト
  • S2Containerプロジェクト、従来のS2Container機能
    • 上記削除に伴い、DB系の機能も削除orS2Daoに移行
  • QuillControl
    • 要望があればWPF版も含めて再作成する?
  • メッセージリソースファイル
    • エラーメッセージは簡単な英語、例外クラス名、付属情報で表現

現状(ほぼ)維持

  • Quillの基本方針(Singletonが前提、できるだけシンプルに、コメントは日本語で詳し目に書く)
  • QuillContainer, QuillInjectorの既存インターフェース
    • 一部の並列化などの高速化を盛り込めそうなら盛り込みたい
    • 中身は機能の追加、削除のためガッツリ修正
      • テストコードは念入りに
  • Implementation属性