题图fromunsplash
我一直认为,程序员也是艺术家,他们撰写的每一行代码,是献给这大好世界的优美诗篇。不同的人,写的代码也许风格迥异。有的,如春风化雨润物无声,有的,如高山流水,曲高和寡,还有的如旱日春雷,先声夺人。而如果说,代码是诗篇,那么代码的分层艺术绝对是最先映入读者眼帘的序幕了。
分层,一直以来是一个非常经典的软件工程学问题,提到分层,无论是资深或者新入门的开发者,或多或少都有自己的理解。
在8年前,我刚参加工作时,有幸参与了比较多项目的研发和维护过程,这些项目的开发者,大多是比我年长几岁的软件开发者。在他们的开发习惯中,往往会倾向于直接在代码中写入用户界面、数据库访问等支持代码,甚至有相当一部分情况下,会把代码写入到用户界面中,这意味着在用户界面层,往往会写入大量的代码,说不定会超过上万行代码。我觉得可以将这种设计,理解为“单层架构“。
再后来的项目开始有了一点点改变,这个时候的架构,被成为“三层架构“。在.NET开发史上,三层架构成为一种历史悠久的框架,从十年前开始,一直到今天,依然是.NET开发者最为熟练的技术框架。如图所示,三层架构在客户端和数据库之间增加了一个中间层,将有效的业务规则、数据访问等放在业务层中进行处理。界面层主要使用对数据的绑定渲染,再通过数据层实现数据的提交处理。有的开发者说,三层架构通吃一切项目,似乎所有的项目都可以用三层架构来套用。然而在实际工作中,往往会忽略了业务逻辑层,业务逻辑往往会放在界面层或数据层中,最终导致界面层和数据层充斥着臃肿的代码,令人难以维护。
MVC架构也是一种非常主流的技术架构,这种架构是一种非常优秀的架构,他将用户界面层通过模型层最早来源于上世纪七十年代,为Smalltalk语言所设计的一种模式,许多基于用户界面的架构也受到了他的启发。MVC架构,通过将逻辑、数据、界面显示分离的形式,实现代码的组织,广泛适用于桌面端或网页程序的开发过程。这种架构的特点是耦合性低、重用度高、生产周期短、部署快。但是同样由于缺乏明确的定义,以及代码过于集中,导致代码腐化问题非常严重。
MVP架构是从MVC架构中演进出来的典型代表,这种架构通过Presenter来处理逻辑,Model提供数据,View负责显示。当然,他和MVC的区别在于,数据的显示往往是通过Presenter来进行的,所有的界面操作也都是在Presenter中实现,这意味着View层,只是单薄的一层。
与此同时,开发者们也善于使用存储过程或视图等不同的方式写入复杂的业务逻辑,期待的往往是如果是代码发生变更时,只需对数据库进行修改即可,而无需去修改已经部署在用户端的大量的代码。使用存储过程、触发器或视图等方式,时至今日,依然是备受白癜风用什么药膏卡泊三醇价格大概是多少