2011-03-18 131 views
0

从架构上讲,您如何整合来自多个OData/WCF服务的数据而不牺牲性能?我在服务上暴露了一个EF上下文,并希望在要查询的对象中具有灵活性。管理多个OData/WCF服务

假设用户启动一个查询,要求联系分布在全球各地的独立服务器上运行的多个单独的OData服务。随着x的增加,我认为接收结果所花费的时间也会增加。

有谁知道如何通过缓存或临时中央数据库等提高性能?

目前,我正在按照计划间隔联系所有OData服务,并针对此中央数据库启动查询,从而将数据整合到一个SQL数据库中。如果可能,我正在寻找更好,更轻量级的解决方案。

在此先感谢。

回答

1

是否可以公开一种特定于查询类型的分层Web服务运行?不知道你是否在这里谈论一个应用程序。

为了减少延迟时间,您可以异步地请求来自这些不同服务的数据(以便可以同时执行多个呼叫)。这将有助于解决您对增加的服务数量的担忧。为了避免客户端的代码复杂性,请使用这个新的分层服务。

如果性能成为问题,请删除此分层服务,但保留对客户端服务的并发调用。

如果由于在服务或其他服务之间发送了逻辑数据链而无法同时执行这些操作,那么恐怕有很多可以帮助您将它们合并 - 除了自己更改这些服务或执行你建议 - 自己收集和缓存数据。

更新:只是为了澄清,是的,它只是另一种服务,为所有分离的服务对你说话,你的客户端/应用程序将简单地使用这一服务。服务本身可以根据您的要求封装并发呼叫和结果缓存。因为它是为了报告,如果数据的年龄或稍微过时的可能性不是问题,或者数据本质上基本上是静态的,我会同意大块数据的缓存想法。

+0

通过分层服务,你意味着基本上是一个单一的服务,充当多个网关,对吗?这将工作。我可以异步查询小批量的数据,然后对于大批量可能异步建立缓存在页面加载提前,然后查询该缓存?它将成为一个查询/报告生成的asp.net网站。 – 2011-03-18 22:34:45