《SOA概念、技术与设计》学习笔记(一)(连载中...)

这篇博客介绍了SOA的概念,从Web Service的基础规范开始,探讨了WSDL如何描述服务接口和协议,SOAP如何封装服务间的消息传递,以及UDDI在服务注册中的作用。通过学习,有助于理解SOA架构的基本元素和服务发现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近好久没更新blog了,是因为最近都在忙着思考SOA相关的东西,确实是需要好好整理的时候了:
        SOA涉及面很广,以至于感觉到新名词目接不暇呀,今天主要从最简单的Web service规范讲起吧:
Web service与SOA的关系,这个议题觉得过大,因为要一下讲清楚并不是那么容易的,还得从第一代Web service规范来讲起,第一代Web service规范的关注点主要是关注于基本SOA,这个其实很容易想到,既然是面向服务架构,必定有service、service之间的关系、当然还有管理service注册的注册中心。
        用于描述service的规范是WSDL规范,其主要部分包括两部分:1、抽象部分 2、具体部分,抽象部分包括服务提供的接口(portType),该接口内就有操作和消息,相当于普通Java接口的函数以及函数参数,具体部分就包括具体的binding协议类型、服务地址等信息,让服务请求者可以通过服务地址信息找到某个服务,并用相应的协议与之通讯,调用的接口信息则已经在抽象部分给出。
       用于描述service与service关联的消息(也就是服务间的关系),一般就有SOAP协议消息框架来完成,SOAP消息由evenlop包装,包装了消息头和消息体,其中消息头可以包含丰富的控制信息,以便让服务可以尽量保证无状态,而消息体则是具体的信息负载部分,也就是具体的数据部分了。
       用于管理服务注册的UDDI规范,该规范一般在服务比较多的情况下,为所有的服务提供一个注册的场所,让服务请求者可以到这里来寻找需要的服务,其实就是一个简单的server locator模式了。 如下图:

该图简洁明了,给出了第一代web service关注点,其实读此书(SOA概念、技术与设计》)的感觉收获最大的是理清楚了以下几个概念:
1、面向服务架构是什么?在面向服务架构中,至少有某些服务具有可复用性,其实也就是可以SCA中 的递归装配来组装出新的构件,但如果颗粒度把握不当,难以根据后续需求变化复用上任意一个服务,那么我的理解那也就不是面向服务架构,而充其量只是披着 web service外表的传统分布式架构而已。我们在设计中,应该全局把握所有的需求,以面向服务的思维来分析需求,找出可以复用的不可再分服务,封装之,但 颗粒度方面又不能太小,这便是考验设计师的功底的时候。
2、Web service一系列规范给出了实现SOA所必须的一些基础设施,但并不是唯一,第一代Web service只是给出了服务的描述(可以用WSDL),以及服务通讯的消息规范SOAP,从某中程度上来说,实现了SOA所 要求的服务自治,消息智能,但这些完全不够,因为我们知道正如拿Java还是可以用static方法来做面向过程的编码一样,这里面主要是人的因素,人的 思维模式的改变,用面向对象的视角来看世界,自然世界中的万物皆对象,每个对象有自己的状态和行为,每个功能是各个对象相互合作,相互作用的结果。而用面 向服务的视角来看世界,自然世间万物皆服务,这样是不是就可以连同C语言也可以提供服务,因为不一定提供服务的就是对象,确实已经有了C的SCA客户程序与实现规范。从个人到公司到政府,从小到大,从动物到静物,从具体到抽象,他们都扮演着对外提供服务或消费服务的角色,当然具体角色要根据不同的上下文来判断。
3、为某个企业或政府规划SOA架 构,并不能先上一部分,再上一部分。不做全局考虑,不统一相应的业务规范,形成规范的XML交换文档并统一输理整个全局业务流中的元数据是很难真正做到完 全面向服务架构的,因为这样的话,可能会出现只考虑到特定业务属性,结果数据不兼容,连数据都无法共享,更别说复用服务功能了,所以在分析服务契约(其由 WSDL、XSD schema、策略组成)时,我们必须保持全局观来分析业务。
4、面向服务架构的另一重要面----互操作性,这个是很容易忽略的,如果没有互操作性的保障,其也不过是披上了Web service的外壳,而比手工做两子系统之间的接口没什么两样,当然他可以实时导数据了。没有充分发挥出通过复用服务而快速开发解决方案的优势。
5、从某种意义上来说,服务可以与面向对象UML中的用例类比,他可以分为业务服务、工具服务,业务服务其实就是主要提供功能的业务逻辑。工具服务是被用 来完成特定功能的服务,比如负载均衡服务,服务请求可以先发给负载均衡服务,然后由他来计算后端目标服务的负载状况,然后转发请求。是否可以将SOA中被复用的服务类比为在面向对象中变化会相对比较剧烈的用例呢?组合已有的服务,通过WS-BPEL来编排现有服务,从而形成新的服务,该规范就其实包含了基本流程以及结构化流程,从某种程度上可以与编程语言类比,包含了顺序、条件、循环三大结构化程序语言的特性。
6、最后一点,就是由于服务是自治的、相对独立松散耦合的,那么又可以通过组合服务将其组合成新的大的服务,就必然会遇到编程中的事务性边界问题,这个由WS-协调规范(WS-*扩展规范)解决之,可以与SCA中的事务相结合来看。
7、涉及到多个服务的交互,除了事务性外,其实还有服务间的同步并发问题需要考虑,比如有的服务可以并行执行,而有的服务必须等到其依赖结果的前置服务执行完后才能执行,这个又类似于进程间的通讯机制,既然同步又要并行,是矛盾而又共存的统一体。
        总之,有了面向服务理念,还要加上人的努力,毕竟科技以人为本!
        以上是本人的愚见,学习中,不知道思考得对不对,希望大家多发意见,共同探讨!

 

 

