新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Web服务(Web Services,WS), 语义Web服务(Semantic Web Services, SWS)讨论区: WSDL, SOAP, UDDI, DAML-S, OWL-S, SWSF, SWSL, WSMO, WSML,BPEL, BPEL4WS, WSFL, WS-*,REST, PSL, Pi-calculus(Pi演算), Petri-net,WSRF,
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLW3CHINA.ORG讨论区 - Web新技术讨论『 Web Services & Semantic Web Services 』 → 如何区分SOAP Messaging和SOAP RPC 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 11564 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 如何区分SOAP Messaging和SOAP RPC 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     lyman 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:66
      门派:XML.ORG.CN
      注册:2004/11/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lyman发送一个短消息 把lyman加入好友 查看lyman的个人资料 搜索lyman在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lyman的博客楼主
    发贴心情 如何区分SOAP Messaging和SOAP RPC


    我是SOAP的初学者,我一直存在这么一个问题:SOAP好像有两种使用方式,即SOAP RPC和 SOAP Messaging,我如何区分它们?SOAP规范中是否对此有显著规定?

    例如,现在服务端程序收到客户端的一个SOAP XML文档,我怎么知道它是否发起RPC调用,还是一个一般性的需要应用层解析的消息?如果是RPC调用,我应该能够知道客户端调用哪个或哪些方法,以及每个方法的所有参数把?我以为可以写一段通用的代码来获取方法列表以及每个方法的参数。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/19 14:35:00
     
     zhouyg 帅哥哟,离线,有人找我吗?狮子座1978-8-1
      
      
      等级:大一(高数修炼中)
      文章:10
      积分:185
      门派:W3CHINA.ORG
      注册:2004/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhouyg发送一个短消息 把zhouyg加入好友 查看zhouyg的个人资料 搜索zhouyg在『 Web Services & Semantic Web Services 』的所有贴子 访问zhouyg的主页 引用回复这个贴子 回复这个贴子 查看zhouyg的博客2
    发贴心情 
    SOAP Messaging 和 SOAP RPC  都是RPC (Remote proceduce call 远程程序呼唤),即用户端呼唤
    服务器上的一个程序,程序在服务器上执行,执行完后有两种可能性
    1) 服务器要把执行的结果返回给用户 (这种情况用 SOAP RPC)
    2) 服务器不需要返回如何结果给用户 (这种情况用 SOAP Messaging)

    其实可以认为SOAP Messaging 是 SOAP RPC 的一种特殊情况, SOAP Messaging 可以实现的都可以用SOAP RPC 来实现,不过SOAP RPC 用起来要复杂一些。
    使用SOAP RPC 时,SOAP 包的格式是有规定的,在SOAP 包中要写清楚,呼唤哪个CLASS 的哪个
    Method ,如果需要参量,参量也要按顺序写清楚。这样服务器才知道要去执行哪个程序,然后将结果也用一个SOAP包返回。
    下面看个例子
    用户呼唤:
    <methoCall>
    <methodName>SayHello</methodName>
    <params>
    <param>
    <value>world</value>
    </param>
    </params>
    </methodCall>

    服务器回答:
    <methodResponse>
    <params>
    <param>
    <value>Hello world !!!</value>
    </param>
    </params>
    </methodResponse>

    ----------------------------------------------
    ------ A thousand mile journey begins with the first step ... -----Laozi ------

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/21 4:45:00
     
     lyman 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:66
      门派:XML.ORG.CN
      注册:2004/11/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lyman发送一个短消息 把lyman加入好友 查看lyman的个人资料 搜索lyman在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lyman的博客3
    发贴心情 

    这种远程调用的意思我是知道的。我的困惑是文档中有什么规定的标签标明这是一个方法调用,这些是这个方法的参数。举一个具体例子:如下。
                
    <soap:Envelope
     xmlsns:soap="http://schema.xmlsoap.org/soap/envelope/"
     soap:encodingStyle="http://schema.xmlsoap.org/soap/encoding/"
     xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
     <soap:Header>
      <cwmp:ID soap:mustUnderstand="1">1234</cwmp:ID>
     </soap:Header>
     <soap:Body>
      <cwmp:GetParameterValuesResponse>
       <ParameterList soap:arrayType="cwmp:ParameterValueStruct[4]">
        <ParameterValueStruct>
         <name>ADSLCPE.DeviceInfo.Manufacture</name>
         <value xsi:type="xsd:string">Alpha Telecom Inc.</value>
              </ParameterValueStruct>
        <ParameterValueStruct>
         <name> ADSLCPE.DeviceInfo.ManufactureOUI</name>
         <value xsi:type="xsd:string">0006D3</value>
              </ParameterValueStruct>
        <ParameterValueStruct>
         <name> ADSLCPE.DeviceInfo.ModelName</name>
         <value xsi:type="xsd:string">Arion3100</value>
              </ParameterValueStruct>
        <ParameterValueStruct>
         <name> ADSLCPE.DeviceInfo.Description</name>
         <value xsi:type="xsd:string">ADSL Modem</value>
              </ParameterValueStruct>
       </ParameterList>
        </cwmp:GetParameterValuesResponse>
     </soap:Body>
    </soap:Envelope>

    请问: GetParameterValuesResponse是一个方法名吗?看起来是的。但是我的XML解析程序怎么知道这就是一个方法名?难道GetParameterValuesResponse是一个SOAP规范预定义好的标签吗?(显然不是!)同样的道理,ParameterList,ParameterValueStruct是参数,我们人为也许能够看出这些是参数,但是解析程序怎么知道这是参数?它根据什么来判断?这正是我不能理解的!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/22 18:44:00
     
     usabcd 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:13
      积分:329
      门派:XML.ORG.CN
      注册:2004/5/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给usabcd发送一个短消息 把usabcd加入好友 查看usabcd的个人资料 搜索usabcd在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看usabcd的博客4
    发贴心情 
    RPC是指远程方法调用,
    Messaging一般认为是直接传递消息,这个消息一般指现成的xml文档。
    2种方式有各自的应用场景。
    RPC使用比较自然直观,在实际开发时,先完成服务端,服务端完成后会提供一个
    叫做WSDL的文档给客户端开发人员。客户端开发人员根据WSDL文档确定
    这个Web Service的各种特性,包括调用方式,方法名,参数等。
    客户端开发人员常常借助SDK工具将WSDL描述转化为本地开发语言的代码原型。
    在原型代码中可以清楚看到所使用的方法和参数。
    值得注意的是,RPC方式中间的xml解析过程对两端的开发人员都是透明的,
    他们并不需要了解具体的细节,这些都是由Web Service容器实现的。
    他们只是象平常一样做普通的函数调用而已。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/23 11:49:00
     
     lyman 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:66
      门派:XML.ORG.CN
      注册:2004/11/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lyman发送一个短消息 把lyman加入好友 查看lyman的个人资料 搜索lyman在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lyman的博客5
    发贴心情 
    非常感谢,这么说来我有些明白了。不过我还觉得似乎还有问题。在我现在参与的一个项目中,我们要写SOAP服务端,要打交道的客户端是一台ADSL设备(遵从的规范是TR-069),似乎没有WSDK, Web Services容器这些概念,只有SOAP的应用。等有时间再来阐述。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/26 15:31:00
     
     anjie8484 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:15
      积分:129
      门派:W3CHINA.ORG
      注册:2005/11/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给anjie8484发送一个短消息 把anjie8484加入好友 查看anjie8484的个人资料 搜索anjie8484在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看anjie8484的博客6
    发贴心情 
    RPC一般是同步的
    消息一般是传输在工作流中吧?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/7 15:45:00
     
     xpez 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:74
      门派:XML.ORG.CN
      注册:2005/11/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xpez发送一个短消息 把xpez加入好友 查看xpez的个人资料 搜索xpez在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看xpez的博客7
    发贴心情 
    楼主应该是开发ACS的吧,那你应该看下TR069这个技术文档。你举的这个例子, 在TR069里有很详细的描述啊。在TR069的A.3.3.2这个section规定了GetParameterValues是CPE(也就是客户端的ADSL设备等)必须支持的rpc methods,这个方法只能被ACS发起调用,同时也规定了GetParameterValuesResponse就是CPE的回应。你收到的这个SOAP ENV实际就是CPE对ACS的GetParameterValues调用的回应。那你收到这个回应后就可以知道CPE当前的一些参数设置,至于ParameterList,ParametervalueStruct的语义和处理方法在TR069的文档里都有规定的。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/24 10:48:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Web Services & Semantic Web Services 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/23 18:02:26

    本主题贴数7,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    89.844ms