您的位置:首页 > 其它

如何实现SOA

2010-03-21 12:16 155 查看
写一下我现在的理解,以备忘

4 界面层:用sliveLight/asp.net/win form实现

3 业务流程编排层:用WF + 我的流程 实现业务流程的编排,不仅编排本系统定义的那些业务执行单元,

如果需要的话,也有可能编排其他系统定义的业务执行单元(比如用JAVA写的系统提供的web services) --> 难道这就是ESB,或ESB的一部分?

         并且把业务流程也向外发布,这样其他系统如果需要可以调用或包含该流程

2 业务执行单元层:包含一些业务逻辑和规则,做成标准服务,用WCF实现[跨平台 跨进程 跨软件...]

1 数据服务层: 用Ado.net Data Services 实现数据服务层: 即增删修查都 WCF 了,可以向调用Web Services 那样调用

我的理解是SOA可以实现 : 跨平台 跨进程 跨软件 跨企业来应用的工作流系统[注:不是那种只实现公文收发的工作流,是可以实现各种业务的的业务流系统]

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

几个不太明白的术语:云服务[难道是全世界的软件都SOA了,之后就会出现很多很多的服务,这个就称之为云服务?]

Web Service Software Factory 这个东西以后还有没有用? 怎么用?在这个里面也提到过:

我眼中的SOA,以及在实际项目中的应用经验

据说BizTalk是SOA的重量级实现,有空要研究一下

wcf 和依赖注入

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

三、ESB是什么?
根据维基百科的ESB定义,ESB有如下特性:

它是面向服务架构的实现。
它通常是操作系统和编程语言无关的;它应能在Java和.Net应用程序之间工作。
它使用XML(可扩展标识语言)作为标准通信语言。
它支持Web服务标准。
它支持消息传递(同步、异步、点对点、发布-订阅)。
它包含基于标准的适配器(如J2C/JCA),用于集成传统系统。
它包含对服务编制(orchestration)和编排(choreography)的支持。
它包含智能、基于内容的路由服务(itenerary路由)。
它包含标准安全模型,用于ESB的认证、授权和审计。
它包含转换服务(通常是使用XSLT),在发送应用和接收应用之间转换格式,简化数据格式和值的转换。
它包含基于模式(schema)的验证,用于发送和接收消息。
它可以统一应用业务规则,充实其它来源的消息,分拆和组合多个消息,以及处理异常。
它可以条件路由,或基于非集中策略的消息转换,即不需要集中规则引擎。
它可监视不同SLA(服务级别合约)的消息响应门限,以及在SLA中定义的其它特性。
它(常常)简化“服务类别”,向更高或更低优先级用户做出适当的响应。
它支持队列,在应用临时不可用时用来保存消息。
它由(地理)分布式环境中的选择性部署应用适配器组成

对于其中一些厂商(IBM、微软)来说,ESB是将一系列能力联结在一起的一种模式,而其他厂商认为ESB是一种产品。在2005年,微软Identity Platform的产品经理Rich Turner写道:
ESB[产品]是一根聪明的管子,用来连接各个愚笨的节点。[……]Web Service的途径让节点本身也变得聪明,减少了对底下聪明管道的需要,并确保了跨越任何平台与设备的开放的通讯。

四、如何用.NET技术建立完整的SOA环境
微软发布了一个名为“真实世界里的面向服务架构(SOA)”的电子书。这本书表达了微软对面向服务架构的观点,并包括了数个展示如何用微软产品和技术实现SOA的真实案例。书中解释到,SOA的功能型架构本身是松散的,即每个服务本身可以作为企业的IT资产存在、也可以作为生产流程中的处理环节存在,但总体上他们提供了一个完整的视图,而且与独立应用不同,这个视图的内容不是分层的、而是平的,借助这个视图可以提供如下可重用能力:

消息机制服务
工作处理流程服务
数据服务
用户体验服务
主体身份的识别、认证、授权服务
还有通盘的管理能力

所有这些能力用微软的产品描述就是下图:



