Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接来自单独API的结果';在一起_C#_Asp.net_Asp.net Mvc_Linq_Search - Fatal编程技术网

C# 连接来自单独API的结果';在一起

C# 连接来自单独API的结果';在一起,c#,asp.net,asp.net-mvc,linq,search,C#,Asp.net,Asp.net Mvc,Linq,Search,我有两个独立的系统-文档管理系统和sharepoint搜索服务器 这两个系统都有一个api,我可以使用它来搜索其中的数据。t两个系统中可能存在相同的数据,因此我们对这两个系统都进行了大量搜索 同时搜索两个api并将结果合并在一起的最有效方法是什么(速度非常重要) 以下想法是坏/好/慢/快: 用户输入搜索词 每个系统的api在它自己的线程上被调用 每个api的结果都放在同一类型的公共IEnumerable类中 当两个线程都已执行时,将使用linq将2个IEnumerable结果对象连接在一起 结果

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

这两个系统都有一个api,我可以使用它来搜索其中的数据。t两个系统中可能存在相同的数据,因此我们对这两个系统都进行了大量搜索

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

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

  • 用户输入搜索词
  • 每个系统的api在它自己的线程上被调用
  • 每个api的结果都放在同一类型的公共IEnumerable类中
  • 当两个线程都已执行时,将使用linq将2个IEnumerable结果对象连接在一起
  • 结果将传递给视图

  • 应用程序是ASP.NET MVC#。

    您的解决方案看起来不错-您正在使用适配器模式将两个不同的结果提要转换为所需的格式,并且总体设计是外观模式。从设计的角度来看,您的解决方案是有效的


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

    我看不出您这样做有任何错误。您的算法可能需要很长时间才能产生完美的结果,但您需要取得平衡。任何优化都必须在搜索算法(或者更确切地说是文档索引)中进行。您仍然需要通过限制线程执行的持续时间来折衷多少次点击对用户来说足够好