【IT168 技术文档】
网络服务的宗旨是使运行于各种硬件平台上由不同厂商开发的应用,能够通过共同的一组协议和数据格式包括 SOAP、UDDI和WSDL进行相互定位和通讯。本文说明微软.NET的网络服务如何与BEA平台进行互操作。我首先描述如 何在每个平台上创建网络服务定义语言(WSDL)文件,然后讨论如何采用WSDL文件调用外部平台上的网络服务。 最后,将演示每个平台强大的、非标准的特性如何被其它平台使用。
两个简单的网络服务
在最初的例子中,我们将创建两个非常相似的网络服务,一个基于.NET,另一个基于WebLogic Workshop。两个网 络服务都有一个简单的方法getHelloMessage,返回简单的Hello消息。在示例中,将演示两个平台的网络服务之 间如何相互调用。
下面是WebLogic Workshop网络服务的代码:
public class WLWExample
{
/** @jws:operation */
public String getHelloMessage()
{ return "Hello from WebLogic Workshop!"; }
}
下面是.NET网络服务的代码:
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!"; }
}
}
在编写调用这些网络服务的代码之前,需要先快速浏览一下网络服务互操作的工作原理。
网络服务互操作原理
网络服务互操作的核心是网络服务定义语言(WSDL). WSDL是一种基于XML的语言,使网络服务能够以平台中立的方 式发布其公开契约。WSDL用于描述由网络服务提供的方法,并描述这些方法能够产生和接收的消息。 WSDL是一种 通用格式,两个不同的网络服务产品能够通过WSDL描述其网络服务。
为了能够跨平台调用上述两个网络服务,必须首先为这两个网络服务生成WSDL文件。描述过程在WebLogic Workshop和Visual Studio .NET稍有差别,但都非常简单。
在WebLogic Workshop中创建WSDL
1. 在项目树(project tree)上,用右键点击您的网络服务并选择"Generate WSDL from JWS."(从JWS生成WSDL ),将从您的网络服务创建一个新WSDL文件。项目树将创建的WSDL作为网络服务的子项。
WebLogic Workshop对WSDL文件和CTRL文件将采用一种特殊的命名约定 (将在后面讨论)。假定您有一个网络服务 命名为Service.jws,那么此服务的WSDL文件将被命名为ServiceContract.wsdl,其CTRL文件将被命名为 ServiceControl.ctrl。
在Visual Studio .NET中创建WSDL
1. 按F5从菜单中选择Debug/Start在浏览器中打开网络服务;
2. 在Internet Explorer中按右键点击"Service ,Description"(服务描述)连接,并选择"Save Target As"(存储目标为),并选择一个以。wsdl结束的文件名 。
即使对于简单的网络服务,其WSDL文件依然非常复杂。幸运的是,采用网络服务无需对WSDL细节进行了解。感 兴趣的读者,可以在http://www.w3.org/TR/wsdl找到WSDL完整的规范。