0

私は次のクラスを持っています:

public class MatchMaker : Hub
    {

        private readonly ISoloUserRepository soloUsers;
        public MatchMaker(ISoloUserRepository userRepo)
        {
            this.soloUsers = userRepo;
        }
         //Client Requests
        public void findNewPartner(string Name, string Country)
        {

            SoloUser soloUser = soloUsers.Users.FirstOrDefault(s => (s.Name == Name) && (s.Country == Major));
            if (soloUsers.Users.Count > 0){
                Clients.partnerRequestResult(soloUsers.Users.FirstOrDefault());
                soloUsers.Users.Remove(soloUser);
            }
            else
            {
                soloUser = new SoloUser { 
                    Name = Name,
                    Country = Country                       
                };
                soloUsers.Users.Add(soloUser);
            }



        }
    }

オブジェクトをメモリに保持できるようにしたいので、このクラスにアクセスするたびに、リポジトリに追加されsoloUsersたオブジェクトを追跡します。私は自分のクラスを完全に構築していないので、これを処理する最良の方法を知りたいと思っていました. コレクションへの追加を維持するために、この意味でデータベースを使用する必要がありますか、またはこのコレクションをメモリに保存する方法はありますか? ユーザーは常に追加および削除されていることに注意してください。SoloUsersoloUsersSoloUserRepositorySoloUser

4

1 に答える 1

0

コレクションが大きいか小さいかは関係ありません。次のような他の要因によって異なります。

  1. プロセスがシャットダウンした場合にコレクションを永続化する必要がありますか?そうでない場合-メモリはOKです。一部のデータのみを失っても問題がない場合は、メモリを永続ストレージと時々同期します。それ以外の場合-(必ずしもデータベースではない)ストレージを使用します。

  2. コレクションにアクセスするスレッドはいくつですか?これはweb/csアプリケーションのバックエンドですよね?その場合、アクセスを同期するためにいくつかのロックとイベントが必要になります。リレーショナルデータベースは通常、これらを処理できます。

  3. 確かな場合、そのコレクションは小さいままです-メモリはOKです。それが大きくなるとどうなりますか?プロセスの一部を他のサーバーに移動したり、永続ストレージを他のサーバーに移動したりする方が簡単でしょうか?あなたのルーチンは十分に速いままですか?

于 2012-07-23T07:20:04.043 に答える