如何实现应用程序集成的OData联合

时间:2014-02-03 05:43:32

标签: odata wcf-data-services

我必须将各种遗留应用程序与一些新引入的部分集成在一起,这些部分是信息孤岛,并且在不同时间使用不同的体系结构构建。有时这些应用程序可能需要从其他系统获取数据(如果存在),并根据业务需求在自己的屏幕中将其显示给用户。

我一直在寻找是否有可能实现一种通用的联合引擎,它可以抽象出来自各种其他OData端点的数据聚合,并且只有一个版本的真值。

一个简单的例子如下。

Data Federation using OData

我不是真的想在这里做ETL,因为这可能会在陈旧性等方面引入一些与数据相关的副作用。

有些人可以就如何实现这一点分享一些想法,或者指出网上显示这种概念的任何文章。

此致 基兰

1 个答案:

答案 0 :(得分:0)

官方说,答案是使用反射提供程序或自定义提供程序。

要在两种方法之间做出决定,请查看this article

如果您决定需要构建自定义提供程序,则引用的文章还包含指向一系列其他文章的链接,这些文章将帮助您完成学习过程。

您的项目似乎并非琐碎,因此我建议您查看其他资源,例如WCF Data Services Toolkit,以帮助您。

顺便说一下,从架构的角度来看,我相信你的想法是合理的。是的,您可能在OData端点后面有一些域逻辑,但我一直认为这个逻辑应该很薄,因为OData主要用作数据访问层的一部分,就像SQL一样(而不是服务层,它封装了更多的行为。传统意义)。即使这种瘦逻辑要求您的聚合器变得有点聪明,但您可能总是能够使用自定义提供程序来摆脱它。

话虽如此,如果聚合器本身封装了很多行为(而不是简单地聚合和重新暴露原始数据),您应该考虑使用另一种不太面向数据的协议(但继续使用OData后端)那个服务)。由于域逻辑通常非常具体,因此很少有一种适合所有类型的协议,因此您自然必须自己设计。

但是,如果聚合数据主要是按原样公开或基本上是结构性更改(除了组装原始数据之外很少甚至没有行为),我认为再次使用OData作为中心组件是非常合适的。

显然,正如你在问题的评论中所看到的那样,并非所有人都会同意所有这一切 - 所以一如既往地把它当作一粒盐。