有人能用简单的英语解释SOA的全部内容吗?我在这里听到SOA,那里有SOA,但我无法理解它是什么以及用于什么.这是一个简单的概念,后来演变成巨大的东西或什么?
包括维基在内的所有文件都有点抽象,或者我可能是个白痴并且没有得到它.这是一个白痴的指南吗?
这三封信背后究竟是什么?
Nor*_*sey 64
SOA是一些旧概念的新徽章:
将代码划分为可重用的模块.
将任何可能发生变化的设计决策封装在模块中.
以这样的方式设计模块,使它们可以以不同的有用方式组合(有时称为"系列"或"产品系列").
这些都是基岩软件开发原则,其中许多原则首先由David Parnas阐述.
SOA中有什么新东西
你是在网络上做的.
模块通过网络相互发送消息进行通信,而不是像过程调用那样传统的编程语言机制.特别是,在面向服务的体系结构中,部分通常不共享可变状态(传统程序中的全局变量).或者,如果它们共享状态,则该状态被小心地锁定在数据库中,该数据库本身是代理并且可以容易地管理多个并发客户端.
KB2*_*B22 49
您可能会发现本文(什么是SOA? - SOA和Web服务解释)很有帮助.
一个小预告片:
SOA是一种架构应用程序的方式,它们由离散的软件代理组成,这些代理具有简单,定义良好的接口,并通过松散耦合进行编排以执行所需的功能.
SOA中有两个角色 - 服务提供者和服务使用者.软件代理可以扮演两种角色.SOA并不是一个全新的概念 - 但是,本文主要关注使用Web服务实现的SOA.
Nik*_*las 43
我看到许多答案使用更高级的单词和技术术语来解释面向服务的体系结构(SOA).我想用简单的英语比喻为外行人解释一下.
但首先
可以在三层中描述SOA SOA,如下图所示.一方面我们有提供者,另一方面我们有消费者,由双方分开沟通的桥梁隔开.
消费者使用其业务所需的许多应用程序,并且提供者使用为这些应用程序提供信息的组件.它们使用通用架构通过一组服务进行通信.
比喻
想象一下乡村的房子,它在很多方面都是一个更大的社区的一部分,如城市或城镇.该市拥有自己的复杂系统,用于提供水和电,处理卫生设施,提供交通和其他公用设施.该房子是在这个模型中的消费者来说,市(或社区)是从运营商与管道,下水道,电力线,光纤等是基础设施中,他们交流.
这个模型可以与SOA进行比较.房子里的人们使用了许多不同的"应用",如散热器,电脑,厕所,灯具,地板采暖,浴缸等.这些应用并不关心城市如何产生水,创造电力或处理废物的时间长因为它有效.该市的组成部分是发电机,水泵和卫生区.它为房子提供了所有这些需求,但它可以由房子以它认为合适的方式使用它.
我希望这至少能让人更好地了解SOA.
Enn*_*oji 27
我们假设你有四个厨师.在SOA中,你认为他们彼此讨厌,所以你努力让他们尽可能少地互相交谈.
你是怎样做的?那么,你将首先定义角色和界面 - 厨师1将制作沙拉,厨师2将制作汤,烹饪3将制作牛排等.然后你将把餐桌放在桌子上(所以这些是接口)并说:"每个人都请把你的创作放在你指定的菜肴中.别关心别人."
这样,四位厨师必须尽可能少地相互交谈,这在软件开发方面非常好 - 不一定是因为他们彼此讨厌,而是出于其他原因,如物理位置,决策效率等.
这也意味着您可以根据需要重新组合菜肴(服务).例如,您可能只是使用甜点为咖啡馆提供服务,或者只是将汤与其他公司购买的面包相结合以提供更便宜的菜单,或让其他餐馆使用您的沙拉与其菜肴相结合等.
最成功的SOA实施之一是在亚马逊.由于他们的设计,他们可以重新打包整个基础设施并将其作为亚马逊网络服务出售.
*这只是SOA的一个方面.
ewe*_*nli 17
SOA是一种架构风格,但也是关于如何开发和集成异构应用程序的愿景.SOA的主要目的是从单一应用程序转移出来,而是可以组合一组可重用的服务来构建应用程序.
恕我直言,SOA仅在企业级有意义,对单个应用程序没有任何意义.
在许多企业中,每个部门都有自己的一套企业应用程序
类似的功能已实施多次
需要在多个应用程序之间共享数据(例如客户或员工数据)
应用程序以部门为中心.
使用SOA,我们的想法是在企业范围内提供可重用的服务,以便可以使用它们构建和组合应用程序.SOA的承诺是
无需一遍又一遍地重新实现类似功能(例如,提供客户或员工服务)
便于将应用程序集成在一起以及访问公共数据或功能
SOA愿景需要技术转变以及组织转变.虽然它解决了一些问题,但它也引入了其他问题,例如,使用单一应用程序的SOA,安全性要难得多.因此SOA需要讨论它是否有效.
这是SOA的1000英尺视图.然而它并不止于此.还有其他补充SOA的概念,如业务流程编排(BPM),企业服务总线(ESB),复杂事件处理(CEP)等.它们都解决了IT /业务对齐的问题,即如何拥有IT能够有效地支持业务.
thi*_*eek 10
SOA是面向服务的体系结构的首字母缩写.
SOA正在设计和编写软件应用程序,使得不同的软件模块可以无缝集成,具有高度的可重用性.
大多数人将SOA限制为编写客户端/服务器软件 - Web服务.但它的SOA背景太小了.SOA比这要大得多,在过去几年中,Web服务已经成为通信的主要媒介,这可能是人们将SOA视为Web服务通常限制SOA的边界和含义的原因.
您可以考虑编写一个独立的数据库访问模块,它可以独立工作而不需要任何依赖.该模块可以公开可以由需要数据库访问的任何主机软件使用的类.主机应用程序中没有启动配置.无论需要什么或需要什么都是通过数据库访问模块公开的类来传达的.我们可以将这些类称为服务,并将该模块视为已启用服务.
实践SOA通过强制执行DRY [不要重复自己]来实现高度可重用性,这导致高度可维护的软件.可维护性是任何软件架构首先考虑的问题 - SOA为您提供了这一点.
据我所知,基本概念是你创建小的"服务",提供对其他系统有用的东西,并避免构建往往在系统内部做所有事情的大型系统.
因此,您定义了一个用于交互的协议(例如,它可能是SOAP Web服务),让您的"系统 - 做一些业务 - 工作"与小型服务进行交互,以实现您的"大目标" .
我建议你阅读Thomas Erl和Roger Sessions的文章,这将使你能够牢牢掌握SOA的全部内容.这些也是很好的资源,看看SOA为你的老板解释一个外行解释