我在SO上看到了几个围绕这个主题的问题,但没有一个真正令我满意的答案。
我试图用言语表达我感受到的东西,但并不总能清晰地表达出来,以至于不能说服身边的人。可能是我错了。也可能是我的理解不够深入,找不到合适的论据。
你如何对比按照“面向服务的方法”而非“传统”的API方法开发应用程序?
让我们在这里完全明确一点,通过服务,我不一定指Web服务。
以下是我看到的一些区别。如果我错了,请纠正我:
- 服务是一个“生物”,你可以按照特定和明确的协议与其交流。服务有自己的运行时,而库使用你的应用程序的运行时。你可以将这个“生物”移动到任何地方。
- 库允许基于代码的集成,而服务传统上使用基于消息的集成(然而,没有什么真正阻止你编写基于交换消息的库)。
- 服务是可发现的。
- 合同是明确的,并在运行代码之外表达。
- 服务是自治的(但在这里,你也可以编写自治的API,不是吗?)
- 边界是明确的。
我错过了什么吗?还有什么能真正区分服务和高级API吗?