zoukankan      html  css  js  c++  java
  • 论面向服务架构设计及其应用

    SOA架构,是一种粗粒度、开放式、松耦合的服务结构,要求软件产品在开发过程中,按照相关的标准或协议,进行分层开发。通过这种分层设计或架构体系可以使软件产品变得更加弹性和灵活,且尽可能的与第三方软件产品互补兼容,以达到快速扩展,满足或响应市场或客户需求的多样化、多变性。

    SOA体系架构带来的主要观点是业务驱动IT,即业务驱动和业务更加紧密地联系在一起。以粗粒度的业务服务作为基础来对公司业务进行建模,这样就可以产生简洁的业务和系统视图;以业务服务为基础来实现的IT系统更灵活、更易于重用、也更快地应对企业业务需求的变化;以业务服务为基础,通过显式地方式来定义、描述、实现和管理业务层次的粗粒度服务(包括业务流程),提供了业务服务模型和相关IT业务之间提供了更好的“可追溯性”,缩小了它们之间的差距,使得业务服务的变化更容易传递到IT。SOA的有点有很多:1. 松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。这意味着应用程序不感兴趣的服务如何被实现。2.位置透明:服务的消费者不必关系服务位于什么地方。3.可在异构平台间复用。可以将遗留系统包装成服务。4.便于测试,能并行开发,较高可靠性和良好可伸缩性。

    我在软件开发的过程中,对SOA最好的体现就是在构造一个电子商务网站时使用MVC框架时使用的的service层,service层的主要作用:

    1、将业务逻辑层进行封装,对外提供业务服务调用。
    2、通过外观模式,屏蔽业务逻辑内部方法。
    3、降低业务逻辑层与UI层的依赖,业务逻辑接口或实现的变化不会影像UI层。
    4、降低UI层调用的请求次数及数据往返。

    在某种意义上说,服务导向的架构可以被认为是一种演化,而不是革命。它捕捉到了之前体系架构的许多最佳实践或实际应用。比如在通信系统中,近年来进展有限的解决方案多采用完全静态的绑定来与网络中的其他设备沟通,但若正式采用 SOA 方式,解决方案就更能妥善定位,进而突显定义明确且可高度跨平台操作接口的重要性。

    SOA 相关的 Web 服务的标准主要有:

    XML – 一种标记语言,用于以文档格式描述消息中的数据。

    HTTP(或 HTTPS) – 客户端和服务端之间用于传送信息而发送请求/回复的协议。

    SOAP(Simple Object Access Protocol) – 在计算机网络上交换基于 XML 的消息的协议,通常是用 HTTP。

    WSDL(Web Services Description Language,Web 服务描述语言) – 基于 XML 的描述语言,用于描述与服务交互所需的服务的公共接口,协议绑定,消息格式。

    UDDI(Universal Description, Discovery, and Integration,是统一描述、发现和集成) – 基于 XML 的注册协议,用于发布 WSDL 并允许第三方发现这些服务。

     

     

    通过上面的图我们可以看出,多个子系统直接相互交互,相互调用非常凌乱,这样我们就很不爽,所以我们就用到了我们的SOA架构,SOA又叫服务治理,SOA就是帮助我们把服务之间调用的乱七八糟的关系给治理起来,然后提供一个统一的标准,把我们的服务治理成下图所示,以前我们的服务是互相交互,现在是只对数据总线进行交互,这样系统就变得统一起来。

    服务导向架构并不是一种全新的解决方案;相反,SOA是技术与架构的自然进化。系统架构一直在不断进步,与商业保持高度一致。系统设计师与商家很早就认识到将技术与商业流程相协调的重要性,包括充分应用并合理化技术资源,以及为商业提供更好的支持。

    SOA也在一定程度上源于早已有之的企业架构理论。企业架构对技术进行评估,但是更重要的是,它关注整个企业和全部的商业流程并提供了做出技术决策的背景信息。SOA工具则融合了互联网技术,如HTTP和XML,以及综合技术,如消息总线、转译技术和连接技术。

  • 相关阅读:
    python-socket1
    python-网络编程
    linux-常用指令3
    linux-vim/编辑器
    linux-常用指令2
    linux-常用指令1
    MySQL 练习题
    33 python 并发编程之IO模型
    32 python 并发编程之协程
    31 python下实现并发编程
  • 原文地址:https://www.cnblogs.com/123456www/p/13053446.html
Copyright © 2011-2022 走看看