Microsoft SOA WebService設計模式
Service Orientated Architecture (SOA) 是一种架构设计思想,它提倡通过一组自治的服务来构建信息系统。这些服务通过消息交换进行通信,强调系统的集成性、稳定性和可变性。在SOA中,服务是长久存在的,并且需要具备高可用性和高稳定性。系统由一组共同完成特定任务的服务构成,允许随着需求变化而进行更新和调整。 SOA设计时面临多项挑战,如如何定义粗粒度的接口,确保数据一致性,管理服务间的依赖性,保证性能和安全性,构建可靠的通信机制,处理重复消息,实现地址透明,缓存引用数据,以及妥善处理异常。为了解决这些问题,SOA设计遵循四个基本原则: 1. **边界必须明确**:每个服务都有清晰的职责边界,避免服务间的职责重叠。 2. **服务必须自治**:服务应独立于其他服务运行,拥有自己的状态管理和事务处理能力。 3. **服务分享Schema和Contract,而不是Class**:服务之间的交互基于公共的数据模型(Schema)和契约(Contract),而非具体的实现类。 4. **由Policy决定服务间的兼容性**:服务的兼容性由策略(Policy)控制,这些策略可以包含安全、性能、事务等方面的规定。 然而,SOA实践中存在一些常见的反模式: **CRUD型接口**:这种模式将创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作封装在单一服务中,可能导致RPC(远程过程调用)式的交互,鼓励会话状态的隐含传递,使得交互过于复杂。正确的做法是将操作分解为更小、更具业务意义的单元。 **Loosey Goosey**:此反模式指的是服务接口设计过于松散,直接暴露底层数据库查询或执行命令,这降低了接口的灵活性和可扩展性。正确做法是将服务分解为更具体、更有业务含义的功能,避免直接暴露数据库操作。 为了构建良好的SOA服务,我们需要避免这些反模式,设计出明确、自治且具有良好适应性的服务。例如,可以采用以下设计模式: - **Document Processor**:处理文档或消息的服务,将复杂的业务逻辑封装在处理过程中,确保服务接口简洁。 - **Idempotent Message**:幂等消息模式,确保即使同一消息多次发送,服务也能保持状态的一致性,提高系统的可靠性和容错性。 - **Reservation**:预订模式用于处理需要确认和取消的操作,确保资源的有效分配和释放。 在实践中,还需要关注消息的可靠性,确保消息传输的完整性;处理重复消息,防止数据不一致;实现地址透明,使服务消费者无需关心服务的具体位置;利用缓存优化引用数据的访问效率;建立完善的异常处理机制,保证系统的健壮性。 设计SOA服务不仅需要理解基本概念和技术,还需要对业务需求有深刻洞察,遵循最佳实践,避免常见的设计陷阱,从而构建出高效、稳定且易于维护的分布式系统。
- higaer2012-11-18因为是PPT,没人讲解信息量较少,不过还是多谢分享!
- 粉丝: 5
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助