什么是SOA(面向服务的架构)?

2024-03-22

如果你愿意的话,可以叫我巨魔,但我是认真的:新的 SOA 趋势与我 15 年前构建的客户端服务架构究竟有何不同?我一直听到 SOA,但我不明白它与我们一直以来所做的有什么不同。

早在 10 年前,我的公司就有多个客户(使用多种语言)使用相同的服务。它不是 XML(它是一种称为 Microsoft DCOM 的二进制协议),也不能通过 WSDL 自动发现,但这没关系,因为阅读文档同样容易。我们的系统甚至是“开放的”,因为我们记录了足够的信息以允许第三方与我们的服务进行对话。我们不是先驱——十年前我认识的所有其他公司都在做同样的事情。

我认为当时和现在的唯一区别是,现在互联网上提供单一服务,而 10 年前,每个客户都会托管自己的服务实例。但这不是架构问题——服务的实际存在位置对于任何使用该服务的人都是透明的。

那么,SOA 到底与我们多年来所做的事情有何不同呢? SOA 是否只是一个营销术语,代表了一种实际上在很久以前就变得普遍的最佳实践?或者我是否错过了一些与我们一直以来所做的不同的 SOA 微妙之处?


忘记 XML。忘记 WSDL。 SOA 不是一种可以购买的技术,尽管它经常以这种方式进行营销。

SOA 的真正意义在于 IT组织。 SOA 的要点是避免出现大量具有隔离数据池的“应用程序”,这些应用程序要么根本不相互通信(因此经常重复数据),要么仅通过适配器层以低效、有缺陷的方式进行通信或EAI系统。

对于大公司来说,这是一个严重的问题 - 他们实际上有数百个独立的应用程序,但集成程度不高。到处都有重复和不一致的数据,结果是客户会生气,而且损失了真正的钱,因为计费部门不断发送取消订单的发票,而客户服务代表甚至找不到该订单,因为它在订单跟踪中被取消了。系统,但不是计费系统。

SOA 应该通过从头开始设计每个应用程序以标准化、跨平台的方式发布其服务来解决这个问题,以便其他应用程序可以访问数据而不必复制它。

