gpt4 book ai didi

c# - 异步远程调用

转载 作者:太空狗 更新时间:2023-10-29 18:00:16 27 4
gpt4 key购买 nike

我们有一个远程单例服务器在单独的 Windows 服务中运行(我们称她为 RemotingService)。 RemotingService 的客户端是 ASP.NET 实例(很多很多)。

目前,客户端远程调用 RemotingService 并在为 RemotingService 调用提供服务时阻塞。然而,远程服务变得非常复杂(具有更多的 RPC 调用和复杂的算法),以至于 asp.net 工作线程被阻塞了相当长的时间(4-5 秒)。

根据 this msdn article ,这样做不会很好地扩展,因为每个远程 RPC 都会阻塞一个 asp.net 工作线程。它建议切换到异步处理程序以释放 asp.net 工作线程。

The purpose of an asynchronous handler is to free up an ASP.NET thread pool thread to service additional requests while the handler is processing the original request.

这看起来不错,除了远程调用仍然占用线程池中的一个线程。这是与 asp.net 工作线程相同的线程池吗?

我应该如何将远程单例服务器转变为异步系统,以便释放我的 asp.net 工作线程?

我可能遗漏了一些重要信息,如果您还需要知道什么来回答这个问题,请告诉我。

最佳答案

使用 ThreadPool 背后的想法是,通过它您可以控制同步线程的数量,如果同步线程太多,则线程池会自动管理更新线程的等待。

Asp.Net 工作线程 (AFAIK) 不是来自线程池,不应受到您对远程服务的调用的影响(除非这是一个非常慢的处理器,并且您的远程功能非常占用 CPU - 在这种情况下,您计算机上的所有内容都会受到影响)。

您始终可以在不同的物理服务器上托管远程服务。在这种情况下,您的 asp.net 工作线程将完全独立于您的远程调用(如果远程调用是在单独的线程上调用的)。

关于c# - 异步远程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com