最近公司有一位同事在周会上做了有关SOA的分享,在开始时提出了一个问题,在我们开始一个项目时,是按照功能层面进行架构分拆(例如Customer项目,Order项目),还是按照结构层面进行架构分拆(例如Model层,View层)。恰巧在前几天的一个后台项目重构过程中,一个同事也问了我类似的问题,所以想在这里简单记录下。 分层架构 1 我们先看传统的分层架构(Layer Pattern),它是以结构层面对软件项目进行分层划分,将应用程序划分为多个子任务,让每个任务处于一个单独的架构层,完成独立的工作,常见的例子包括我们在项目中常常涉及的软件三层架构以及我们一直接触到的OSI五层/七层模型。分层架构听上去非常简单,但是我在这里要提一些理论上需要注意的地方:
2 第N层只能调用第N-1层的服务。这是分层架构最重要的一点,所以很多人把MVC与三层架构相混淆时请思考这一点,MVC模式中MVC之间互相耦合,Model在Controller和View之间传递,Controller处理View的逻辑,他们并不是一个分层的关系。而三层架构将用户界面层,业务逻辑层,数据访问层通过具体的接口方式彼此隔离,不存在跨层的依赖关系。 3 在第N-1层缓存第N层需要调用的数据。分层最大的诟病其实就在于层层调用而产生的性能消耗,所以对于分层模式来说,缓存是非常重要的一环。但是请一定注意一点,缓存是处于被调用方而非调用方,这一点有两个原因: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|