RSS订阅
RSS订阅TT SOA
您现在的位置:TT SOA > EDA > Web服务通告

Web服务通告

2008-9-9  选择字号:  | |
打印本文章

导读:Web服务的首要目标就是运用相似的原则桥接应用的差异,结果会把XML这个同样通告问题带到某个Web服务情况当中。Web服务标准的OASIS公司创建了Web服务通告WSN。

关键词:Web服务 XML OASIS WSN

正在加载数据... 【TechTarget中国原创】由于Web服务没有锁定某个特定的平台或者用户,所以在实现松耦合方面起了很大的作用。原则上来说,该项设计是诸多企业进行设置的最佳选择。下面我们要解决的一个重要问题,这个问题在松耦合架构方面需要一个特定服务:应用通告。

  应用通告这个概念在Java JMS, Microsoft MSMQ和 TIBCO Rendezvous这样的企业信息技术领域根深蒂固。迫于在不同的应用之间建立通讯渠道的压力,通信技术成为了IT企业领域的前沿科技。但是,在将多种应用混合和对比的过程当中也出现了许多问题,例如建立一个统一的通告机制解决设计中的固有问题……

【TechTarget中国原创】由于Web服务没有锁定某个特定的平台或者用户,所以在实现松耦合方面起了很大的作用。原则上来说,该项设计是诸多企业进行设置的最佳选择。下面我们要解决的一个重要问题,这个问题在松耦合架构方面需要一个特定服务:应用通告。

  应用通告这个概念在Java JMS,Microsoft MSMQ和TIBCO Rendezvous这样的企业信息技术领域根深蒂固。迫于在不同的应用之间建立通讯渠道的压力,通信技术成为了IT企业领域的前沿科技。但是,在将多种应用混合和对比的过程当中也出现了许多问题,例如建立一个统一的通告机制解决设计中的固有问题。

  Web服务的首要目标就是运用相似的原则桥接应用的差异,结果会把XML这个同样通告问题带到某个Web服务情况当中。Web服务中的重量问题不仅是因为在连接不同应用时所产生的不同的设计变量,还与应用和网络绑定的性质有关,这样就会产生如等待时间,网络故障,以及设计无效等问题。

  在解决这些问题的过程中,改进过许多Web服务标准的OASIS公司创建了Web服务通告(WSN)。WSN的目的是为建立基于主题的发布/预定Web服务提供一个事件驱动的方式。如果你了解以前提到的企业通信技术,这条术语对你来说也许陌生,它包括以下几个部分:

  ·订户:一个将自己注册到特定事件/通告中以便得到更新的Web服务

  ·发行人:一个将通告信息发送给订户的Web服务。

  ·事件/通告:令发行人将通告信息传递给订户的真正报告表

  ·通告信息:依照事件/通告,将自己发送到订户手中的有效负荷传

  WSN研究小组将原有的部分分解为更加具体的概念,这足以帮助我们理解WSN试图解决的Web服务模式。WSN事实上必须遵守三个规范:WS-Base Notification,WS-Brokered Notification和WS-Topics,但是在认识到这三个规范的复杂性之后,这些研究小组应该最小限度的考虑到负责WSN实施的终端用户。

  既然我们已经为大家介绍了WSN的核心理念,现在我们再介绍一个WSN实例。在其它的专栏中,我们将依据Apache Software Foundation生产的开放源软件进行深入的探索。Pubscribe将为我们提供一个可以和Apache生产的Web服务栈一起使用的WSN实施。,例如主引擎使用的Axis。Apache的WSRF实施,用于WS-Coordination的Apache Kandula或者在其它项目/规范中用于WS-ReliableMessaging的Apache Sandesha。

  在开始工作之前,我们应该认识到Apache的Pubscribe是与其WSRF(Web服务资源框架)实施紧密地整合在一起的。由于Web服务通告流程暗含这代表发布人进行数据检索维护某种状态的意思,但是我们要注意的是这并不表示每一个Web服务栈要求WSRF使用WSN.这是WSN设计师的独特选择。这种路由可能和其他的WSN实施不同。对此你可以阅读先前关于WSRF核心概念的专栏。我们的实施包含两种类型呼叫中心使用的Web服务。其中一个类型服务是用来传送外来信息的(发布人),其他的类型是用真正的有效负荷(通告信息)来处理请求的(订户)。该有效负荷包含了XML语言编码的片段。从业务层面来看,Web服务发布人可能代表一个机构的总部,订户可以被看做是机构的分部或者是离岸系统,它可以在先到先得的原则之上接收发布人的请求。

  我们的应用中包含两种类型的Web服务,其中一种用于传送外来请求(发布人)另一种用有效负荷(通告信息)来处理这些请求(订户),该有效负荷中包含XML编码的片断,在业务层面,网络服务发布人代表机构的总部,而订户则代表分部或者离岸系统,并按照先到先得的原则来接收外来请求

  在这种状态下,我们要先看一看总部将要发布的WSDL合同,这项合同需要经过每个订户的处理,表1.1展示了这个合同。

  <?xml version="1.0"?>

  <definitions name="SupportSystemResourceDefinition"
     targetNamespace="http://ws.apache.org/resource/example/filesystem"
     xmlns="http://schemas.xmlsoap.org/wsdl/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-  ResourceProperties-1.2-draft-01.xsd"
     xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-  ResourceProperties-1.2-draft-01.wsdl"
     xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-  BaseNotification-1.2-draft-01.wsdl">

  <!-- WSDL <import>, <types> and <message>
       sections omitted for brevity -->

     <portType name="SupportSystemPortType"   wsrp:ResourceProperties="tns:SupportSystemProperties">
 
       <!-- Resource operations -->
        <operation name="GetResourceProperty">
           <input name="GetResourcePropertyRequest"   message="wsrpw:GetResourcePropertyRequest"/>
           <output name="GetResourcePropertyResponse"   message="wsrpw:GetResourcePropertyResponse"/>
           <fault name="ResourceUnknownFault"   message="wsrpw:ResourceUnknownFault"/>
           <fault name="InvalidResourcePropertyQNameFault"   message="wsrpw:InvalidResourcePropertyQNameFault"/>
        </operation>

        <operation name="SetResourceProperties">
           <input name="SetResourcePropertiesRequest"   message="wsrpw:SetResourcePropertiesRequest"/>
           <output name="SetResourcePropertiesResponse"   message="wsrpw:SetResourcePropertiesResponse"/>
           <fault name="ResourceUnknownFault"   message="wsrpw:ResourceUnknownFault"/>
           <fault name="InvalidResourcePropertyQNameFault"   message="wsrpw:InvalidResourcePropertyQNameFault"/>
        </operation>

       <!-- Other Resource operations omitted for brevity -->

       <!-- Notification operations -->

        <operation name="Subscribe">
           <input message="wsntw:SubscribeRequest" />
           <output message="wsntw:SubscribeResponse" />
           <fault name="ResourceUnknownFault"   message="wsntw:ResourceUnknownFault" />
           <fault name="SubscribeCreationFailedFault"   message="wsntw:SubscribeCreationFailedFault" />
           <fault name="TopicPathDialectUnknownFault"   message="wsntw:TopicPathDialectUnknownFault" />
        </operation>
     
        <operation name="GetCurrentMessage">
           <input message="wsntw:GetCurrentMessageRequest" />
           <output message="wsntw:GetCurrentMessageResponse" />
           <fault name="ResourceUnknownFault"   message="wsntw:ResourceUnknownFault" />
           <fault name="InvalidTopicExpressionFault"   message="wsntw:InvalidTopicExpressionFault" />
           <fault name="TopicNotSupportedFault"   message="wsntw:TopicNotSupportedFault" />
           <fault name="NoCurrentMessageOnTopicFault"   message="wsntw:NoCurrentMessageOnTopicFault" />
        </operation>
     
       <!-- Other Resource operations omitted for brevity -->

     </portType>
 
     <binding name="SupportSystemSoapHttpBinding"   type="tns:SupportSystemPortType">

        <soap:binding style="document"   transport="http://schemas.xmlsoap.org/soap/http"/>

         <!-- Binding for notification operation(s) -->

        <operation name="Subscribe">
           <soap:operation style="document"/>
           <input>
              <soap:body use="literal"/>
           </input>
           <output>
              <soap:body use="literal"/>
           </output>
           <fault name="ResourceUnknownFault">
              <soap:fault name="ResourceUnknownFault" use="literal"/>
           </fault>
           <fault name="SubscribeCreationFailedFault">
              <soap:fault name="SubscribeCreationFailedFault" use="literal"/>
           </fault>
           <fault name="TopicPathDialectUnknownFault">
              <soap:fault name="TopicPathDialectUnknownFault" use="literal"/>
           </fault>        
        </operation>           

         <!-- Other bindings for operations omitted from brevity -->

     </binding>

     <!-- Service name declaration -->
     <service name="SupportSystemService">
        <port name="filesystem" binding="tns:SupportSystemSoapHttpBinding">
           <soap:address  location="http://www.hqsupportsystem.com/pubscribe/services/pcsupport"/>
        </port>
     </service>

  </definitions>

  在表的最顶端,你会看到Web服务通告的命名空间。接下来你会看到两个和通告事件相关的操作:预定和获取现有信息,用户Web服务呼叫这两种方法以便通告发布人它想要了解事件,并且获得最新信息。在WSDL合同的各处你会找到WSRF语句以及同WSDL合同相关的典型操作和捆绑。,但是我们只能描述和通告中主题相关的片段。

  由于文章篇幅的限制,我们就不再展示WSDL背后的Web服务,发布人以及相应的订户Web服务了。但是必须要确保与Web服务相对应的生命周期重点关注上述在WSDL提到的两个方法,并保证Pubscribe提供的API建立的这两种方法的逻辑完全建立起来。

  现在我们可以对WSN做总结了。 现在你应该能够同Web服务一样并入到相同的松耦合架构之中了。有了应用通告的支持,业务就需要更长时间的需要基于事件通告的存活过程。

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
目前,SOA(面向服务架构)大潮正在席卷着整个世界,而且势不可挡。作为一种集成企业应用的方法论,SOA具备灵活性、标准性、重用性强和成本低等优点……
目前,SOA在国内外已经成为替代一度风靡的面向对象、BS结构、三层结构等软件解决方案的另一个热门词汇。几乎每一个IT公司都有基于SOA的解决方案……
Web的开始阶段是简单的网站(信息中介和信息发布的平台),随着Internet 和Intranent、Extranet的快速发展而发展成为各种应用的主要平台……
当XQuery查询时,不能满足XML的需求?我应该怎样使用XQuery查询?举一些具体的例子,说明你需要做的与XML可能会更容易提供一个确切的答案,但这里是一个概括……
从早期将XML转换为关系型数据表或大型对象,到今日转向原生XML数据型态,关系型数据库与XML之间的合作日益紧密……
虚拟化和SOA之间是一种间接的、相辅相成的关系。也许在IT及业务转型中,两者的结合使用会发挥最大的优势。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。
云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。
安全对于许多的IT部门来说都是一个重要的问题之一,但是SOA安全问题完全是在另一个新的纬度上了。对于SOA为一个机构所带来的许多的好处,例如具有在许多不同的提供者和供应商的情况下混合和匹配服务。
最新更新
专家答疑
技巧
Ron Schmelzer,Jason Bloomberg
你认为通过遵循IT组织步骤可以演变为SOA吗?ZapThink公司明确SOA实行肯定是一个挑战——也不应被视为这一倡议应得到执行的一个步骤就是整个企业的基础……
Dana Gardner
您能解释什么是“私有云”吗,能否举例说明?这是供应商需要建立的基础吗?作为托管服务供应商和服务供应商寻求最有效和最强大的基础设施,作为他们的“云”支持能力……
Andrew Pollack
我们正在寻找一种从主机选择SOAP服务器的请求。我们希望制造一个远程程序呼叫(RPC)从CICS程序的SOAP服务器,其中进程请求,使错误或成功后的反应……