领测软件测试网
cw*C
aF%}(O服务
G+sK/lykT+i软件测试技术网
D*f;m5x:j 调用操作的消息
软件测试技术网_2p+U4M y%yR-u-g%f!h 构造这种消息的细节
软件测试技术网xkH.u9I8MZ 关于向何处发送用于构造这种消息的处理细节的消息的信息
u$j!\0n#Z0?_#R:M WSDL 不包括服务实现的任何技术细节。服务请求者不知道也不关心服务究竟是由 Java 代码、C#、COBOL,还是由某种其他的程序设计语言编写的。它可以描述使用 HTTP 的 SOAP 调用。由于它的扩展机制,它也可以定义其他类型的交互,比如通过 JMS 提交的 XML 内容、直接方法调用、由管理遗留代码的适配器处理的调用(CICS),等等。
软件测试技术网c3FQ
tX~$[0NA6C)weR}a WSDL 的通用定义允许开发工具创建各种各样类型的交互的通过接口,同时隐藏它是如何由应用程序代码调用服务的细节。例如,如果服务是以多种交互类型公开的,Web 服务调用框架(Web Services Invocation Framework,WSIF)通过允许运行时决定调用高质量服务的最优方法来使用这种能力。
Fa s0F3~+H/Gc z&yNV\Jz 无状态的服务设计
软件测试技术网"\bQ1x4k-N1Hv
~(P'nMeOD7b)v 服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们最好定义成通用业务流程、函数和数据模型,而不是实现构件(比如会话密钥)。当然,请求者应用程序需要服务调用之间的持久状态,但是这不应该与服务提供者分开。
软件测试技术网$@(D{/[CC软件测试技术网u9hA iME]~(f 这里有一个定义会话的错误方法的示例: Requester: “What is Bruce's checking account balance?" Provider: “$x" Requester: “And what is his credit limit?" Provider: “$y"
软件测试技术网X*|d
r
{3I 提供者被要求记住请求之间 Bruce 的帐号,这就在服务实现中引入了复杂性。无状态的服务设计将重新定义会话,如下所示:
软件测试技术网;p c0HI;W%^t4[6ui/L软件测试技术网3r-CR0N]R;R6PRequester: “What is Bruce's checking account balance?" Provider: “$x" Requester: “What is Bruce's credit limit?" Provider: “$y"
8G`d