MVC web应用程序应该是三层架构吗?

5

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

在我现有的使用Delphi编写的Web应用程序中,数据访问层被分离到完全独立的应用程序中,有时在不同的服务器上运行。这样做更多是为了代码重用,而不是为了架构原因。在下一个应用程序中,这不会是一个因素,因为它将是全新的。

在MVC应用程序中,是否需要拥有单独的数据访问应用程序?通过使用MVC,我已经将业务类分离出来,并且我将使用ORM来进行数据库持久化。

编辑:仅澄清一点; 我使用“层”一词来指代单独的物理应用程序,这不仅是逻辑分离或层。


2
如果你将业务类和数据库分离出来进行持久化,那么你已经至少有了三个层次。GUI/逻辑/数据库 - 这是三层,所以你不会得到n<3。如果你需要更多的模块化,可以引入一个额外的层次 - 但这完全取决于你的应用程序。 - Tobias Langner
3个回答

6
“Tier”的术语通常指物理应用分离,例如客户端层和服务器层。
MVC是指三个“层”,关注点是围绕其详细说明的三个方面进行分离,即模型(数据),视图(UI)和控制器(应用逻辑)。
现在我已经做出了有关我的术语的区分...
“在mvc应用程序中拥有单独的数据访问应用程序是否过度设计?”
我想说“不”(还要看您所说的应用程序),它并不过度设计,因为实际上可能会导致更易于维护的系统。您的ORM将“可能”允许插入新的数据访问选项,但是如果您希望添加新的ORM怎么办?明确分离的数据访问层(DAL)将允许在应用程序此方面具有更大的未来灵活性。
另一方面,根据应用程序的规模和愿景,创建完全独立的数据访问选项可能过度设计,但简而言之,在实现MVC模式的应用程序的组合中,将DAL分离为不同的程序集是非常推荐的做法。
希望这有所帮助,如果需要更深入的内容,请发表评论。

2

我想这要看你是在谈论 (逻辑/项目)还是(物理)。

关于分层 - 你可以参考像s#arp architecture(code.google.com/p/sharp-architecture/)这样的东西,了解他们如何实现(他们采用了比较全面的分层方法)。

如果想了解更简单的方法,请查看Ayende的博客:ayende.com/Blog/。

关于层次结构 - 如果没有容量问题,无需增加额外的层次并将所有内容都放在网络上,否则会影响性能。先确定好层次结构,然后根据需要调整层次结构以满足容量(如果你已经很好地分离了各个关注点,那么不需要太多的重构工作)。


0

很好的评论,Tobias。

我认为应该添加足够的层次结构,以便您理解并使其更易于维护。同时保持关注点的分离。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接