Web 2.0 REST / JSON世界中的企业SOAP服务

随着JSON和其他NoSQL数据标准格式的普及,XML格式的复杂性(在某些情况下甚至是普通的冗长程度)都被避免了。 但是,XML及其周围形成的功能和标准已成为企业及其业务流程的关键。 但是,客户的需求要求他们开始支持多种格式。 为此,Axis2之类的工具框架已开始增加对采用基于WSDL的服务并生成JSON响应的支持。
企业需要生活在后SOAP世界中,但要利用他们多年来开发的专业知识和SOA基础架构。 Axis2是执行此操作的一种方法,但是它不提供对Box的监视和策略支持。 另一个选择是ebay的姜黄SOA项目。 本来就可以直接使用WSDL(由STAR标准组织提供),并且不仅可以支持SOAP 1.1 / 1.2,而且还可以支持REST风格的服务,该服务可以为XML,JSON和其他任何其他数据格式提供支持需要支持。
不过有一个问题,姜黄SOA并非在设计时就考虑了完整的SOAP和W3C Web服务堆栈。 它使用WSDL仅描述服务支持的操作和数据格式。 因此,诸如WS-Security,WS-Reliable Messaging和XML Encryption之类的高级功能并不是Turmeric固有的内置功能。 根据您的需求,您将需要使用管道处理程序并增强协议处理器以支持某些高级功能。 但是,这些是可以解决的项目,它可以与现有的Web服务互操作以充当代理。
例如, STAR组织提供了一个Web服务规范 ,该规范已在自动化行业中实施,以为其规范提供传输。 使用像姜黄SOA这样的框架,现有的应用程序可以以多种格式提供给贸易伙伴和服务使用者。 例如,可以在RESTful xml中提供数据:
<?xml version='1.0' encoding='UTF-8'?>
<ns2:PullMessageResponse xmlns:ms="http://www.ebayopensource.org/turmeric/common/v1/types" xmlns:ns2="http://www.starstandards.org/webservices/2009/transport">
   <ns2:payload>
      <ns2:content id="1"/>
   </ns2:payload>
</ns2:PullMessageResponse>

或者可以提供以JSON格式表示的相同XML:

{
    "jsonns.ns2": "http://www.starstandards.org/webservices/2009/transport",
    "jsonns.ns3": "http://www.starstandards.org/webservices/2009/transport/bindings",
    "jsonns.ms": "http://www.ebayopensource.org/turmeric/common/v1/types",
    "jsonns.xs": "http://www.w3.org/2001/XMLSchema",
    "jsonns.xsi": "http://www.w3.org/2001/XMLSchema-instance",
    "ns2.PullMessageResponse": {
        "ns2.payload": {
            "ns2.content": [
                {
                    "@id": "1"
                }
            ]
        }
    }
}
上面的代码是从相同的Web服务生成的,但是只更改了标头以指示应返回的数据格式。 无需更改业务逻辑或Web服务实现代码本身。 在姜黄中,这是通过数据绑定框架及其相应的管道处理程序来处理的。 对于Axis2,这是消息请求配置条目。 无论如何完成,重要的是能够利用现有服务,但以消费者要求的格式提供数据。
对于那些感兴趣的人,我创建了一个示例STAR Web服务,可以将其与Turmeric SOA一起使用以查看其工作原理。 代码可以在github上找到
虽然姜黄处理SOAP协议的基础知识,但并不容易支持诸如在soap:header中使用和存储信息之类的高级项目。 您可以获取相关信息,但是由于在姜黄服务中仅使用WSDL来描述数据格式和消息,因此底层肥皂传输支持不一定要充分利用整个规范。 根据您的要求,Axis2可能会更好,但是姜黄SOA提供了其他项,例如服务指标,监视控制台,策略管理,通过基于XACML 2.0的策略进行速率限制等等。 如果您已经以W3C方式编写了现有的Web服务,但是需要提供其他格式的数据,则可以同时使用姜黄。 这不是一个命题。 利用为您提供最大灵活性的工具,以最少的工作量即可将数据提供给用户。

翻译自: https://www.javacodegeeks.com/2012/08/enterprise-soap-services-in-web-20.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值