服务组合性能优化技术
1. 服务组合性能模型
服务组合由多个服务构成,之前讨论的挑战和技术同样适用于服务组合。但在关注服务间设计时,还需考虑额外的性能问题和技术。服务组合的性能模型反映了跨越服务边界进行通信的挑战,涉及空闲时间、协议逻辑、消息编码、消息传输等多个方面。
2. 避免转换与缓存
- 数据转换成本:应用数据模型转换并非廉价之举,数据转换在服务组合的运行时处理逻辑中占比不小。
- 避免转换方法:最佳方法是应用规范模式(Canonical Schema)。若必须进行转换,可考虑使用 XSLT。XSLT 虽常用,但处理密集。像 BizTalk Server 这类编排引擎大量使用 XSLT,其虽使转换更易实现,但性能会受影响。
- 缓解性能影响:对于复杂消息模式或难以编程表达的转换,可使用专门用于 XSLT 处理的硬件设备。部分情况下,可避免实际转换,如服务频繁将相同输入文档转换为相同输出文档,可利用缓存技术缓存编译后的转换及结果。
3. 异步交互
- 异步交互优势:使用异步消息交换模式设计服务间消息交换,可优化服务活动。ASMX 和 WCF 等框架即使在同步服务接口下也支持异步交互。而 BizTalk 等编排工具不提供同步通信的编程结构,发送服务请求和接收响应总是解耦的。
- 创建代理类:在 .NET 环境中,有多种创建代理类以消费服务的方