服务合同设计与遗留系统封装的有效策略
1. 验证抽象模式
1.1 问题提出
在构建服务时,尤其是作为 Web 服务,大量验证逻辑可通过 XML Schema 和 WS - Policy 语言表达。这些标准能定义精确复杂的验证规则和约束,将多数验证约束置于服务合同,可减轻底层服务逻辑对消息内容有效性和合法性的处理负担。
然而,当底层业务规则或需求改变时,若不发布新版本,就难以对已建立的合同进行相应更改。新合同版本会带来治理负担,特别是对于有众多消费者的无差别服务。
1.2 解决方案
根据消息数据性质,可降低合同功能的约束粒度,将部分验证约束转移到其他地方,减少服务合同中嵌入的验证逻辑数量和严格性。合同中的验证逻辑越少,受业务变化影响的风险就越低,从而延长服务合同的潜在寿命。
1.3 应用场景
验证抽象模式适用于以下类型的验证逻辑:
- 详细且粒度细的验证约束,表达非常具体的条件。
- 基于精确值特征的约束,如空值或文档值的最小、最大允许长度。
- 基于嵌入式枚举值或代码列表的约束。
- 定义从业务规则派生的特定属性或行为的策略表达式。
在消息数据的实际类型方面,可采用更宽松的数据类型,而非根据当前文档定义要求调整数据类型。还可利用附件绕过合同级别的类型检查,受影响值的实际验证在底层解决方案逻辑中进行。对于仍需传达给消费者程序设计人员的验证和基于策略的约束,可将约束描述添加到补充服务合同文档(如 SLA)中。
1.4 影响分析
解耦的服务合同的好处之一是为验证逻辑提供集中放置位置,可在服务边
超级会员免费看
订阅专栏 解锁全文
9538

被折叠的 条评论
为什么被折叠?



