是否为此方案提供了合适的解决方案?

时间:2013-05-26 23:28:37

标签: c# client-server remoting

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

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

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

3 个答案:

答案 0 :(得分:1)

是的,远程处理是一种合适的解决方案,但是如果您使用的是.NET 3.5或更高版本,则可以考虑使用超过远程处理的WCF,并使用nettcp绑定。

答案 1 :(得分:0)

您可以将SQL数据库用于此类用途,例如SQL Server或MySQL,并添加服务器应用程序的薄层(例如,提供XML / JSON数据的简单ASP.net应用程序)和脚本/应用程序不断查询服务器。

答案 2 :(得分:-1)

WCF和SQL数据库都是值得考虑的解决方案,但是你所描述的恕我直言与remote procedure calling(RPC)关系更密切。 RPC允许您在服务器上创建单个对象,客户端可以像对象一样进行交互(因此完全避免需要处理套接字)。或者,每个客户端也可以创建自己唯一的服务器对象进行交互。

可以在网络库networkcomms.net中找到RPC的完整实现。以下代码片段来自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));

免责声明:我是这个图书馆的开发人员。