【IT168 技术文档】
Web服务应该允许不同供应商提供的应用能够在完全不同的硬件平台上运行,可以相互找到对方,并通过一套公共的协议和数据格式实现通信,这些协议包括SOAP,UDDI和WSDL。本文将展示Miscrosoft的.NET平台上的Web服务和BEA的WebLogic平台之间的互操作是如何实现的。首先介绍的是怎样在各个平台上创建Web服务定义语言(Web Services Definition Language,WSDL)文件,接着讨论如何使用WSDL文件调用在各个平台上的Web服务。最后,我将演示每个平台所具有的强大而不标准的特性如何被其他平台使用。
两个简单的web服务
在第一个例子中,我们将创建两个非常相似的Web服务,一个在.NET下创建,另一个在WebLogicshop下创建。这些Web服务都只有一个方法:getHelloMessage,该方法将返回一个问候消息框。在本例中,我们将展示如何通过其他平台分别调用这些Web服务。
以下是WebLogic Workshop服务的代码:
public class WLWExample
{ /** @jws:operation */
public String getHelloMessage()
{ return "Hello from WebLogic Workshop!"; }}
以下是.NETWeb服务的代码:
using System.ComponentModel;
using System.Web.Services;
namespace DotNetExample
{
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); }
[WebMethod] public string getHelloMessage()
{ return "Hello from Visual Studio .NET!"; } }}
为了写出能调用这些服务的代码,我们首先必须快速地了解一下Web服务互操作的工作原理。
Web服务如何互操作?
Web服务互操作的核心是Web服务定义语言(WSDL)。WSDL是一种XML语言,它允许Web服务以一种与平台无关的方式发布其公共约定。WSDL语言用于描述Web服务提供的方法,以及该方法可以产生和接收的消息。WSDL是两个不同Web服务用以向对方描述各自的Web服务的公共格式。
为实现上述两个Web服务的跨平台调用,首先必须为这两个Web服务生成WSDL文件。在WebLogic Workshop上和Visual Studio .NET上,这一过程稍微有些不同,但都很简单。
在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。