与强调SCA、SDO等公共标准的Java平台不同,微软平台相应的封装也不是通过商用服务器平台完成,而是更多地借助WCF实现;其中最为重要的ESB角色重则由BizTalk担当,轻则由用户通过扩展WCF + WF完成;至于服务的治理,相对更为统一,与Windows平台其他产品无异,向下借助统一的WMI体系,配合MOM和System Center对SOA的基础平台部分进行治理,向上借助WS_Management协议对服务进行集中管理。
实施SOA集成在所难免,各企业集成的方式大概主要有3种:

购买某厂商的SOA套件,这样无论是组成上的兼容性还是技术支持都有保证,代价就是花费不菲;
集成多种开源的服务器产品和开发框架,显性成本上很划算,但技术实施的成败的风险比较大;
更多依赖操作系统自带的产品,根据IT范围的大小,选择少量的商业产品或开源服务器产品,兼容性风险比全部开源产品要小,成本上也比全盘采购商业套件廉价。《SOA in the Real World》里更多倡导的就是这第三条道路。

微软还赞助了一个针对北美500家拥有1000名员工,或超过这个数字的企业的综合应用平台的研究。其目的旨在确定哪种软件平台被用于构建关键任务的应用,以及什么是首选供应商的关键组件平台等。

五、开源的.NET ESB项目介绍

ESB.NET企业级服务总线:ESB.NET是开源的企业级服务总线,采用的协议是MS-PL。ESB.NET主要包含了MSMQ消息队列机智,SOAP消息收发,ROUTER服务路由,WCF,WSE消息扩展(消息加解密,压缩),还有WF工作流。

开源的通信框架NServiceBus :NServiceBus 是一个用于构建企业级 .NET系统的开源通讯框架。它在消息发布/订阅支持、工作流集成和高度可扩展性等方面表现优异,因此是很多分布式系统基础平台的理想选择。,它能够帮助开发人员在搭建企业.NET系统时避免很多典型的常见问题。同时,该框架也提供了一些可伸缩的关键特征,比如对发布/订阅的支持、集成的长时间工作流及深入的扩展能力等。据作者说,其本意是为构建分布式应用软件创建一个理想的基础设施。

Mass Transit -- .Net Service Bus:Mass Transit是一个.NET平台上的用于构建松耦合应用程序的服务总线框架,这个服务总线支持YAGNI原则(YAGNI原则,就是通过重构提取公因式当出现一次时,不分层,以后业务复杂了,马上抽象出一个层次来,分层是依赖倒置原则和模版方法模式的应用。)。通过一套严密的关注点,Mass Transit和应用程序之间的接触最小化和清晰的接口.
-------------------------------------------------------------------------------

我们在上一节中谈到WCF是微软针对SOA的一个开发框架,那么微软针对ESB的产品或技术又是哪种呢?

这就是BizTalk。这是一个在SOA都还没有如此流行的时就已经发布的产品,主要用于企业集成的中间件平台。微软的官方定义为:“Microsoft BizTalk框架是用于应用集成和电子商务的XML框架。它包括一个设计框架来实现XML 大纲(schema) 和一套在应用程序间传递信息之用的XML标签。Microsoft公司以及其他软件企业和工业标准实体将通过BizTalk 框架以统一的方式来产生XML。”

BizTalk的最新的版本是BizTalk 2006 R2,其添加了新的WCF Adapter及相应的SDK,把SOA和ESB的开发真正带到了.NET 3.0之上。据InfoQ上的说法,BizTalk 2006 R2可以达到如下效果:

·BizTalk作为一个后台服务,除了可以完成点对点的消息调用外,更主要的是它可以完成多种信息源、多应用服务环境下的新业务编排和多种消息机制,而且所有操作都是基于微软平台管理员所熟悉的统一管理界面;

·如果说BizTalk搭出来的是一个平台,WCF就很像穿针的线,它可以很容易的把所需的各种内容(其他应用提供的业务服务、数据服务、管理服务、IT平台服务)缝在一起,形成新的业务服务能力。通过BizTalk的WCF Adapter可以把WCF写成的程序集作成一个个插件安到BizTalk这个总线上。

SOA架构下分销管理系统的实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