所谓的MVC就是Model-View-Controller。一个常见系统,往往Model层负责核心基本元素和基本算法,View层负责展示和表达数据,Controller层负责调度和组合,把Model层和View层连接在一起。
一般来讲,Model层通常是我们的Core,Controller层往往就是我们的shell,View层就是shell返回的数据。这个时候边界的思考就清楚了,谁是我们的model和model相关的核心计算,谁就是我们的core。谁是我们的Controller负责调度组合和内外相连,谁就是我们的shell。而我们的计算结果,也就是我们的View层,是会离开我们的应用供别人使用的,那它是我们的最外面的边界。我们思考边界只需要关注在View层,思考清楚我们的View是否在一个抽象层次上就可以了。
但是,世界不是这么简单的分三层就可以结束了,世界是往复循环以致无穷的。所以我们的MVC也是循环迭代的,也就是说MVC中的某一层还可能再分MVC。那么是哪一层呢?View层。还记得我们第一篇讲得,数据和过程是不严格区分的,所以我们返回的数据,可以被解析为新的过程,新的过程再产生新的数据,从而往复循环以致无穷。
所以可以认为服务端是原应用的Core层进化出来的。
如果我们把View层进化下去,我们前面提到的客户端的Shell返回的数据,还会再划分,就会有新的组件层(Component),模版层(Layout),页面层(Page,也有人爱用Container)等等。
随着出现了MVC,再进一步思考就会逐渐发现,其实core层不应该关心后端代码,它应该关心前端的领域对象,以用户眼中的模型为基础计算,而不是后端业务人员眼中的模型为基础来计算。所以他会把弥合后端和前端的工作交给shell层,而shell层会夹在三方面很难受,他一方面要对接后端,一方面要对接core,还有一方面要适配真正的前端模型。前端和后端的拉锯战就会出现,在这股力量的挤压之下,我们的BFF就会自然而然的出现,所谓的前后端分离也就是自然而然的事情了。
网友评论