Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# 跨不同IIS服务器并发执行大型请求_C#_Asp.net_Multithreading_Iis - Fatal编程技术网

C# 跨不同IIS服务器并发执行大型请求

C# 跨不同IIS服务器并发执行大型请求,c#,asp.net,multithreading,iis,C#,Asp.net,Multithreading,Iis,我在IIS中有RESTWebAPI服务,它接受一组请求对象。用户可以输入100多个请求对象。我的服务部署在20台IIS服务器上 我想并发运行这个100请求,然后聚合结果并将其发送回。这涉及到为每个请求调用后端服务的I/O操作和计算少量响应元素的CPU绑定操作 当我的控制器收到请求时,我们可以在同一台或不同的机器上的所有20台IIS服务器上拆分和共享请求,以加快处理速度。请建议任何选项我无法提供详细的实现,但您必须执行以下操作 有很多解决方案,我可以建议其中之一 解决方案1 您的一个主应用程序接收

我在IIS中有RESTWebAPI服务,它接受一组请求对象。用户可以输入100多个请求对象。我的服务部署在20台IIS服务器上

我想并发运行这个100请求,然后聚合结果并将其发送回。这涉及到为每个请求调用后端服务的I/O操作和计算少量响应元素的CPU绑定操作


当我的控制器收到请求时,我们可以在同一台或不同的机器上的所有20台IIS服务器上拆分和共享请求,以加快处理速度。请建议任何选项

我无法提供详细的实现,但您必须执行以下操作

有很多解决方案,我可以建议其中之一

解决方案1

您的一个主应用程序接收请求。请求包含100个或更多对象

现在,这个应用程序有关于您的20个其他站点或url的信息。此URL还可以存储在配置文件或XML文件中

您还必须决定每个服务器应该同时处理一个或多个对象。您可以创建这样的配置并将其存储在web.config中

现在根据您的请求创建httpClient来调用RestApi并提供每个数据。确保使用异步模型,以便可以利用异步特性

例如,如果只考虑每个服务器中的一个对象和数组

中的服务器配置服务器URL存储
 int requestCnt = 0;
 foreach(var request in Requests)
 {
  HttpClient client = new HttpClient();
  client.Url = Server[request % 20];
  client.PostAsync()
 } 

注意:这只是一个示例,所以您必须处理详细的实现部分。

您的100个左右的请求对象是否相互依赖,或者是否有任何依赖关系,比如某些请求必须在其他请求之前执行,或者所有请求都是相同的,这样您就不必担心订单。不,它是独立的,我们不必担心订单问题