服务层是不是外层?如果不是,那么它属于哪一层?
请回复
谢谢
您可以以多种不同的方式组织系统,而不仅仅是一种分层架构。我从来没有使用过“外层”这个词。以多种方式分析同一系统甚至是合理的逻辑架构,物理架构......
如果我们知道您在所讨论的架构中选择了哪些层,我们只能回答您的问题,然后应该可以了解服务所在的位置。您只告诉我们“外部”,我们不知道有什么替代方案。
我通常会考虑演示、业务逻辑和持久性。在这种情况下,服务位于业务逻辑层。
我会说将服务视为系统的公共接口是非常合理的,因此在某种意义上它们位于“外”层。
添加以回应评论:
对此没有一个简单的答案。这完全取决于我们所说的“服务”是什么意思以及我们的层在做什么。让我们举一个具体的例子:假设我们的 UI 想要显示发票的详细信息。我们可能会选择创建服务
InvoiceDto getInvoiceDetails(int invoiceNumber)
很明显,该服务的实现是在业务逻辑层中。接口可能是一个简单的库,也可能是一个 Web 服务,这取决于我们如何在各层之间进行通信。
然后我们决定向客户公开该服务,以便他们的应用程序可以通过 Internet 调用该服务。我们将在 Web 层中有一些代码,这些代码可能会公开一个 REST 服务
http://dave.org/service/invoice/nnnn
很明显,在 Web 层中运行了一些适配器代码,我们可以在那里管理身份验证等。但是服务在哪里呢?只是那个适配器吗?是业务逻辑吗?两者兼而有之?
在我看来,真正的服务是在业务层中运行的逻辑,其余的只是管道。