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

时间:2009-07-08 16:19:42

标签: architecture components soa

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

你有什么想法?也许你知道任何涵盖这个主题的好文章吗?

4 个答案:

答案 0 :(得分:12)

this article中,作者将基于组件的开发视为支持SOA - 最终您的SOA需要实现服务,并将组件设计为提供实施的可交付成果。一些技能是使组件的粒度和凝聚力正确。

我认为这种观点是对SOA如何在今天实际完成的合理描述。对我而言,关键是您首先关注服务,在商业意义上需要做什么,然后再进入组件设计。 [这是关于识别服务的article。免责声明:我是IBM人,这些文章是由同事撰写的。]

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

我个人的观点是,SOA得到了发展,因为出现了一系列技术,允许组织内的不同技术团队(例如IBM基础和Microsoft基础)构建可以使用彼此服务的组件。换句话说,出现组件的成熟程度,使新标签(SOA)具有吸引力。

答案 1 :(得分:6)

这两个概念非常正交,既不相互补充也不相互矛盾。如果你威胁要在我的眼中贴上生锈的叉子并迫使我进行推广,我会说基于组件的开发是一种用于建模和组装特定软件的技术,其中SOA是一种用于组织单独系统的技术。他们可以互相交谈。

就像我说的那样,这是一个粗略的概括,但是如果没有更具体的问题,我就会给你一切:)

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

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

两者之间缺少的是框架。 SOA不是CBDv2也不是它的扩展,你必须经历服务实现的框架。框架也不是一个新概念。

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