首先,对软件分层,是有必要的,不管是从可维护性角度,还是从解耦的角度。
其次,被滥用,这个是的,很多人,并非真正理解分层的含义,就在照葫芦画瓢,照虎画猫。
分层,必须真正的对项目有利,不论是提高开发效率,还是可测试性,可维护性还是降低开发难度。这是架构师应该平衡各项之后做出的设计。清一色的所谓三层,确实有滥用之嫌。
然后,回答中,大量的人,把题主所谓的传统意义的三层和MVC混在了一起。这些答主,你们也属于滥用层次模型的一类人。相信你们也都习惯把业务逻辑放到controller里,甚至你们会觉得MVC的M和ORM里的M是同一个东西,然后还觉得MVC真牛逼,比三层架构好多了~而且,传统意义上的三层指的是UI(展示层)+BLL(业务逻辑层)+DAL(数据访问层);MVC属于UI层,是UI层的具体实现,它和三层架构没有替代关系。MVC在整个Web应用架构中,地位和WebForm是一致的,它对WebForm是替代关系。
针对软件的设计和架构,分层是需要的,对于略上规模的项目,就可以说是必要的。很多时候,甚至根据需要,会有更多的层次。当然,可以把更多的层次理解为三层架构中的细分,就像UI层的实现,可以细分为MVC/MVVM等层次。BLL层也许会根据业务需要,从业务逻辑上细分出来。而DAL也可以做文章,你可以直接调用ADO.NET访问数据库,但也可以用EF作为DAL使用。然而,也许你会发现,从性能考虑,应该加一层缓存。数据写入也先写入内存,然后批量入库,来提高数据访问性能。接着,自然就牵涉到数据一致性,这样一个数据持久层(PDL)又出现了,用以协调数据库和缓存之间的关系。如果项目比较大,用到了分布式存取,那么协调各个机器之间的数据,又可以再加一层了~~
可以看到,具体用几层,怎么用,这是根据实际具体需要决定的,而不是用公式去套。就和学习设计模式一样,这是对经验的总结和应用,而不是万能公式。
https://www.zhihu.com/question/28076940/answer/246597746
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739