第六章 创建 Web Services - 创建一个Web服务
创建一个Web服务
可以通过以下任何一种方式创建web
服务:
- 通过创建新类或编辑现有类来满足本主题前面描述的需求
- 通过使用
Web
服务向导 - 通过使用
SOAP
向导和现有的WSDL
- 通过子类化一个或多个
web
服务
使用Web
服务向导
Web
服务向导生成一个简单的存根。
- 单击
File > New
。这将显示“新建”对话框。 - 单击“
General
”选项卡。 - 单击新建
Web
服务,然后单击确定。这将显示一个向导。 - 为包名、类名和
web
服务名输入值。这些都是必需的。 - 可选地编辑名称空间
URI
(或稍后更改此初始值)。这是XML
名称空间,而不是名称空间。 - 可选地在单独的行上键入方法名称列表。
- 单击
OK
。
现在,有了一个新的web服务类,其中包含web
方法的存根。例如:
/// MyApp.StockService
Class MyApp.StockService Extends %SOAP.WebService
{
/// Name of the WebService.
Parameter SERVICENAME = "StockService";
/// TODO: change this to actual SOAP namespace.
/// SOAP Namespace for the WebService
Parameter NAMESPACE = "https://tempuri.org";
/// Namespaces of referenced classes will be used in the WSDL.
Parameter USECLASSNAMESPACES = 1;
/// TODO: add arguments and implementation.
/// Forecast
Method Forecast() As %String [ WebMethod ]
{
;Quit "Forecast"
}
}
对现有WSDL
使用SOAP
向导
在某些情况下,WSDL
已经设计好了,有必要创建与WSDL
匹配的web
服务;这就是所谓的wsdl
优先开发。在 IRIS中,这个开发有三个步骤:
- 使用
SOAP
向导读取WSDL
并生成web
服务和所有支持类。
此向导还可以生成web
客户端类(这是更常见的)。
有关使用此向导的信息,请参见使用SOAP
向导。按照该部分中描述的步骤操作,并在向导中选择Create Web Service
选项。
或者类中使用 %SOAP.WSDL.Reader
,如使用 %SOAP.WSDL.Reader
类中所述。
- 检查生成的类,看看是否需要更改方法签名中的任何
%String
值。
当向导读取 WSDL
时,它假定任何字符串类型输入或输出都可以在中表示为中的 %String
,但这并不总是正确的。在极少数情况下,某些字符串可能会超出最大长度字符串限制。
- 编辑生成的
Web
服务中的方法,以便它们执行所需的操作。
每个方法最初都是一个存根,如下例所示:
Method Add(a As Test.ns2.ComplexNumber, b As Test.ns2.ComplexNumber) As Test.ns2.ComplexNumber
[ Final, SoapAction = "https://www.mynamespace.org/GSOAP.AddComplexWS.Add",
SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
// Web Service Method Implementation Goes Here.
}
该向导包括编译器关键字,例如 Final
和 SoapBindingStyle
。不应更改这些关键字的值。
如果 WSDL
包含 WS-Policy
元素,则向导还会生成 Web
服务的配置类。默认配置类名称是 Web
服务名称,后面附加 Config
。有关 WS-Policy
的信息,请参阅保护 Web
服务。
对现有 Web
服务进行子类化
可以通过创建现有 Web
服务类的子类,然后将 SOAPMETHODINHERITANCE
参数添加到您的类来创建 Web
服务,如下所示:
PARAMETER SOAPMETHODINHERITANCE = 1;
**此参数的默认值为 0
。如果此参数为 0
,则类不会将 Web
方法继承为 Web
方法。也就是说,这些方法可作为普通方法使用,但不能作为子类定义的 Web
服务内的 Web
方法进行访问。
**
如果将此参数设置为 1
,则类可以使用任何 Web
服务超类中定义的 Web
方法。
网友评论