我在SOA这个概念上挣扎。假设有一个包含大量特定业务逻辑和资源的大项目。从我发现的SOAP和REST的意义上讲,业务逻辑部分是SOAP,资源/ CRUD部分是REST。使用SOAP和REST实现的SOA
我想到的想法是使用SOAP作为公共入口点并使用REST作为SOAP的内部API(因为它不应该具有业务逻辑),这样我就可以利用两者的强度结构。
这里的问题是写入详细/概要请求可能会在REST和SOAP服务中,这不利于维护。
应该避免混合使用SOAP和REST,还是可以以我描述它的正确方式使用它们?
编辑我会试着做一个更具体的案例。我也遇到了一篇好文章http://www.infoq.com/articles/tilkov-rest-doubts。这将通过对模型进行不同的重命名来解决在REST中使用业务逻辑的许多问题。
例如,如果您有产品订购并且您有折扣,可以在创建POST
产品后以/订单 URL为例进行计算。并且该折扣在GET
产品/订单URL后可见。这完全符合REST。
然而,当由于某种原因,你不能有产品X和ÿ以相同的顺序,这似乎有点难以在REST的服务来做。因为你必须给出正确的错误信息,如'x和y不能按照一个顺序',这暴露了业务逻辑,似乎更适合于SOAP。有没有办法做到这一点是REST,如果是这样,在这种情况下使用REST更好吗?
感谢您的回答。我用一些额外的数据更新了我的问题。如果你有x你不能做y并且应该做z,那么这个平台有很多逻辑。 –
好吧,我为车辆配置器的客户做了类似的事情,他们可以在车辆上添加选项。当然,一些选项依赖于其他选项,x必须有y,一些是互斥的,x不能与y等等。我有一些服务器业务层执行规则,在我的api中,我将车辆连同其最近一次有效的选项列表一起退回,然后列出“无法添加的选项”以及原因。 WCF或REST,它不是阻止你在这里的技术 - 你可以在邮件中返回任何你需要的东西。 – richardb