原则 1:边界是显式的(Boundaries Are Explicit)
弄清边界。
服务应易于使用。
应采用显式消息传递,避免使用 RPC 接口。
尽量减小服务的表面积
内部实现的细节不应泄露到服务边界之外。
原则 2:服务具有自治性(Services Are Autonomous)
服务的部署和版本控制应独立于部署和使用它们的系统。
合约的设计应符合以下假设,即一旦公布即不可修改。
采取谨慎的态度,使服务免于故障。从使用者的角度,规划服务可用性和性能的不可靠级别。从提供者的角度,预计服务会被误用(故意或其他方式),预计服务使用者会出现故障:而服务可能得不到通知。
原则 3:服务共享schema 和contract,而不是类(Services Share Schema and Contract, Not Class)
确保服务合约保持稳定,以将对服务使用者的影响降至最低。这里的合约指公共数据表示(数据)、消息交换模式 (WSDL) 和可配置的功能和服务级别(策略)。
合约的设计应尽可能明确,以将误解减至最少。
避免使公共数据表示与私有数据表示之间的界线混淆不清。使用者不应看到服务的内部数据格式,而其公共数据架构应不可改变(最好基于组织标准、事实标准或行业标准)。
当不可避免要更改服务合约时,要对服务进行版本控制。
原则 4:基于策略的服务兼容性(Service Compatibility Is Based Upon Policy )
原文