注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

庄庄的家

庄庄的家-网易博客

 
 
 

日志

 
 

SOA是什么?  

2008-03-26 10:10:20|  分类: java试题 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近几次面试都问到对SOA的了解。在这里总结一下:SOA是一中面向服务的架构,目地是为了解决信息孤岛的问题,把各种不同协议以集中方式统一到一个平台,基于一个标准生成新的协议。SOA是一幅蓝图,一组最佳实践,或者说是一个定义下一代的软件应用应该如何设计和实现的规范。SOA不是什么新技术,事实上,其最吸引人的一个地方是可以利用现有的技术并使其泛出新的光芒。SOA不是Web ServiceWeb Service是目前最适合实现SOA的技术。

----------------------------

面向服务的体系结构(Service-Oriented ArchitectureSOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。

SOA是什么?

  SOA有很多定义。下面是我的定义:

  SOA是宏级别的应用到应用架构级的设计模式:

  1、可选地暴露应用的功能作为一组离散的组件。

  2、使这些组件能被用来构建更复杂的组件和应用。

  3、仅包含基于消息的组件内部通讯。

  我还遗漏了什么呢?还有一些方面,包括:

  1、安全性

  2、事务

  3、状态或无状态会话

  4、消息数据

  5、消息特性

  6、消息协议

  7、消息内容

  8、具体技术实现

  这些方面也是重要的,但不是主要的。我的定义提取了SOA的核心规则,但没有抛弃概念本身。

  注意我在定义中引用了设计模式。我认为这是关键。SOA不是什么新技术,事实上,其最吸引人的一个地方是可以利用现有的技术并使其泛出新的光芒。对我来说,SOA更像是一幅蓝图,一组最佳实践,或者说是一个定义下一代的软件应用应该如何设计和实现的规范。

  基础SOA方法

  从上面的定义,我们应该可以标识出组成SOA应用的必须提供的软件服务的最小集合。简洁地说,这些服务是:

  1、消息层,允许消息通过特定的协议传输和接收。用SOA的说法,这一层称为企业服务母线或简写为ESB。

  2、一个组件模型,如应用必须遵循的发送和接收来消息母线的消息的最小约定。

  取决于你自己的业务需求,这两种服务可以极度的扩大,但在核心来说,消息层和通用组件模型就代表了SOA。

  注意,我没有在SOA的定义中包含自动定位和发现服务(在大部分J2EE场景中,这是很有杀伤力的)。在UDDI(通用描述/发现/集成协议)后的原始想法是认为企业最终会使用软件服务(通过一个大的基于元数据搜索服务仓库)来购买和销售。这个美梦至少也得十年后,也许永远不会实现,因为人们是需要做的实际的业务而不是软件。

  J2EE应用不需要自动发现服务,例如登录或支付服务,这些服务应该在初始化时设置。不要误导我,如果这些服务的实现不应该硬编码到应用中,那么你也不需要SOA来解决这些问题了。

  为什么要SOA?

  最近的两拨企业级软件开发的主浪潮是C/S架构和多层架构。虽然多层架构提供了C/S架构中布署/平台支持/性能/伸缩性上更好的效果,但两者都没有解决一个关键的企业级计算机领域的软件工程问题:如何重用软件功能。作为软件开发人员和架构师,我们始终没有完全解决软件重用的问题。再往下看,你会看到我也不认为SOA能解决这个问题。然而,我认为软件重用是SOA出现的最重要原因(至少在J2EE应用中是这样)。

  其他SOA使用现有的Jini和风格计算。基于Jini环境的特点如下:

  1、自动发现组件/服务

  2、自愈的

  然而,这些特性并没有与J2EE应用等同的重要性。使用JDBC配置数据库的位置只需要一次。我期望数据库来提供容错和除错功能,而且我不需要J2EE应用来尝试当产品实例当机时自动发现其他的数据库实例。另一方面,对一个有2000个工作站的办公室来说自动发现一个彩色打印机是一件好事,这也是符合Jini硬件的一个关键好处。

  平等地说,在一个真实的全球网格计算环境中,自动发现和枚举计算资源来解决问题是基础框架的关键部分,但这不是一个J2EE环境,那儿硬件预先计算的以便在定义用户数据和服务性能之间平衡。

  评论这张
 
阅读(238)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017