什么是SOA“用简单的英语”? [关闭]

有人能用简单的英语解释 what is SOA all about 吗?我在这里听到SOA,那里有SOA,但我无法理解它是什么以及用于什么 . 这是一个简单的概念,后来演变成巨大的东西或什么?

包括维基在内的所有文件都有点抽象,或者我可能是个白痴并且没有得到它 . 这是一个白痴的指南吗?

这三封信背后究竟是什么?

回答(20)

2 years ago

你可能会发现this article (What is SOA? - SOA and Web Services Explained )很有帮助 .

一个小预告片:

  • SOA是一种架构应用程序的方式,它们由离散的软件代理组成,这些代理具有简单,定义良好的接口,并通过松散耦合进行编排以执行所需的功能 .

  • SOA中有两个角色 - 服务提供者和服务使用者 . 软件代理可以扮演两种角色 . SOA并不是一个全新的概念 - 但是,本文主要关注使用Web服务实现的SOA .

2 years ago

SOA是一些旧概念的新徽章:

  • 将代码划分为可重复使用的模块 .

  • 在模块中封装任何可能发生变化的设计决策 .

  • 设计您的模块,使它们可以以不同的有用方式组合(有时称为“系列”或“产品系列”) .

这些都是基岩软件开发原则,其中许多原则首先由David Parnas阐述 .

SOA中有什么新东西

  • 你是在网络上做的 .

  • 模块通过网络相互发送消息进行通信,而不是通过过程调用等更传统的编程语言机制进行通信 . 特别是,在面向服务的体系结构中,部分通常不共享可变状态(传统程序中的全局变量) . 或者,如果它们共享状态,则该状态被小心地锁定在数据库中,该数据库本身是代理并且可以容易地管理多个并发客户端 .

2 years ago

我看到许多答案使用更高级的单词和技术术语来解释面向服务的体系结构(SOA) . 我想用简单的英语比喻为外行人解释一下 .

But first a description of a SOA
SOA可以分为三层来描述,如下图所示 . 一方面我们有提供者,另一方面我们有消费者,由双方分开沟通的桥梁隔开 .

消费者使用其业务所需的许多应用程序,并且提供者使用为这些应用程序提供信息的组件 . 它们使用通用架构通过一组服务进行通信 .


enter image description here


The analogy
想象一下乡村的房子,它在很多方面都是一个更大的社区的一部分,如城市或城镇 . 该市拥有自己的复杂系统,用于提供水和电,处理卫生设施,提供交通和其他公用设施 . 众议院是这种模式的消费者,城市(或社区)是供应商,管道,下水道,电力线,光纤等是他们沟通的基础设施 .

这个模型可以与SOA进行比较 . 房子里的人们使用了许多不同的“应用”,如散热器,电脑,厕所,灯具,地板采暖,浴缸等 . 这些应用并不关心城市如何产生水,创造电力或处理废物的时间长因为它有效 . 该市的组成部分是发电机,水泵和卫生区 . 它为房子提供了所有这些需求,但它可以由房子以它认为合适的方式使用它 .

我希望这至少能让人更好地了解SOA .

2 years ago

我们假设你有四个厨师 . 在SOA中,你认为他们彼此讨厌,所以你努力让他们尽可能少地互相交谈 .

你是怎样做的?那么,你将首先定义角色和界面 - 厨师1将制作沙拉,厨师2将制作汤,烹饪3将制作牛排等 . 然后你将把餐桌放在 table 上(所以这些是接口)并说:“每个人都请把你的创作放在你指定的菜肴中 . 别关心别人 . ”

这样,四位厨师必须尽可能少地相互交谈,这在软件开发方面非常好 - 不一定是因为他们彼此讨厌,而是出于其他原因,如物理位置,决策效率等 .

这也意味着您可以根据需要重新组合菜肴(服务) . 例如,你可能只是用甜点来为咖啡馆服务,或者只是把汤和你从另一家公司买来的面包结合起来提供更便宜的菜单,或者让其他餐馆用你的沙拉与他们的菜肴等结合起来 .

最成功的SOA实施之一是在亚马逊 . 由于他们的设计,他们可以重新打包整个基础设施并将其作为亚马逊网络服务出售 .

*这只是SOA的一个方面 .

2 years ago

SOA是一种架构风格,但也是关于如何开发和集成异构应用程序的一种方式 . SOA的主要目的是从 monolithic applications 转而使用 set of reusable services 来构建应用程序 .

