ASP.NET C#:我应该使用哪种设计模式?为什么?

时间:2009-04-23 12:40:30

标签: c# asp.net design-patterns

我正在使用ASP.NET C#开发一个应用程序,并遇到了以下情况:

  1. 我将不得不为不同的实体(表格)创建一些维护屏幕
  2. 这些实体在UI中基本上具有相同的行为:搜索,GetById,保存,创建和GetAll
  3. 实体可以具有不同的结构,即不同的属性(字段)
  4. 当我在谈论20多个管理员屏幕时,我可以利用哪种设计模式来减少我必须编写的代码量?

    我虽然是bridge pattern,但我对如何实施它感到有点困惑......

    我正在使用的一点技术背景:

    1. ASP.NET classic(n-tier)
    2. LINQ to SQL和DAO对象
    3. SQL Server 2005

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

如果你真的只是在做一些基本的东西:搜索,GetById,保存,创建和GetAll,我建议你使用存储库。如果做错了存储库可能会变得非常糟糕和讨厌,但如果你真的主要限于这组操作,你基本上已经描述了一组操作的存储库。

您需要了解如何提取额外逻辑(例如搜索),以便您不会创建重复逻辑。

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

存储库可以处理您的对象。它们基本上是处理数据持久性的中介。通过此抽象,您可以隐藏代码的其余部分,以便持久保存数据。在这种情况下,您的存储库的实现将使用LinqToSql,因为我相信这就是您所说的。

有很多资源explaining the repository pattern

答案 3 :(得分:1)

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