我必须将各种遗留应用程序与一些新引入的部分集成在一起,这些部分是信息孤岛,并且在不同时间使用不同的体系结构构建。有时这些应用程序可能需要从其他系统获取数据(如果存在),并根据业务需求在自己的屏幕中将其显示给用户。
我一直在寻找是否有可能实现一种通用的联合引擎,它可以抽象出来自各种其他OData端点的数据聚合,并且只有一个版本的真值。
一个简单的例子如下。
我不是真的想在这里做ETL,因为这可能会在陈旧性等方面引入一些与数据相关的副作用。
有些人可以就如何实现这一点分享一些想法,或者指出网上显示这种概念的任何文章。
此致 基兰
答案 0 :(得分:0)
官方说,答案是使用反射提供程序或自定义提供程序。
要在两种方法之间做出决定,请查看this article。
如果您决定需要构建自定义提供程序,则引用的文章还包含指向一系列其他文章的链接,这些文章将帮助您完成学习过程。
您的项目似乎并非琐碎,因此我建议您查看其他资源,例如WCF Data Services Toolkit,以帮助您。
顺便说一下,从架构的角度来看,我相信你的想法是合理的。是的,您可能在OData端点后面有一些域逻辑,但我一直认为这个逻辑应该很薄,因为OData主要用作数据访问层的一部分,就像SQL一样(而不是服务层,它封装了更多的行为。传统意义)。即使这种瘦逻辑要求您的聚合器变得有点聪明,但您可能总是能够使用自定义提供程序来摆脱它。
话虽如此,如果聚合器本身封装了很多行为(而不是简单地聚合和重新暴露原始数据),您应该考虑使用另一种不太面向数据的协议(但继续使用OData后端)那个服务)。由于域逻辑通常非常具体,因此很少有一种适合所有类型的协议,因此您自然必须自己设计。
但是,如果聚合数据主要是按原样公开或基本上是结构性更改(除了组装原始数据之外很少甚至没有行为),我认为再次使用OData作为中心组件是非常合适的。
显然,正如你在问题的评论中所看到的那样,并非所有人都会同意所有这一切 - 所以一如既往地把它当作一粒盐。