从WebLogic Workshop调用.NET网络服务
无论WebLogic Workshop或者是Visual Studio .NET,都有其内部机制来使用WSDL或引用被调用网络服务。在 WebLogic Workshop中,必须创建服务控制(Service Control),在Visual Studio .NET中,相应的概念是网络 引用(Web Reference)。本节将讨论如何为WSDL文件创建服务控制(Service Control),用于调用底层的网络 服务。下一节将对网络引用(Web Reference)进行讨论。
首先,需要创建一个新的WebLogic Workshop网络服务作为客户端访问.NET 网络服务。结束以后,再对此网络访 问增加服务控制。
从WSDL创建服务控制
1. 在设计视窗中点击"Add Control" (增加控制)下拉菜单并选择"Service Control."(服务控制)
2. 在第一个正文框中输入控制的变量名。这个变量名将被用于在源代码中引用此控制。
3. 选择组合框选项"Create a service control from a WSDL" (从WSDL创建服务控制),在正文框中输入WSDL 路径,也可以使用"Browse"(浏览)按钮指定WSDL位置 。
4. 按"Create"(创建)按钮。
创建服务控制将在您的网络服务中增加一行类似下列的代码:
/** @jws:control */
DotNetExampleControl dotNetExample;
控制变量名应引起足够重视,因为这个名子将用于调用.NET网络服务。现在,可以添加一个方法使用服务控制 调用.NET 网络服务。这个调用看起来像下面的代码:
/** @jws:operation */
public String callDotNet()
{ return dotNetExample.getHelloMessage(); }
之后,您应该有一个类似下面的WebLogic Workshop网络服务:
public class WLWClient
{
/** @jws:control */
private DotNetExampleControl dotNetExample;
/** @jws:operation */
public String callDotNet()
{ return dotNetExample.getHelloMessage(); }
}
假设.NET网络服务正在运行,您应该能够运行这个网络服务,并激活callDotNet方法向.NET网络服务发送跨平台 调用。当激活这个方法时,将获得一个应答消息:.NET hello 消息:
<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调用WebLogic Workshop 网络服务
现在我们已经可以从WebLogic Workshop调用.NET网络服务,下一步将从.NET调用WebLogic Workshop 网络服务。 在WebLogic Workshop中,我们采用了服务控制来调用外部网络服务,在.NET中,我们将采用网络引用(Web Reference)。
从WSDL创建网络引用
1. 选择"Project"菜单,然后选择"Add Web Reference."(添加网络引用)
2. 这时将弹出一个对话框用于浏览网络服务。在地址正文输入框中,输入为WebLogic WorkshopIn网络服务创建 的WSDL文件的路径。
3. 选择"Add Reference"(添加引用) 按钮。
您选择已经为项目(project)添加了指向WebLogic Workshop 网络服务的网络引用。默认情况下,将命名为 WebReference1。采用Solution Explorer,能够看到引用已添加到项目中,在引用之下,可以看到引用相应的WSDL 。
像使用其它对象一样,您可以在C#中使用网络引用。首先,必须将引用输入(import)到源文件中, 只需在C#文 件中增加下列代码:
using DotNetClient.WebReference1;
一旦将引用输入到源文件中,就可以创建引用实例(instance),并使用它调用WebLogic Workshop 网络服务。 下列代码说明了C#服务的这个功能:
using System.ComponentModel;
using System.Web.Services;
using DotNetExample.WebReference1;
namespace DotNetClient
{
public class Service1 : WebService
{
public Service1()
{ InitializeComponent(); }
private IContainer components = null;
private void InitializeComponent() {}
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
components.Dispose();
base.Dispose(disposing);
}
private WLWExample wlwExample = new WLWExample();
[WebMethod] public DataSet callWLW()
{ wlwExample.getHelloMessage(); }
}
}
当您接口callWLW 方法时,将收到来自WebLogic Workshop 网络服务的hello消息。
< ?xml version="1.0" encoding="utf-8" ? >
< string xmlns="http://tempuri.org/" >
Hello from WebLogic Workshop!
</string >