SOA系统的通用信息模型

时间:2011-02-11 12:28:43

标签: web-services architecture soa

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

根据我的经验,虽然SOA应用程序在设计早期就会失去这种效率,但您在使用位置独立性时失去的效率会有一点点效率,否则您可能会批量调用同一服务器。但是,通过“模式化”应用程序的一部分而获得的效率通常会超过这一点。

答案 1 :(得分:1)

拥有通用信息模型并不意味着常见的数据类型或公共类。简单地定义Customer,Order,OrderItem和Product之间的关系,可以很好地与通用业务逻辑保持一致,并且能够让不同的服务和应用程序在SOA环境中进行互操作。

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

NORMA作为Visual Studio Standard Edition或更高版本的插件运行,但开箱即用可为同一模型生成多个数据库,LINQ to SQL类甚至PHP Web服务的工件。它是可扩展的,因此您可以从模型生成自己的工件。当然,模型表示为XML,因此您可以随意使用它。