恕我直言,SOA仅在企业级有意义,对单个应用程序没有任何意义 .

在许多企业中,每个部门都有自己的一套企业应用程序

  • 类似的功能已多次实施

  • 需要在多个应用程序之间共享数据(例如客户或员工数据)

  • 应用程序以部门为中心 .

使用SOA,我们的想法是在企业范围内提供可重用的服务,以便可以使用它们构建和组合应用程序 . SOA的承诺是

  • 无需一遍又一遍地重新实现类似功能(例如提供客户或员工服务)

  • 促进应用程序的集成以及对公共数据或功能的访问

  • 以企业为中心的开发工作 .

SOA愿景需要 technological 转换以及 organizational 转变 . 虽然它解决了一些问题,但它也引入了其他问题,例如,使用单一应用程序的SOA,安全性要难得多 . 因此SOA需要讨论它是否有效 .

这是SOA的1000英尺视图 . 然而它并不止于此 . 还有其他补充SOA的概念,如业务流程编排(BPM),企业服务总线(ESB),复杂事件处理(CEP)等 . 它们都解决了 IT/business alignement 的问题,即如何使IT能够有效地支持业务 .

2 years ago

SOA is acronym for Service Oriented Architecture.

SOA正在设计和编写软件应用程序,使得不同的软件模块可以无缝集成,具有高度的可重用性 . 大多数人将SOA限制为编写客户端/服务器软件 - Web服务 . 但它的SOA背景太小了 . SOA比这要大得多,在过去几年中,Web服务已经成为通信的主要媒介,这可能是人们将SOA视为Web服务通常限制SOA的边界和含义的原因 .

您可以考虑编写一个独立的数据库访问模块,它可以独立工作而不需要任何依赖 . 该模块可以公开可以由需要数据库访问的任何主机软件使用的类 . 主机应用程序中没有启动配置 . 无论需要什么或需要什么都是通过数据库访问模块公开的类来传达的 . 我们可以将这些类称为服务,并将该模块视为已启用服务 .

实践SOA通过强制执行DRY [不要重复自己]来实现高度可重用性,这导致高度可维护的软件 . 可维护性是任何软件架构首先考虑的问题 - SOA为您提供了这一点 .

2 years ago

据我所知,基本的概念是你创建了一个小的"services",它为其他系统提供了一些有用的东西,并避免构建那些倾向于在系统内部做所有事情的大型系统 .

因此,您定义了一个用于交互的协议(例如,它可能是SOAP Web服务),让您的“系统 - 做一些业务 - 工作”与小型服务进行交互,以实现您的“大目标” .

2 years ago

我建议你阅读Thomas Erl和Roger Sessions的文章,这将使你能够牢牢掌握SOA的全部内容 . 这些也是很好的资源,看看SOA为你的老板解释一个外行解释

Building a SOA

SOA Design Pattern

Achieving integrity in a SOA

Why your SOA should be like a VW Beetle

SOA explained for your boss

WCF Service Performance

2 years ago

在大型组织中往往会发生的事情是,随着时间的推移,一切都是单一的或不同的系统,或者两者兼而有之 . 最终有人进来说我们弄得一团糟 . 现在,你想重新设计(钱给某人)一切都是以一种单一的方式取决于你支付范式的人,但同时又能够添加零件和零件独立于主/整体件 .

因此,您购买了Oracle的SOA,Oracle成为您所有部分的老大 . 所有其他参与者都必须通过服务(Web服务或其他任何服务)来使用SOA .Oracle monolith会处理所有事情(monolith并不意味着贬义) . 哦,是的,你在前面或其他东西上有ASP.NET MVC .

最重要的是在没有影响的情况下将事物移入和移出系统,并将供应商Oracle SOA,Microsoft WCF作为其中的大脑 . 一切都像oop / ood一样,流畅,进出的东西很少甚至没有影响,甚至是人类服务,而不仅仅是电脑 .

对我而言,它只是意味着一系列具有良好前端的Web服务(或者我们将来称之为的任何服务) . 如果您拥有数据库,只需点击数据库并停止担心流行语 . 没关系 .

2 years ago

只有一个建议: -

阅读Thomas Erl的SOA Concepts, Technology and Design .

它以简单的英语和案例研究非常精美地提供了有关SOA的详细信息 .

2 years ago

