服務應該是獨立的、自包含的請求,在實現時它不需要從一個請求到另一個請求的信息或狀態。服務不應該依賴于其他服務的上下文和狀態。當需要依賴時,它們最好定義成通用業務流程、函數和數據模型,而不是實現構件(比如會話密鑰)。當然,請求者應用程序需要服務調用之間的持久狀態,但是這不應該與服務提供者分開。
這里有一個定義會話的錯誤方法的示例:
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" |
服務粒度