2017-03-06 99 views
4

我对我正在使用的体系结构有疑问。将数据访问层与服务层分开一层是好事情

我们有一个后端宁静服务,一个数据层(由python eve和一个restful服务实现)和数据库。数据(访问)层本身是一个独立的restful api。

在我们的后端服务应用程序中,我们有一个自定义的python eve库,它调用数据(访问)层,然后数据层将查询来自数据库调用的任何请求。

将它分开的原因之一是,我们希望从业务逻辑(后端服务)中隔离数据逻辑(查询逻辑)。

成本是显而易见的,另一层,每一个查询的另一轮I/O。

任何具有建筑经验的人都可以告诉我这个单独的数据访问层是否是一种好的做法,为什么?

回答

5

看着你正在讨论的架构,你的项目必须足够大才能证明它的开发成本。对于小型项目来说,这种体系结构将会过度杀伤。

假设你的项目足够大,是的;分离DAL,BLL和应用程序层总是很好。请参阅thisthis

好处是干净的分离提高了理解,因为您可以控制每个零件并降低维护成本。

另一方面,如你所说,成本是显而易见的(另一层,另一轮I/O)。是;这就是为什么我的第一段讨论了项目的规模。在大型项目中,这是一个折衷;你选择了其中一个。

在大型项目中,主要目标应该是IMO的可维护性。了解premature optimization is the root of all evil。所以,你从良好的可维护架构开始。每项技术都建议改进性能的基本规则;最初实施它们。如果您发现任何性能问题,请查找并修复它。事实上,由于分层,很容易找到瓶颈。

还有其他的好处。您可以单独测试每个图层。您可以独立处理每个图层,以提高性能,改变技术等。调试将非常简单。