正 文

用WebLogic Workshop实现.NET Web服务互操作


www.7dspace.com  更新日期:2005-10-9 10:17:59  七度空间


  从.NET调用会话Web服务

  在WebLogic Workshop上使用会话(conversation)比较简单,而且是透明的。但是,如果要在.NET上调用会话Web服务,就必须做一些额外的工作,确保会话功能的一致性。

  当Web服务的一个客户端调用会话方法时,WebLogic Workshop通过会话键(Conversation key)来决定要调用的会话方法是哪一个。会话键是嵌入在送往Web服务的SOAP消息的头部的。对于start方法,头部的格式如下:

<StartHeader>
  <conversationID>convID</conversationID>
  <callbackLocation>callback</callbackLocation>
</StartHeader>

  会话ID和调用返回点(Callback location)都是可选的。如果你没有提供会话ID,WebLogic Workshop将自动生成一个会话ID。调用返回点用于指定WebLogic Workshop将调用返回的消息发往的地点。

  对于continue方法,会话头部的格式如下:

<ContinueHeader>
  <conversationID>convID</conversationID>
</ContinueHeader>

  调用continue方法时,必须指定会话ID,因为你需要通过某种途径告诉WebLogic Workshop当你调用continue方法时你要加入哪一个会话。调用返回点并不是必不可少的,因为在对start方法的调用中已经指定了。

  向.NET Web服务的客户端添加SOAP头部相当简单。会话Web服务所对应的WSDL文件已经指明了start头部和continue头部的结构,因此.NET现在就可以知道这些头部的格式了。当.NET创建一个Web引用时,对应于WSDL中指明的每个SOAP头部,.NET就为该Web引用添加一个相应的域:

// A web reference to a conversational web service.
private WLWExample wlwExample;
 
[WebMethod] public void callStartMethod()
{
    wlwExample.StartHeaderValue = new WebReference1.StartHeader();
    wlwExample.StartHeaderValue.conversationID = “convID”;
    wlwExample.StartHeaderValue.callbackLocation = “callbackLoc”;
    wlwExample.startMethod();
}

  在本例中假设Web引用名为WebReference1,所指向的Web服务名为WLWExample,这与上一个例子一样。WLWExample有一个名为startMethod的方法,该方法用于开始一个对话。对于例中的字符串“convID”和“callbackLoc”,应该用实际需要的会话ID和调用返回点替换。

  你可以用极其相似的代码(将StartHeaderValue替换为ContinueHeaderValue)来调用后面的方法。

  在WebLogic Workshop上使用.NET数据集

  数据集(DataSet)是一种Microsoft活动数据对象(Microsoft Active Data object),用于实现一种常见的对数据的相关包装器(relational wrapper)。数据集将数据装在一套表中,这些表的结构跟SQL语言中表的结构很相似,这些表都有一些特定的列,按特定的次序排列,每列对应于一种特定类型。数据集对象为装载和操作数据提供了极大的便利。然而,考虑到本文的目的,我们对此不再赘述,而是将注意力放到数据集的串行化机制上来。

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:QQ宠物的五条喂养经验
下一篇:CSS技术在网页设计中的运用
作者:  来源:dev2dev ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