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

在WebLogic Workshop上创建WSDL

1. 在项目树上,右键单击Web服务,选择“Generate WSDL from JWS”(从JWS生成WSDL)。这样就可以为Web服务创建一个WSDL。每创建一个WSDL,项目树都会将其作为Web服务的子项显示出来。

WebLogic Workshop使用一种特殊的命名约定为WSDL文件和CTRL文件(后面将加以讨论)命名。如果Web服务名为Service.jws,那么该服务的WSDL文件将被命名为ServiceContract.wsdl,而CTRL文件将被命名为ServiceControl.ctrl。

在Visual Studio .NET中创建WSDL

1. 从菜单中选择Debug/Start或者按F5,在浏览器中打开Web服务。

2. 右键单击IE中的“Service Description”链接,选择“Save Target AS”。输入文件名,注意该文件名的后缀应为.wsdl。

即使最简单的Web服务,它的WSDL文件也是非常复杂的。幸运的是,我们在使用使用Web服务时不需要知道WSDL的详细情况。

在WebLogic Workshop上调用.NET服务

WegLogic Workshop和Visual .NET都各有一套机制,通过这种机制可以使用WSDL以及调用该WSDL所指向的Web服务。在WebLogic Workshop下,必须创建一个服务控件(Service Control);在Visual .NET中,对应的是Web引用(Web Reference)。本节将讨论如何为WSDL文件创建服务控件,该服务控件可用于下层的Web服务。下一节将讨论Web引用。

从WSDL创建服务控件

1. 在设计视图中,单击下拉菜单中的“Add Control”,并选择“Service Control”。

2. 在第一个文本框中输入控件的变量名,该变量名将用于指向源代码中的控件。

3. 选择组合框中的“Create a service control from a WSDL”选项,并在文本框中输入WSDL的路径。也可以通过“Browse”按钮来查找WSDL的位置。

4. 单击“Create”按钮。

当创建服务控件时,在Web服务中将会增加以下一行代码:

/** @jws:control */
DotNetExampleControl dotNetExample;
 

如果.NET Web服务正在运行,你应该就可以运行上述Web服务了,并且可以通过callDotNet方法跨平台调用.NET Web服务。CallDotNet方法将返回一个响应消息,该消息包含了.NET的问候消息:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"             
              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Body>
    <getHelloMessageResponse xmlns="http://tempuri.org/">
      <getHelloMessageResult>
        Hello from VisualStudio.NET!
      </getHelloMessageResult>
    </getHelloMessageResponse>
  </soap:Body>
</soap:Envelope>

从.NET调用会话Web服务

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

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

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

创建一个简单的数据集

一开始,我们要创建一个简单的用于描述一个电话本的数据集,并填上一些简单的示范数据。接着从一个Web服务中返回这个数据集,注意数据集是如何串行化到XML中的。

[WebMethod] public DataSet getDataSet()
{
    // Create a new data set and add a table to it.
    DataSet dataSet = new DataSet("MyDataSet");
    DataTable table = dataSet.Tables.Add("PhoneBook");
 
    // Create the columns of the table.
    DataColumn primaryKeyCol = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Telephone", typeof(string));
 
    // Set the ID field as the primary key.
    table.PrimaryKey = new DataColumn[] { primaryKeyCol };
 
    // Create some bogus data.
    table.LoadDataRow(new object[] {1, "Fred", "555.2145"}, true);
    table.LoadDataRow(new object[] {2, "Bob", "555.6246"}, true);
    table.LoadDataRow(new object[] {3, "Howard", "555.1125"}, true);
    table.LoadDataRow(new object[] {4, "Stanley", "555.0932"}, true);
 
    // Return the data set to the caller.
    return dataSet;
}

这个数据集的XML编码分为两部分。一部分是规划,描述了XML编码的结构;另一部分是数据集的实体。本文将略去规划部分,假定规划是已知的,这里仅仅着重考虑数据编码本身。在一些更复杂的应用中,通过规划来做一些其他的事情通常是很有用的。

通过灵活地反复使用以下格式的元素,就可以将创建好的表中的数据编码成非常简单的格式:

<PhoneBook>
  <ID></ID>
  <Name></Name>
  <Telephone></Telephone>
</PhoneBook>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值