什么是应用服务的另一个术语?

时间:2013-10-24 13:53:42

标签: domain-driven-design soa onion-architecture

我正在研究一个复杂系统重构的提案和原型。它是一个n层分布式架构,大致遵循DDD的原则,并具有Jeffery Palermo Onion Architecture的元素,特别是域模型/服务的核心概念的分离(这些与域问题密切相关,有些可能与最终自然地实现为远程WCF /工作流服务)来自应用程序模型/服务的更高级概念(通常代表应用程序/ UI代码协调操作的组件,并将作为依赖项注入这些应用程序中)。 / p>

我需要将这种方法传达给那些没有大量接触过面向服务的体系结构,SOLID原则,依赖注入,复合应用程序等的高管和/或开发人员。我遇到了一些对“概念”的重大阻力。应用程序服务“未实现为WCF或”Web“服务。

对我来说,“服务”只是实现某种“服务合同”的组件,“服务消费者”和“服务提供者”可以抽象地达成一致,这并不意味着它必然是“网络服务”,在一些服务器上的端口上侦听。然而,似乎我无法理解这一点 - 它似乎太微妙或太抽象。

我认为我只需要“应用服务”的另一个术语来区别于“网络服务”,但“API”或“SDK”或“助手类”或我听众很好理解的类似术语要么不是准确或似乎没有充分描述这个概念。

关于什么是一个好的替代术语的任何建议?

更新:我最近一直在阅读MVVM + Controller(MVVMC或MVCVM),并开始认为我们的一些应用服务操作可能真的被认为是控制器。我仍然不清楚验证(即IDataErrorInfo)实现如何在这个世界中起作用,但所有业务逻辑和验证都由“Controller”处理,可能引发类似于(或实际上相同的)INotifyPropertyChanged.PropertyChanged?

2 个答案:

答案 0 :(得分:2)

Bob叔叔在他的Clean Architecture方法中使用术语 Interactors 。它们或多或少equivalent到应用程序服务。 用例是另一种选择。

对于开发人员来说,Service通常被用作一个方便的术语,用于描述暴露操作的几乎任何无状态的东西,通常是因为人们不打算找到更好的名字。这是一种耻辱,但我看不出你能做些什么。与开发人员一起使用另一个单词进行应用程序服务只会加强他们对服务==远程服务的错觉 - 迟早,他们会发现整个世界都不这么认为。

答案 1 :(得分:1)

所以问题是“应用服务”的另一个术语是什么,以区别于“Web服务”: 那么“商业服务”呢? 或“域名服务”?