远程解决方案适合这种场景吗?

本文关键字:解决方案 | 更新日期: 2023-09-27 18:15:33

我需要一个解决方案,其中包含配置信息的对象实例托管在windows服务中,并且许多(最多1000)或更多同时客户端与该对象交互

客户端将在启动时访问该对象,并在客户端执行其目的时周期性地访问该对象。客户端很少更新配置。对配置的更改必须在所有客户端发生时进行通信/反映(没有轮询)。

远程是一个合适的解决方案吗?我希望避免编写一个完整的服务器&客户端系统,处理套接字等

远程解决方案适合这种场景吗?

是的,远程处理是一个合适的解决方案,但是如果你使用的是。net 3.5或更高版本,你可以考虑使用超越远程处理的WCF,并使用netcp绑定。

您可以使用SQL数据库,如SQL Server或MySQL,并添加服务器应用程序的薄层(例如,简单的ASP.net应用程序提供XML/JSON数据)和脚本/应用程序连续查询服务器

WCF和SQL数据库都是值得考虑的解决方案,但我认为您所描述的与远程过程调用(RPC)更密切相关。RPC允许您在服务器上创建单个对象,客户机可以像与本地对象一样与之交互(因此完全避免了处理套接字的需要)。另外,每个客户机还可以创建自己唯一的服务器对象来与之交互。

RPC的完整实现可以在网络库networkcomms.net中找到。以下代码片段取自RPC示例。

服务器端:

//Register a single object server side called "Calculator"
RemoteProcedureCalls.Server.RegisterInstanceForPublicRemoteCall<MathClass, IMath>(new MathClass(), "Calculator");

客户端:

//Get a reference to the remote object named "Calculator"
IMath calc = RemoteProcedureCalls.Client.CreateProxyToPublicNamedInstance<IMath>(connection, "Calculator", out instanceId);
//We can now use the calculator object as if it were local
//The following WriteLine outputs '12' where the calculation was performed on the server
Console.WriteLine(calc.Multiply(4, 3));

免责声明:我是这个库的开发人员。