mvc Web应用程序应该是3层吗?

时间:2009-07-29 08:40:07

标签: asp.net-mvc design-patterns n-tier-architecture

我将很快设计几个Web应用程序。它们可能会在asp.net mvc中完成。

在我在delphi中完成的现有网络应用程序中,数据访问层被分隔成一个完全独立的应用程序,有时在不同的服务器上运行。对于代码重用而言,这比结构原因更多。这不会是下一个应用程序的一个因素,因为它将是全新的。

在mvc应用中有单独的数据访问应用程序是否过度杀伤?我将通过使用MVC将业务类分离出来,并且我将使用ORM来执行数据库持久性。

编辑:只是为了澄清;我使用术语“层”来指代单独的物理应用程序,而不仅仅是逻辑分离或层。

3 个答案:

答案 0 :(得分:6)

根据我的经验,“ Tier 一词通常是指物理应用程序分离,例如客户层和&服务器层。

MVC - 指的是3“图层”,关注点是围绕3个问题分离它详细说明模型(数据),视图(UI),控制器(应用程序逻辑)。

现在我已经对我的术语进行了区分..

  

在mvc app中有单独的数据访问应用程序是否过度杀伤?

我会说(再次取决于您的应用程序的意思),它不是矫枉过正,因为它实际上可能导致更易维护的系统。您的ORM 可能允许插入新的数据访问选项,但是如果您想添加新的ORM会怎样?具有明确分离的数据访问层(DAL)将在您的应用程序的这方面提供更大的未来灵活性。

另一方面,根据应用程序的规模和愿景,创建一个完全独立的数据访问选项可能是过度的,但简而言之,将DAL分成不同的程序集是一个非常推荐的实践组成实现MVC模式的应用程序。

希望这会有所帮助,如果您需要更深入的评论。

答案 1 :(得分:2)

嗯,我猜这取决于你是在谈论(pysical)还是(逻辑/项目)。

关于分层 - 您可以查看类似s#arp架构(code.google.com/p/sharp-architecture/)的内容,了解他们如何做到这一点(他们采用了相当大的分层方法)。

有关更简约视图的示例,请查看Ayende的博客:ayende.com/Blog /

关于层级 - 我认为不必要地添加额外的层并将线路覆盖在线上只会达到您的性能,除非您出于容量原因需要这样做。获得正确的层次,并在需要调整容量时将它们分隔成teirs(如果你已经很好地分离了你的问题,不应该进行太多的重构)。

答案 2 :(得分:0)

评论托比亚斯。

我说要添加足够的图层,以便它对您有意义并使其更易于维护。还要分散关注点。