具有SOAP和REST实现的SOA

具有SOAP和REST实现的SOA,soap,soa,restful-architecture,Soap,Soa,Restful Architecture,我正在与SOA的概念作斗争。假设有一个包含大量特定业务逻辑和资源的大型项目。从我发现的SOAP和REST是有意义的,SOAP用于业务逻辑部分,REST用于资源/CRUD部分 我想到的想法是将SOAP用作公共入口点,并将其余部分用作SOAP的内部API(因为它不应该具有业务逻辑),这样我就可以利用这两种结构的优势 这里的问题是,编写详细信息/概述请求可能会在REST和SOAP服务中进行,这不利于维护 是否应该避免将肥皂和REST混合使用,或者可以按照我所描述的正确方式使用它们 编辑我将尝试提出更具

我正在与SOA的概念作斗争。假设有一个包含大量特定业务逻辑和资源的大型项目。从我发现的SOAP和REST是有意义的,SOAP用于业务逻辑部分,REST用于资源/CRUD部分

我想到的想法是将SOAP用作公共入口点,并将其余部分用作SOAP的内部API(因为它不应该具有业务逻辑),这样我就可以利用这两种结构的优势

这里的问题是,编写详细信息/概述请求可能会在REST和SOAP服务中进行,这不利于维护

是否应该避免将肥皂和REST混合使用,或者可以按照我所描述的正确方式使用它们

编辑我将尝试提出更具体的案例。我还发现了一篇好文章。通过以不同的方式重命名模型,这将解决在REST中使用业务逻辑的许多问题

例如,如果您有一个产品订单,并且您有折扣,则可以在(创建)
将产品发布到/order URL后计算折扣。并且在
GET
ing/order URL上的产品后,折扣是可见的。这完全适合休息


然而,由于某些原因,产品x和y的顺序不能相同,在REST服务中这样做似乎有点困难。因为您必须给出适当的错误消息,如“x和y不能在一个顺序中”,这是公开业务逻辑,似乎更适合SOAP。有没有办法做到这一点的方法是REST?如果有,在这种情况下使用REST是否更好?

这是一个宽泛的问题,可能太宽泛了。当然,这取决于你在建什么。如果你提供更多的细节、平台、目标设备等,你会得到更好的答案


但是,考虑为所有的东西,公共的+内部的构建REST API。我建议查看ServiceStack文档,其中讨论了api的方法。即使您不使用他们的工具集,这些概念也将帮助您构建自己的web api。

谢谢您的回答。我用一些额外的数据更新了我的问题。该平台有很多逻辑,如果你有x,你不能做y,应该做z。好的,我已经为一个客户做了类似的事情,他们可以为车辆配置添加选项。当然,有些选项取决于其他选项,x必须有y,有些是互斥的,x不能与y,等等。我有一些服务器业务层来执行规则,在我的api中,我返回车辆及其最近的有效选项列表,然后是一个“违反规则”列表,详细说明我无法添加的选项以及原因。WCF或REST,这并不是阻止您的技术——您可以在消息中返回您需要的任何内容。