术语“面向服务的体系结构”是否变成了毫无意义的行话?[关闭]


25

今天有人问我是否有“面向服务的体系结构”的经验,尽管我认为可以。在我看来,这个概念太混乱了,我不知道您怎么能诚实地回答这个问题。

我求助于Googling这个术语是为了获得对该概念的简洁定义以及它与其他体系结构的区别。在阅读了许多文章之后,我似乎能够找到的唯一通用线程是一个具有多个组件的系统,这些组件可以通过某种接口相互通信,也许稍微偏爱XML / SOAP。

似乎几乎所有应用程序都可以定义为SOA,尤其是Web应用程序。这个术语是否已经落入“ Web 2.0”陷阱中,并且变成了一个意味着您想要表达的含义的术语?

我要离开这里吗?当你们听到这个词时,这意味着您有什么特别的意思吗?如果是这样,我希望有一个简洁的定义,可以清楚地说明什么是SOA,什么不是SOA。


39
这总是毫无意义的行话。
Fosco 2010年

6
在荷兰,SOA表示STD。
Joeri Sebrechts

1
SOA是“用户付费”的概念吗?也就是说,传统上,企业将IT视为应将其最小化的成本。由于企业在不影响整个企业的生产力之前不知道可以削减多少IT,因此这会带来隐患。SOA是进行IT的一种方法,IT部门可以准确计算每个部门消耗了多少IT资源(例如财务,销售和人力资源)并适当地收费。它可能效率极低,但这是必不可少的。无法向用户收费会导致输失结果。
rwong 2010年

1
我本人并没有使用SOA(P),但是我听说面向服务的体系结构(SOA)在不再是“简单”时就成为了简单对象访问协议(SOAP)的代名词。
安德鲁·格林

2
嘿,人们为此花了很多钱。不要将情况与含义和细节混淆。管理层必须听起来像他们知道自己在说什么,并处于流行语的最前沿。不要从他们那儿走。还有什么呢?
JeffO

Answers:


12

我相信SOA的原始含义是基于具有定义明确的接口的服务,这些接口可以以编程方式使用。重点是服务接口,而不是UI终端,通信或数据库。关键部分是服务消耗其他服务。服务A可以调用服务B,获取结果,然后调用服务C或D。您可以拥有一组专门的服务,并通过组合解决客户问题的方式来设计解决方案。

SOA通常与SaaS(软件即服务)相混淆,后者指的是定价模式,即用户为订购的服务付费,而不是购买软件产品的副本。为了回答问题的第三段,Web应用程序可能不是SOA,但可以是SaaS。

这个词肯定已经失去了部分含义。在我工作的组织中,术语SOA经常与SaaS互换使用,指的是由IT专业人员(信息技术,而不是软件产品开发)组成的团队,它们配置服务器和路由器并安装在其上运行的软件产品。其中一些具有类似于“ SOA Architect”的名称,但是它们都与架构,设计,实现或测试软件无关。


1
我想你在这里打了钉子。
reinierpost 2011年

1
+1。您在几段中总结了典型的SOA书在800页绒毛中的作用。
prasopes

4

我在谷歌搜索SOA时做了同样的事情,以了解它的真正含义,是的,它被滥用了很多。当我想到SOA时,我想到以下几点:

  1. 一个可发现的无头程序...
  2. 这利用了无状态连接(ala HTTP)...
  3. 以平台独立格式进行通信

SOA可以与Client-Server体系结构(有状态服务体系结构)和库形成对比,后者是通过链接器连接到程序的模块。

因此,当人们谈论它时,我通常会带着一粒盐。我也倾向于将其称为“ Web服务”。对于Web服务,该体系结构是隐含的。


2
难道是服务器-服务器架构?
JeffO

3

在许多情况下,SOA的严格定义远远超出了成本/收益线。

除非您的产品本身就是服务,否则您通常需要不同的观点。

SOA的可用定义意味着您的总体体系结构是服务友好的。完全由原子服务构建的系统通常不是正确的计划,某些服务将在功能上进行组织,而其他服务将成为单一职责。我可能有黑匣子,可能有脱机流程,但是如果有可发现的服务集合,通过这些集合我可以完成有意义的工作,这是我的最低要求。

除了关于实际含义的争论之外,这个概念(无论它是什么意思)在很多方面都受到了影响,因为它被应用到根本不适合的地方。

例如,如果我要构建一个旨在成为黑匣子进程的东西,并且通过并行而不是分段和分布进行扩展,那么我可能会提供一项服务来暴露/与黑匣子对话,但是有些人一直试图将这些服务放入黑匣子中。框。

作为严格的技术定义,它始终是未定义的,但是这个想法在适合的地方并非没有优点。


3

我曾经不幸地在几个公司系统上工作,在这些公司系统上,管理已通过SOA出售。作为开发人员,我研究了系统,并且看到了在Web服务后面执行工作的大量软件。它可以用多种语言和体系结构来编写,这两种语言和体系结构都与呼叫服务的客户无关或无关,并且在文档中的任何地方实际上都没有缩写词“ SOA”。

但是管理层想要“ SOA” !!!因此,他们从某家大公司购买了非常昂贵的服务器,这些服务器在以前的“ Web Service”标签上粘贴了“ SOA”标签,在前面的“ JEE”标签上粘贴了“ SOA”标签。 ....你明白了。结果,我们作为开发人员坐在屏幕周围拖放itty-bitty图标,以创建“ SOA”“组件”,该组件可以像使用EBJ3 bean,spring组件等简单的东西一样工作一半。 。

因此,我的建议是,如果您被问到有关SOA的问题,请说:“是的,我已经完成了SOA,我已经编写了许多使用面向服务的体系结构来做事的系统。您在问哪种SOA技术?”。而且,如果他们开始用发光的眼睛交谈,并且渴望地看一下SOA组件,DRAG和DROP,以及它如何使开发变得更容易。慢慢退后,避免目光接触!


2

我认为这可能有点道理:一件事是当您在需要时调用“从属”模块时,另一件事是当您使服务/守护进程独立运行并响应您的请求(可能彼此交谈,使用它们的生活)换句话说就是自己的生活。通过这种方法,您可以拥有一个巨大的,可伸缩的,物理分布的系统。例如,我在移动电话领域见过一些。但这只是一个猜测。

(现在,让我们看看Wikipedia关于SOA的说法...哇。)


总结一下。如果有多个进程在运行,而每个进程在运行一个不同的任务,并且它们以某种方式相互通信,那么该体系结构就是SOA?
JohnFx 2010年

@JohnFx:是的。这样,构建高度可扩展的,高度可用/冗余的系统变得更加容易。
mojuba 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.