从商业角度来看,这是非常可取的。流行语炒作和首字母缩略词汤只是 IT 公司利用这种需求的尝试。不幸的是,这导致许多人(包括 CEO)相信 SOA 是一种可以购买的产品,它会神奇地提高您的 IT 效率,而没有意识到只有当您也重组整个 IT(并且相当多)时,这种情况才会发生。也可能是您的业务部门)与 SOA 兼容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是SOA(面向服务的架构)? 的相关文章

  • 在 REST WCF 中读取 HttpRequest 正文

    我在 net 4 中运行了一个 REST WCF 服务 并且我已经测试了它正在工作并接受我对其发出的 HttpRequest 的 Web 服务 但我在尝试访问 Web 服务中的 HttpRequest 主体时遇到了问题 我尝试使用 Fidd
  • Spring-WS WSDL生成问题

    我正在尝试制作一个非常简单的 Web 服务 但在让 spring 生成正确的 wsdl 时遇到一些困难 我已尽力复制此示例春季教程 http static springsource org spring ws sites 2 0 refer
  • 将耗时的进程从我的 ASP.NET 应用程序中移走

    我的 Asp net 应用程序生成动态 pdf 有时这需要一段时间 并且是一个相当繁重的过程 实际上我不希望我的用户等待pdf 只需在生成后将其发送到那里的邮件即可 所以我尝试了网络服务 我将一个 id 从数据库获取数据 和一些字符串传递给
  • 如何为 HTTP GET 的多个 Key-Value 参数设计 REST URI

    我正在设计一个 RESTful API 一项服务应该提供多个键值对的查询功能 例如 客户端可以使用一个 HTTP GET 请求来查询不同的产品及其关联的数量 客户想要查询金额为 44 的产品 1 和金额为 55 的产品 2 我实际上不希望我
  • 你现在在做MDA(模型驱动架构)吗?如果是这样,您使用什么工具,效果如何?

    模型驱动架构是这样一种想法 您创建模型 以一种不依赖任何 或至少大多数 实现技术的方式表达您需要解决的问题 然后为一个或多个特定平台生成实现 人们声称 在更高的抽象级别上工作更加强大和高效 此外 您的模型比技术更长寿 因此 当您的第一语言
  • 您会在新的商业项目中使用 S#arp 架构吗?

    The S arp 架构 http code google com p sharp architecture 看起来真的很酷 但是您是否认为它仍然太新而无法在重要的新项目中做出承诺 我们假设该项目乍一看很适合它 It all seems非常
  • Web 服务版本控制策略的优缺点

    更新20100224 我真的不需要某些供应商网站上的一些蹩脚定义 我正在寻找的是实际实施以及实际实施这些东西的人们在日常 IT 业务周期中面临的挑战 更多内容如下 尚未制定 采用任何退休策略 显然需要制定一项策略 我对您如何制定该战略并将其
  • 使用 JAX-WS 的 SOAP 消息中的嵌套标记中没有命名空间

    我正在尝试使用 JAX WS 和 wsimport 编写一个使用给定 Web 服务的 Java 应用程序 它发送到服务的 SOAP 消息大部分是正确的 然而 传递给服务函数的参数之一是字符串数组 尽管在 SOAP XML 中为数组本身指定了
  • 当与不需要虚拟机的编译程序一起使用时,CGI 是否仍然很慢?

    当我学习 CGI 时 我了解到任何编程语言都可以用来将其输出挂钩到 http 响应消息 而它的输入是 http 请求消息 我读过的很多文章都在 Perl 的背景下讨论 CGI 这是因为 Perl 是与 CGI 结合使用的最常见的语言吗 我想
  • JAXB 是否支持 xsd:restriction?

  • 这叫什么类型的建筑?

    对于我当前正在开发的 Web 应用程序 ASP NET MVC 我们采用以下架构 Data Access Layer 将数据持久保存到任意数据库的逻辑 Domain 数据模型 Service Layer 业务逻辑 例如订单处理 账户管理等
  • Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP

    我已经尝试了几乎所有我能找到的可能的解决方案 但我似乎无法让这个脚本工作 以下是我之前的一些尝试 如何使用 wse php 库通过 SOAP 连接到安全的 Web 服务 https stackoverflow com questions 1
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况
  • QuickBlox:arm64 架构的未定义符号

    我使用 Xcode 6 4 并使用 cocoapods 安装了 QuickBlox 框架 使用该框架后 我收到一些错误 例如 Undefined symbols for architecture arm64 OBJC CLASS QBSet
  • Ajax jquery 调用响应中出现 NetworkError: 403 Forbidden 错误

    我使用 apache tomcat 作为 Web 服务器 我已经在tomcat上部署了web服务 如果我通过 jquery ajax 从本地文件系统向 tomcat webservice 发布请求作为响应 我会收到 403 错误 如果我从同
  • 将 SAML 令牌与 Web 服务 (wsdl) 结合使用

    我已从提供商处获得了 wsdl 文件和 pfx 我致电 IdP 并获取 SAML 令牌 现在我需要将该令牌传递给 WebService 如何使用 SAML 令牌来处理 WebService 我正在使用 NET 4 5 在以下两篇文章的帮助下
  • 序列化 .NET WCF 服务的类型时出现问题:服务 WSDL 在 XSD 中定义空类型

    我正在使用 WCF 编写一个 Web 服务 我创建了数据合约 我创建了我的服务合同 界面 我定义了方法 其参数的类型与数据契约相同 我实现了创建服务类的服务合同 我使用 svc 文件和 IIS 托管我的服务 我尝试了我的服务 寻找http
  • SSRS:在单个 Web 服务调用中获取所有报告和参数的列表?

    简短而有趣的版本 是否有一个 Web 服务方法可以返回所有可用报告的名称以及每个报告的参数 我的 Web 代码 C MVC 连接到 SSRS Web 服务 并且我能够通过这些服务检索报告 我知道我可以获得如下可用报告的列表 var rSer
  • 如何在WCF Rest服务中从流上传图像

    我正在尝试创建 wcf 服务 该服务将上传 pdf doc xls 图像等文件 但 pdf txt 文件正在上传并正确打开 但是当我尝试上传图像文件时 文件正在上传 但是图像不可见 OperationContract WebInvoke M

