将单独的API的结果连接在一起

时间:2009-07-29 10:38:08

标签: c# asp.net asp.net-mvc linq search

我有两个独立的系统 - 文档管理系统和sharepoint搜索服务器。

两个系统都有一个api,我可以使用它来搜索其中的数据。两个系统中可能存在相同的数据,因此我们都搜索两者。

同时搜索两个api并将结果合并在一起的最有效方法(速度非常重要)是什么。

以下想法是坏/好/慢/快:

  1. 用户输入搜索字词
  2. 每个系统的api都在它自己的线程上调用
  3. 每个api的结果都放在一个相同类型的通用IEnumerable类
  4. 当两个线程都执行了linq时,用于将2个IEnumerable结果对象连接在一起
  5. 结果传递给视图
  6. 该应用程序是ASP.NET MVC C#。

2 个答案:

答案 0 :(得分:1)

您的解决方案看起来没问题 - 您正在使用适配器模式将两种不同的结果Feed转换为您所需的格式,整体设计是一种外观模式。从设计的角度来看,您的解决方案是有效的。

如果您想让事情变得更好,您可以在结果到达时立即显示结果并显示结果仍在加载的通知,直到所有API都返回值。如果您的文档管理系统明显比sharepoint更快或更慢,它将以这种方式更快地为用户提供信息。

答案 1 :(得分:0)

我没有看到你做这件事的方式有什么不妥。您的算法可能会永远产生完美的结果,但您需要取得平衡。任何优化都必须在搜索算法中完成(或者更确切地说是文档索引)。您仍然必须通过限制线程执行的持续时间来妥协,以确保对用户有多少匹配。