嗯,你看.. SOA代表面向服务的体系结构....简单来说,你编写了一段非常通用的代码,即它做了一些可以在很多应用程序中使用的东西...可能是这样的地址簿或可能是计算器 . 并在IIS上启动此代码 . 因此,您通过代码提供服务 . 所以你是一个服务提供商 . 现在有人想使用类似的代码,然后他不必再次编写代码 . 他只是通过Web服务使用您的代码 . 因此他成为服务消费者 . 因此,使用此类服务制作程序称为SOA . 松散的耦合就在那里,因为服务提供者和消费者可能正在进行交互,即使他们使用的是差异编程语言 . 希望你能理解 .

2 years ago

来自ittoolbox博客 .

以下概述了与过去设计技术的相似之处和不同之处:

•SOA与结构化编程相似性:最类似于子程序调用,其中传递参数并且从调用者中抽象出函数的操作 - 例如CICS链接和执行以及COBOL CALL保留字 . 副本用于定义数据结构,通常将其定义为服务的XML模式 . o差异:SOA松散耦合意味着服务的变化对消费者的影响较小(“调用”程序),服务可跨语言和平台互操作 .

•SOA与OOA / OOD o相似之处:封装,抽象和定义的接口o差异:SOA松散耦合,没有类层次结构或继承,低级抽象 - 类级别与业务服务

•SOA与传统的基于组件的开发(CBD) - 例如CORBA,DCOM,EJB o相似之处:通过组装组件,接口,远程调用重用o差异:标准的广泛采用,XML模式与Marshaled对象,服务编排,重用设计更容易,服务以业务为重点而非IT专注,商业服务是课程粒度(范围广泛)

•SOA(用于集成)与企业应用程序集成(EAI)o相似之处:最佳实践(定义良好的接口,标准化模式,事件驱动架构),可重用接口,通用模式o差异:标准,采用和改进工具

2 years ago

阅读上面的回答,听起来我认为SOA是开发人员(至少是好的)从第一天开始就做的事情 .

2 years ago

它也可以代表“阵列结构”(与“阵列阵列”相对),这是并行(特别是SIMD)编程中的常见主题,但我猜这不是你在这里的意思!

2 years ago

SOA是技术供应商发明的一个流行词,用于帮助销售与企业服务总线相关的技术 . 这个想法是你在企业中使你的小岛应用程序(例如:会计系统,库存控制系统等)都公开服务,这样它们就可以灵活地编排成'应用程序',或者更确切地说成为聚合企业范围业务的一部分逻辑 .

基本上从来没有工作的老笨蛋的负荷,因为它忽略了技术在组织中的方式的原因在于文化,进化,公司的历史以及锁定是如此之高以至于任何尝试重组技术势必会失败 .

2 years ago

听听本周的Floss Weekly播客版,其中涵盖了SOA . 描述是相当高的水平,并没有深入研究太多的技术细节(虽然更具体和可识别的SOA项目的例子会有所帮助 .

2 years ago

传统的应用程序架构是:

  • 用户界面

  • 在用户界面后面封装/隐藏的未定义的东西(实现)

如果要以编程方式访问数据,可能需要使用屏幕抓取 .

在我看来,SOA似乎是一种专注于暴露机器可读数据和/或API的架构,而不是暴露UI .

2 years ago

SOA或面向服务的体系结构是一种软件体系结构模式,其中应用程序或系统是从符合特定特征集的底层(通常是分布式)软件服务构建的,即:

  • 基于接口,政策和 Contract

  • 位置透明度

  • 自治

  • 摘要

  • 可重复使用

  • 可组合

  • 无国籍

  • 可发现

  • 可扩展

  • 松散耦合

SOA的主要目标是软件开发灵活性,即能够轻松且廉价地响应变更的能力,从而使企业能够快速响应不断变化的市场 .

服务通常(但绝不是唯一地)实现为Web服务,即它们在普遍存在的Web HTTP协议上运行,并且使用基于XML的SOAP或轻量级(和更流行的)REST范例来实现 .

2 years ago

取决于你是谁!

如果您是业务所有者,SOA是一种提高收入和业务敏捷性的解决方案 . 如果你是一个企业架构师,那么SOA就是一种在空白画布上绘制漂亮而干净的软件的方法 . 如果您是架构师,SOA是通过集成平台设计松散耦合服务的解决方案,只需将服务插入插座即可 . 如果您是开发人员,SOA是一种编程范例,其中服务位于设计和代码的中心 .

你应该阅读100-SOA-Questions [pdf]

干杯

2 years ago

面向服务的体系结构(SOA)是一种软件体系结构样式,它将应用程序构建为可插入部分的集合,每个部分都可以被其他应用程序重用 .