使用不同的产品类别创建ASP.NET MVC应用程序

时间:2009-07-03 22:54:52

标签: asp.net-mvc

像www.halifax.co.uk这样的网站提供不同的产品类别,如抵押贷款,储蓄..抵押和储蓄产品将拥有不同的数据领域。这不适合在大多数情况下使用单个产品控制器。每个产品类别的单个产品控制器或控制器?

2 个答案:

答案 0 :(得分:1)

一方面,这些产品类别中的每一个都可能具有不同数量和类型的字段。然后,一种简单的方法是使不同的控制器,每个控制器导致不同的视图,强烈地键入不同的模型。 “抵押贷款”将是一个模型,具有自己的字段,以及自己的索引,详细信息,编辑和删除视图以及MortgageController。同样对于储蓄。这是使用强类型视图的ASP.NET MVC应用程序的最简单方法。请注意,即使在这种情况下,也可以通过仔细维护和重构控制器(以及模型和视图)来删除或最小化重复。

但是,我建议分析每种产品类型的行为。事实上,如果它们都表现相同,那么有办法解决不同数量或类型的字段的问题。例如,所有不同类型的模型都可以继承一个公共基类,或者实现一个公共接口(后者可能是两个解决方案中更好的 - 但在这种情况下很难说你是否应该更喜欢继承或组合)。这些只是开发“弱类型”视图和控制器的两种选择。

我不能说你是否应该从你给出的简短描述中选择一种方式,但我确信答案在于模型的行为(而不是它们的结构)。根据我的个人经验,行为相同的模型(例如:它们都暴露相同的CRUD操作)应该以单一方式处理,但行为差异(例如:当特定类型的模型正在进行时要验证的不同业务规则)保存)需要一个接一个地处理。 HTH

答案 1 :(得分:1)

简单的答案是,它取决于每个产品类别带有的“业务逻辑”的数量。您必须查看您的域模型,并查看您的产品类别在您的域中的真正含义。

例如,在拍卖网站的情况下,重点是产品。该类别实际上只是一个字符串层次结构,可用于标记产品。由于可用类别每天都在增长和缩小,因此为每个类别创建一个控制器会造成维护噩梦。

在银行网站的情况下,重点是每个单独的产品类别,如“储蓄账户”,“信用卡”等。这些不同类别之间存在很大差异,因此创建单个控制器更有意义它们。