1

ActionFilterを使用するか、DIパッケージを使用してセッションをコントローラーに挿入することにより、Asp.NetMVCで要求ごとにセッションをセットアップする方法に関する多くの投稿を見てきました。私が知りたかったのは、次のような拡張メソッドを作成するのは悪い考え/パターンでしょうか?

public static ISession GetNHibernateSession(this Controller controller)
 {
   return SessionFactory.OpenSession();
 }

次のように、必要なときにセッションをインスタンス化できるようにします。

public ActionResult DoSomething()
    {
      using(  var session = this.GetNHibernateSession())
        {
           // Do something with the session
        }

    }

これが良い/悪いアイデアである理由は大いに評価されます

4

1 に答える 1

1

良い:

  • 簡単だ
  • それだけで動作します

悪い:

  • コード全体で、たった3行であっても、セッション管理を行っています。
  • 拡張メソッドでは、テストの動作を置き換えることはできません

つまり、小規模なRADおよび概念実証プロジェクトの場合、アイデアは問題なく機能します。より複雑な開発の場合は、コントローラーからセッション管理を抽出し、少なくとも基本クラスに移動することをお勧めします。

于 2013-03-11T02:03:19.467 に答える