我在这里学到了一些WSDL。我也知道什么是SOAP。
但在这里,当创建nodejs soap服务器时,他们会将WSDL文件传递给soap服务器。我的问题是他们为什么这么做?目的是什么?我认为WSDL只是一个项目规范(描述web服务集(,为什么要把它传递给真正的服务器?
var soap = require('..').soap;
var WSDL = soap.WSDL;
var path = require('path');
// Pass in WSDL options if any
var options = {};
WSDL.open('./wsdls/stockquote.wsdl',options,
function(err, wsdl) {
// You should be able to get to any information of this WSDL from this object. Traverse
// the WSDL tree to get bindings, operations, services, portTypes, messages,
// parts, and XSD elements/Attributes.
var getQuoteOp = wsdl.definitions.bindings.StockQuoteSoap.operations.GetQuote;
// print operation name
console.log(getQuoteOp.$name);
var service = wsdl.definitions.services['StockQuote'];
//print service name
console.log(service.$name);
});
WSDL文档不仅仅是一个项目规范。它类似于面向对象世界中的一个界面。这是一份合同,告诉您服务的消费者/用户以下信息:
- 此服务所在的位置
- 此服务提供哪些操作
- 此服务使用的消息看起来像什么,即数据结构
一旦对此进行了编码,就可以发布此约定,以便使用该服务的客户端可以使用此约定生成客户端代码。这就是我们发布WSDL的主要原因。