SOA存储库背后的力量(五)

日期: 2007-12-16 作者:Ash Parikh 来源:TechTarget中国

  SOA中,XQuery使用实例

  XQuery在SOA中的强大能力表现在许多复杂的查询功能。下面的这些例子证明一个具体的XQuery实现是怎么被一个具体的native XML数据管理服务器无缝整合的。

  例 1:使用XQuery往WSDL中插入操作


declare namespace wsdl = "http://schemas.xmlsoap.org/wsdl/";
insert
<wsdl:operation name="testInsertOperation" parameterOrder="id">
      <wsdl:input message="impl:testInsertOperationRequest" name="testInsertOperationRequest"/>
      <wsdl:output message="impl:testInsertOperationResponse" name="testInsertOperationResponse"/>
    </wsdl:operation>
after doc("xxx:///SOARepository/webservices/PurchaseOrderWS.xml")
   /wsdl:definitions/wsdl:portType/wsdl:operation[@name="getPODetail"]

  例2:使用XQuery检查服务的可用性和更新注册器的状态


declare namespace wsdl = "http://schemas.xmlsoap.org/wsdl/";
declare namespace wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
for $i in collection(‘xxx:///SOARepository/webservices’)/wsdl:definitions
where fn:doc-available
   (fn:concat($i/wsdl:service/wsdl:port/wsdlsoap:address/@location,’?wsdl’ ))
return
<Service>
   <TimeStamp>fn:current-date()</TimeStamp>
   <Status>down</Status>

</Service>

 
  例三:用XQuery测量SOPA消息的可靠性


declare namespace wsdl = "http://schemas.xmlsoap.org/wsdl/";
declare namespace  msg ="http://schemas.xyz.com/msg";
declare namespace SOAP="http://schemas.xmlsoap.org/soap/envelope/";
<ExpiredMessage>
{
for $i in doc(‘file:///c:/SOARepository/ReliableMessaging/RM14.xml’)/SOAP:Envelope
where $i/SOAP:Header/ReliableMessage/TimeToLive < current-dateTime()
return
   $i
}
</ExpiredMessage>

  例4,用XQuery找回在策略文档中使用过的记号类型


declare namespace wsp="http://schemas.xmlsoap.org/ws/2004/09/policy/";
declare namespace wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
<Tokens>
{
for $policy in collection(‘xxx:///SOARepository/WSPolicy’)/wsp:Policy
  return  $policy/wsp:ExactlyOne/wsp:All/wsse:SecurityToken/wsse:TokenType
}
</Tokens >
… 

  结论

  在这篇文章中,我们介绍了一个native的XML数据管理服务器作为最合理的存储SOA数据的途径,因为数据本身是基于XML的。有些人可能会争论这些数据和元数据也可以用关系数据库来存储和管理。但是,由XML产生的数据和元数据必须被转换成相关的表达,从而进行大规模的映射和管理。由于企业中SOA数据和元数据迅速膨胀,复杂度将会越来越大。并且,由于这些数据经常被存取和消耗,一个由XQuery驱动的native XML数据管理服务器能被用来提供一个基于标准的中间缓存来减少运行时的负荷和提高SOA的可测量性和可靠性。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。