【问题标题】:ASP.NET C#: Which Design Pattern should I use and why?ASP.NET C#:我应该使用哪种设计模式,为什么?
【发布时间】:2009-04-24 15:22:17
【问题描述】:

我正在用 ASP.NET C# 开发一个应用程序,遇到了以下场景:

  1. 我将不得不为不同的实体(表)创建一些维护屏幕
  2. 这些实体在 UI 中的行为基本相同:Search、GetById、Save、Create 和 GetAll
  3. 实体可能具有不同的结构,即不同的属性(字段)

当我谈到 20 多个管理屏幕时,我可以利用哪种设计模式来最大程度地减少我必须编写的代码量?

我虽然想到了bridge pattern,但我对如何实现它有点困惑......

一点我使用的技术背景:

  1. ASP.NET 经典(n 层)
  2. LINQ to SQL 和 DAO 对象
  3. SQL Server 2005

【问题讨论】:

    标签: c# asp.net design-patterns


    【解决方案1】:

    对于一组只执行 CRUD(创建、读取、更新、删除)操作并且几乎没有业务逻辑方式的管理屏幕,我很想或多或少地避开设计模式并采取看看asp.net dynamic data。如果您想尽量减少要编写的代码量,则尤其如此。

    【讨论】:

    • 我明白,但这不是我们框架的一部分,因此不能使用!
    • 好的,在这种情况下,我会查看您的“框架”中已经使用的模式并使用类似的模式。如果没有类似的东西,您可能想查看通用存储库模式 - 例如aleris.wordpress.com/2009/04/17/…
    • @Steve ...这可能是我正在寻找的...我会试试看是否符合我的要求...稍后我会发布结果。 ..tks ...
    【解决方案2】:

    这不是一种设计模式……但我强烈建议使用动态数据。 Jonathan Carter 有一些很棒的文章:http://lostintangent.com/index.php?s=dynamic+data

    【讨论】:

    • 我明白,但这不是我们框架的一部分,因此不能使用!
    【解决方案3】:

    如果您真的只是在做一些像这样的基本操作:Search、GetById、Save、Create 和 GetAll,我建议您使用存储库。如果做错了存储库可能会变得非常糟糕和讨厌,但如果您真的主要限于这组操作,那么您基本上已经描述了具有该组操作的存储库。

    您需要研究提取额外逻辑(例如搜索)的方法,以免创建重复的逻辑。

    只要您确保不让它们失控,存储库就很好且可测试。我给你这个警告只是因为我看到太多人从存储库中创建怪物类。

    存储库与您的对象一起使用。它们基本上是处理数据持久性的中介。这种抽象允许您从其余代码中隐藏您如何持久化数据。在这种情况下,您的存储库的实现将使用 LinqToSql,因为我相信这就是您所说的。

    有很多资源explaining the repository pattern.

    【讨论】:

    • 抱歉,您说的是哪种存储库?这个存储库模式是一种创建模式、结构模式还是行为模式?我正在寻找可以处理整个过程的东西,从客户端请求到使用 Linq2Sql 的实际数据库查询 ....
    • 我会说这是行为。您需要记住的是,您需要在图层之间进行某种分离。存储库通过使 UI 不知道您正在使用 Linq2Sql 来充当这种分离。
    【解决方案4】:

    你想要的不是设计模式。您正在寻找带有脚手架的 ORM。我使用并强烈推荐 SubSonic - http://subsonicproject.com。你可以在这里阅读它的脚手架功能:http://subsonicproject.com/web-forms-controls/the-scaffold/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多