Architectural Pattern(3)-N-Tier与MVC架构的区别与联系

来源:互联网 发布:net反编译成源码 编辑:程序博客网 时间:2024/05/30 04:54

MVC模式具体可参见“Architectural Pattern(1)--MVC",N-Tier可参见"Architectural Pattern(2)-n tier architecture pattern",本小文主要考虑N-Tier与MVC架构的区别与联系.

在”http://www.csdn123.com/html/technology/2013/20131218/3830.htm“看到这么一段话:
就拿多层架构中最典型的三层来说,在三层中,数据访问层(DAL)、业务逻辑层(BLL)、Web层各司其职。MVC是Model-View-Controller。严格说起来这三个加起来才是三层架构中的Web层,换种说法就是MVC就是表示层中再度分化,分成了控制器、视图、实体三个部分。View完成页面逻辑,Model则封装需要传递到View进行显示的数据,而控制层则与三层中的BLL进行通信。
这段话中的”层“指的是Tier而不是Layer(Layer与Tier的区别详见Architectural Pattern(2)-n tier architecture pattern),

我仔细思量这段话,发现他有两个误解。
一个是他有个自相矛盾的地方:MVC的控制层与三层中的BLL进行通信,按照MVC的模型,controller是与model通信的,那么BLL就是model了,这就与前面这句”这三个加起来才是三层架构中的Web层“是相互矛盾的。

MVC的三个模块,是可以看做3个Layer,而这3个layer到底属于哪几个Tier 则需要具体问题具体分析(在不同的应用场景中是不一样的)。这里单说,如果是jsp+servlet的模式,那么由于jsp与servelet是一体的,他们只能部署在一起,只能算一个Tier,因此这时候就只有两个Tier: jsp+servelet(view+controller)算做Presentatiion Tier, Model则同时完成BLL+DAL的功能.

第二个是他对model的理解是有局限的,他说”Model则封装需要传递到View进行显示的数据“, 但是实际上Model(数据模型)的定义远强于这个描述:用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。也就是说,他包括了BLL+DAL,而返回给jsp的仅仅是一个value object,是model的一个返回值而已,并不是model的全部。

综上所述:如果我们使用了jsp+Servelet的架构,那么MVC的VIEW(也可以说包括controller,但有的文章把controller单独拿出来,哪一层都不算)对应的是presentation tier,model则包括了BLL+DAL。

0 0