【问题标题】:Common information model for SOA systemsSOA 系统的通用信息模型
【发布时间】:2011-02-11 12:28:42
【问题描述】:

我们正在研究在 SOA 架构中跨多个系统的数据实施通用信息模型的可能性。

其中许多服务将由复合 UI 使用,因此我们看到了使用通用数据类型的好处。

我们想知道的是,这是否是一种可行的方法,或者我们是否应该只映射到客户端中的常见类型?

【问题讨论】:

  • 我一直认为 SOA 只是 High Efficient Roaming Profile Emergence System 的同义词。 .

标签: web-services architecture soa


【解决方案1】:

这个问题的范围很广,所以我的回答也将保持相当广泛。

这里的关键考虑因素似乎是位置独立性 - 虽然您正在使用多个应用程序,但它们都会共享某些类型的数据(尽管不是,据我从您的问题中可以看出,实际数据)。一个明显的用例是身份验证和授权数据。

如果您确定公共数据确实已经足够成熟,可以按照您所描述的方式进行隔离,那么我认为将其分层到服务中是非常有意义的。我认为这方面的完美例子是Windows Identity Framework。它需要我们作为架构师一直视为数据的东西并将其转化为服务。

根据我的经验,位置独立性会降低您在对同一服务器进行批量调用时会失去的一点效率,尽管 SOA 应用程序在其设计的早期就失去了这种效率。但是,通过“模式化”应用程序的一部分所获得的效率通常远远超过这一点。

【讨论】:

【解决方案2】:

拥有通用信息模型并不意味着通用数据类型或通用类。例如,简单地定义 Customer、Order、OrderItem 和 Product 之间的关系,对于共同的业务逻辑以及让不同的服务和应用程序能够在 SOA 环境中进行互操作的能力有很大的帮助。

您可能会考虑使用某种建模语言创建一个实际的通用模型。由此,可以针对特定情况生成具体的数据类型和类。有人可能会为此使用 UML,但我个人更喜欢使用 NORMA,这是一种 Object-Role Modeling 工具。它在概念级别上工作,因此创建独立于数据存储技术的模型。

NORMA 作为 Visual Studio 标准版或更高版本的插件运行,但开箱即用可为多个数据库生成工件,以及 LINQ to SQL 类甚至 PHP Web 服务,所有这些都来自同一模型。它是可扩展的,因此您可以从模型中生成自己的工件。当然,模型是用 XML 表示的,所以你可以用它做任何你喜欢的事情。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2013-05-09
相关资源
最近更新 更多