1

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

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

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

4

3 回答 3

1

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

于 2013-05-27T00:34:49.830 回答
0

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

于 2013-05-26T23:45:59.470 回答
-1

WCF 和 SQL 数据库都是值得考虑的解决方案,但恕我直言,您所描述的与远程过程调用(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));

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

于 2013-05-27T10:14:40.143 回答