Architecture 面向服务的体系结构和基于组件的开发如何相互关联?

Architecture 面向服务的体系结构和基于组件的开发如何相互关联?,architecture,components,soa,Architecture,Components,Soa,这里有一个相当理论和抽象的问题:面向服务的体系结构(SOA)与基于组件的方法有何不同?SOA的概念是对基于组件的方法的扩展吗 你的想法是什么?也许你知道关于这个主题的好论文吗?这两个概念是非常正交的,既不互补也不矛盾。如果你威胁要用生锈的叉子戳我的眼睛,强迫我概括,我会说基于组件的开发是一种建模和组装特定软件的技术,而SOA是一种组织独立系统的技术,这样它们就可以相互交流 正如我所说,这是一个粗俗的概括,但我只想给大家一个更具体的问题:)有人可能会说SOA是一种基于组件的高级开发形式,组件已转化

这里有一个相当理论和抽象的问题:面向服务的体系结构(SOA)与基于组件的方法有何不同?SOA的概念是对基于组件的方法的扩展吗


你的想法是什么?也许你知道关于这个主题的好论文吗?

这两个概念是非常正交的,既不互补也不矛盾。如果你威胁要用生锈的叉子戳我的眼睛,强迫我概括,我会说基于组件的开发是一种建模和组装特定软件的技术,而SOA是一种组织独立系统的技术,这样它们就可以相互交流


正如我所说,这是一个粗俗的概括,但我只想给大家一个更具体的问题:)

有人可能会说SOA是一种基于组件的高级开发形式,组件已转化为可重用的功能,称为服务。

在本文中,作者将基于组件的开发视为支持SOA——最终,您的SOA需要实现服务,而您将组件设计为提供实现的可交付物。其中的一些技巧是正确地获得组件的粒度和内聚性

我相信这一观点是对当今SOA实际实现方式的合理描述。对我来说,关键是你首先关注服务,从商业角度看你需要做什么,然后再关注组件设计。[这是一篇关于识别服务的文章。免责声明:我是IBM人员,这些文章是由同事撰写的。]

然而,如果你回过头来看,我想你会发现基于组件的开发是一种早于SOA的方法,并且有许多与SOA相同的目标。我认为SOA只是一种营销炒作,在旧概念上贴上新标签,这种观点过于愤世嫉俗。然而,CBD和SOA之间有相当大的重叠。我只是认为SOA是迄今为止我们在如何进行集成方面所拥有的最好的集体智慧,毫无疑问,随着我们学习到更多新技术,将会出现,直到整个kitbag重新获得一个新名称


我个人的观点是,SOA之所以获得发展势头,是因为出现了一系列技术,允许组织内不同的技术团队(如IBM和Microsoft)构建可以相互使用服务的组件。换句话说,在如何制作组件方面出现了一个成熟的水平,因此一个新的标签(SOA)很有吸引力。

基于组件的开发需要一个代码片段库(有时是完整的对象堆栈),通常使用一种代码语法。为了在其他方面有用,这些片段需要通过VB6和VC++之间的公共接口(例如windows API或COM、COM+等)进行移植或调用。因此,VB6可以使用和调用VC++函数。因此,组件重用有时需要大量重构才能重用,这是违反直觉的。还有早期和后期绑定的问题。存储库组件仍然需要作为代码库的功能部分进行构建和部署,以便使用。代码在添加到存储库之前应该经过单元测试,但仍然需要进行集成测试以确认功能。为了“跨越对象接口”,您还必须构造正确的参数。同样,这通常需要包装器代码

这些代码存储库可能不包含真正跨平台的所有内容。当问题跨领域分割时,通常需要平台独立性,尤其是在集成系统中。接口包含在构建和部署的软件中,而不是实际运行的代码中

两者之间缺少的是一个框架。SOA既不是CBDv2,也不是CBDv2的扩展,您必须了解服务实现的框架。框架也不是一个新概念

CBD和SOA最终都促进了代码重用。CBD的范围通常比SOA窄!SOA需要一个有效的框架,而CBD则不需要。CBD与其开发语言和目标平台相耦合