Winapi 在客户端通知样式和服务器资源中使用异步rpc

Winapi 在客户端通知样式和服务器资源中使用异步rpc,winapi,asynchronous,rpc,msrpc,Winapi,Asynchronous,Rpc,Msrpc,到目前为止,我们有一个RPC客户机-服务器产品专门使用同步RPC:客户机以上下文句柄的形式在服务器上保持状态,并定期对服务器进行同步调用并检索新数据。我们的服务器可以很好地与成千上万的客户端通过这种方式连接 现在,我们想反转此模型,以满足需要立即通知新数据的特定客户的需求。我想客户机对服务器进行异步rpc调用,服务器保持“驻车”,直到它拥有驻车客户机的数据,然后完成异步rpc。这将通知客户机它现在已经更新了数据,现在可以使用它以前使用的同步调用以无序方式检索这些数据 但是,我没有数据表明,如果r

到目前为止,我们有一个RPC客户机-服务器产品专门使用同步RPC:客户机以上下文句柄的形式在服务器上保持状态,并定期对服务器进行同步调用并检索新数据。我们的服务器可以很好地与成千上万的客户端通过这种方式连接

现在,我们想反转此模型,以满足需要立即通知新数据的特定客户的需求。我想客户机对服务器进行异步rpc调用,服务器保持“驻车”,直到它拥有驻车客户机的数据,然后完成异步rpc。这将通知客户机它现在已经更新了数据,现在可以使用它以前使用的同步调用以无序方式检索这些数据

但是,我没有数据表明,如果rpc服务器有数千个未完成的“停驻”客户端调用,而这些调用可能在几天、几周或几个月内都无法完成,rpc服务器将如何运行。我已经在msdn中读到关于命名管道上的异步rpc的部分,这应该避免。但我仍然有一个困扰的问题:一个合理编写的rpc服务器(使用ncacn_ip_tcp作为传输序列)可以处理多少个客户端,每个客户端上都有一个驻留的异步调用。这会极大地消耗服务器上的资源吗?或者并发放置的异步调用的数量是否存在已知的实际上限

我想要的是一个适合异步rpc的用例,还是我用这种方式扭曲了异步rpc模型

蒂亚

--
Stefan

也许我应该提到,这是一个关于Windows上MSRPC的问题,以防从使用的标记中看不清楚。客户端可以在不通知服务器的情况下退出(comp随机关闭或internet中断)-但服务器仍将保留此客户端的句柄(如果不是为每个客户机执行定期ping,但这会将您返回到第一个模型)。然后,一次连接的客户端数量会更多,比较客户端在很短的时间内连接时,询问一些数据并断开连接。当然,每次连接都会占用服务器上一定数量的内核和用户内存。不确定,但认为这不是很好的想法。一开始,您将遇到“僵尸”问题客户。在第二秒-让你有
N
在线客户。所以你每次都会有
N
连接。如果每个客户都有
T
时间
T
打一个短电话,需要时间
T
-每次都会有
N*T/code>连接。当
T/code>通常可以说~
1/1000
(假设t=1秒,t=20min)。当服务器上的数据更新时-需要立即呼叫
N
客户端通知它。假设
N==10000
-您立即发送10000个数据包?您有数千个客户端吗?或者您只期望有限数量的客户端发出数千个请求?@RbMm我不必担心任何问题“僵尸客户端”是因为,正如我所写的,我正在使用上下文句柄,rpc运行时为丢失的客户端提供服务,在这种情况下,它将为服务器上的客户端调用运行例程,rpc运行时免费为我做轮询。