内容简介 《SOA实践指南》展示了实现面向服务的架构(SOA)切实可行的 规律,使得SOA不再只是镜花水月,可望而不可及。《SOA实践指南》基于作者在家 领先行业的公司中全面推广SOA的第手经验,解释了SOA如何简化大型应用的创建和 维护。不管你的项目是包含套巨大的、基于Web Services的组件集,还是需要将老 系统和更现代化的业务流程连接起来,《SOA实践指南》都阐明了SOA如何满足你的需 要。 目录 第1章:动机 1.1 大型分布式系统的特征  1.2 魔术总线故事  1.3 魔术总线故事给我们的启示  1.4 soa历史  1.5 五页幻灯讲完soa 第2章:soa  2.1 soa定义  2.2 soa驱动因素  2.3 soa概念  2.4 soa要素  2.5 soa不是银弹  2.6 soa不是特定技术  2.7 对比soa分布式对象  2.8 soa术语  2.9 总结 第3章:服务  3.1 服务  3.2 接口和契约 . 3.3 额外的服务特性  3.4 总结 第4章:松耦合  4.1 对容错的需求  4.2 松耦合的形式  4.3 处理松耦合  4.4 总结 第5章:企业服务总线  5.1 esb职责  5.2 异质的esb  5.3 esb的差异  5.4 esb增值服务  5.5 总结 第6章:服务分类  6.1 基础服务分类  6.2 基本服务  6.3 组合服务  6.4 流程服务  6.5 其他服务分类法  6.6 技术服务和基础设施服务  6.7 服务之外  6.8 总结 第7章:业务流程管理  7.1 bpm术语  7.2 bpm和soa  7.3 用于服务的bpm的例子  7.4 业务流程建模  7.5 识别服务的其他方法  7.6 配制和编排  7.7 更多思考  7.8 总结 第8章:soa和组织  8.1 角色和组织  8.2 出资模型  8.3 总结 第9章:上下文环境中的soa  9.1 基于soa的架构模型  9.2 处理前端和后端  9.3 总结 第10章:消息交换模式  10.1 mep简介  10.2 基本mep  10.3 更复杂的mep  10.4 处理可靠性和错误  10.5 处理不同mep层  10.6 事件驱动的架构  10.7 总结 第11章:服务生命周期  11.1 开发中的服务  11.2 生产中的服务  11.3 总结 第12章:版本划分  12.1 版本划分需求  12.2 领域驱动的版本划分  12.3 数据类型的版本划分  12.4 配置管理驱动的版本划分  12.5 实践中的版本划分  12.6 总结 第13章:soa和性能  13.1 性能在哪儿重要  13.2 从远程存储过程到服务  13.3 性能和可重用性  13.4 性能和向后兼容性  13.5 总结 第14章:soa和安全  14.1 安全需求  14.2 处理安全需求  14.3 实践中的soa安全.  14.4 xml和web services的安全  14.5 安全问题何时凸现  14.6 总结 第15章:技术细节  15.1 服务和状态  15.2 幂等性  15.3 测试和调试  15.4 处理技术性数据(头数据)  15.5 数据类型  15.6 错误处理  15.7 总结 第16章:web s8rvices  16.1 使用web services的动机  16.2 基础web services标准  16.3 实践中的web services  16.4 结束按语  16.5 总结 第17章:服务管理  17.1 服务中间人的历史  17.2 业务库和注册中心  17.3 总结 第18章:模型驱动的服务开发  18.1 生成的服务代码  18.2 建模服务  18.3 实践中的元模型  18.4 建立mdsd过程  18.5 工具  18.6 避免瓶颈  18.7 总结 第19章:建立soasoa监管  19.1 引入soa  19.2 soa监管  19.3 按部就班soa  19.4 其他soa方法  19.5 其他建议  19.6 总结 第20章:后记  20.1 soa是新东西吗?  20.2 soa增加了复杂性吗?  20.3 soa关键的成功要素是什么?  20.4 soa在哪些地方不合适?  20.5 soa替代了oop吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值