服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们最好定义成通用业务流程、函数和数据模型,而不是实现构件(比如会话密钥)。当然,请求者应用程序需要服务调用之间的持久状态,但是这不应该与服务提供者分开。
这里有一个定义会话的错误方法的示例:
Requester: “What is Bruce's checking account balance?" Provider: “$x" Requester: “And what is his credit limit?" Provider: “$y" |
提供者被要求记住请求之间 Bruce 的帐号,这就在服务实现中引入了复杂性。无状态的服务设计将重新定义会话,如下所示:
Requester: “What is Bruce's checking account balance?" Provider: “$x" Requester: “What is Bruce's credit limit?" Provider: “$y" |
服务粒度