随机推荐

  • 我可以解析外部网页的目录列表吗?

    是否可以解析外部网页的目录列表 因为该网页是可访问的 并且当我访问它时它会显示文件列表 我只想知道是否可以在 PHP 中动态解析文件以及如何解析 谢谢 抱歉不清楚 我的意思是目录列表 例如 http www ibiblio org pub
  • JComboBox 弹出菜单不出现

    我在 JPanel 中有一个 JComboBox 它本身嵌套在其他几个 JPanel 中 它填充了枚举的成员 我遇到了一个问题 当我单击展开按钮时 弹出菜单不会出现 以下是我迄今为止收集到的信息 1 第一次点击展开按钮没有任何反应 第二次单
  • LINQ 基于 IList 从 IList 中删除某些元素 [重复]

    这个问题在这里已经有答案了 如何使用 LINQ 从一个基于另一个 IList 的 IList 中删除某些元素 我需要从 list1 中删除 ID 出现在 list2 中的记录 下面是代码示例 class DTO Prop int ID Pr
  • 如何在 Windows 10 Universal 中获取设备的唯一标识符?

    这是我为 Windows Universal 8 1 获取唯一 DeviceID 的旧实现 但 HardwareIdentification 类型不再存在 private static string GetId var token Hard
  • 如何在android应用程序中从twitter获取用户信息?

    我正在将 Twitter 集成到我的 Android 应用程序中 我可以为用户授权该应用程序 现在 我正在寻找一个 API 它可以为我提供登录用户的信息 如名字 姓氏 电子邮件等 我已经为 Facebook 做了这个 facebook re
  • Java中如何查找未关闭的I/O资源?

    Java 中的许多 I O 资源 例如 InputStream 和 OutputStream 在使用完毕后需要关闭 如前所述here http www coderanch com t 202922 Performance java Uncl
  • Matlab中如何imwarp转点?

    我正在使用 Matlab 将图像转换为目标图像 我有几何变换 tform 例如这是我的 tform 1 0235 0 0022 0 0607 0 0 0276 1 0002 0 0089 0 0 0170 0 0141 1 1685 0 1
  • 如何将 openssl-sys 箱静态链接到共享库?

    我正在使用一个依赖于的库openssl 系统 https github com sfackler rust openssl 根据文档 如果我指定OPENSSL STATIC 1作为环境变量 OpenSSL 将静态链接到共享库输出中 Due
  • WinForms 多线程:仅当前一个更新完成时才执行 GUI 更新

    我有带有一些后台处理的多线程应用程序 它有长时间运行的 UI 更新 在 UI 线程本身上 它们是通过众所周知的从后台线程调用的MSDN 上的资源 http msdn microsoft com en us library 757y83z4
  • 用颜色填充图像但保留 Alpha(PIL 中的颜色叠加)

    基本上 我正在尝试创建一个函数来获取给定的图像和颜色 对于图像中的每个像素 它将保留原始 alpha 值 但会将颜色更改为给定的颜色 例如 如果函数获取下面的箭头图像和红色 它将输出以下图像 在 Photoshop 和其他图像编辑器中 这种
  • 从函数创建矩阵

    我想从函数创建一个矩阵 这样 3 3 如果行索引小于给定阈值 k 则矩阵 C 的值等于 1 import numpy as np k 3 C np fromfunction lambda i j 1 if i lt k else 0 3 3
  • “NSPercientContainer”仅在 iOS 10.0 或更高版本上可用

    我是 iOS 应用程序开发新手 我开发了一个应用程序 在用户登录时显示一个网站 它适用于设置为 10 1 的部署目标 为了使其与 IOS 8 兼容 我尝试将部署目标设置为 8 因为我遇到了以下错误 NSPersistentContainer
  • 控制线段

    这是一个简单的问题 我一直在成功使用 d3 svg line 生成器 但我现在需要能够对整条线中的每个单独段进行更多控制 例如 每个部分可能需要不同的颜色 或者每个片段甚至可能需要不同的厚度 根据相邻片段的厚度逐渐变细或变细 我想知道实现这
  • TFS 中的搁置是什么?

    在 TFS 中搁置仅仅是一种软签入 以便其他团队成员可以看到源代码吗 即搁置的代码不会被编译 对吗 货架有很多用途 主要有 上下文切换 保存当前任务的工作 以便您可以切换到另一个高优先级任务 假设您正在开发一项新功能 只顾自己的事 这时您的
  • 什么是 := 运算符?

    在某些编程语言中 我看到 例如 x y 这是什么 运算符通常被称为 它有什么作用 在所有支持运算符的语言中 这意味着分配 在支持运算符的语言中 the 运算符通常表示相等比较 在语言中 意味着赋值 通常用于相等比较 does mean 我不
  • javascript:动态更改名称属性

    我正在处理这个脚本 它没有错误 但我想在上面添加一些功能 就像当我单击它添加的按钮时一样 但我希望输入文本的名称属性也被更改 这是我的脚本 javascript var a 1 function add var fContent docum
  • 有没有办法使用 Selenium Webdriver (firefox) 记录 http 请求/响应?

    有没有办法使用 Selenium Webdriver firefox 记录 http 请求 响应 我想可以通过代理驱动网络流量并记录它 但也许有更简单的 内部 硒解决方案 在 selenium 频道上问了这个问题 您将需要代理它来捕获请求
  • Android Intent:发送带有附件的电子邮件

    我想通过电子邮件发送多个文件 我找到了这个Android 使用 Intent 实现多个电子邮件附件 https stackoverflow com questions 2264622 android multiple email attac
  • 打印从根节点到叶节点的所有路径 - javascript

    function formCategoryTrees object each object function objectValues var leafCategoryId objectValues id var leafCategoryN
  • 什么是SOA(面向服务的架构)?

    如果你愿意的话 可以叫我巨魔 但我是认真的 新的 SOA 趋势与我 15 年前构建的客户端服务架构究竟有何不同 我一直听到 SOA 但我不明白它与我们一直以来所做的有什么不同 早在 10 年前 我的公司就有多个客户 使用多种语言 使用相同的