1

構成情報を含むオブジェクトのインスタンスが Windows サービスでホストされ、多数 (最大 1000) 以上の同時クライアントがこのオブジェクトと対話するソリューションが必要です。

クライアントは、起動時にオブジェクトにアクセスし、クライアントがその目的を実行する操作中に定期的にアクセスします。クライアントが構成を更新することはめったにありません。構成への変更は、発生時にすべてのクライアントに伝達/反映する必要があります (ポーリングなし)。

リモート処理はこれに適したソリューションですか? 完全なサーバーとクライアントのシステムを作成したり、ソケットを扱ったりすることは避けたいと思っていました。

4

3 に答える 3

-1

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));

免責事項: 私はこのライブラリの開発者です。

于 2013-05-27T10:14:40.143 に答える