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对象保存在内存中,因此每当访问此类时,它都会跟踪SoloUser添加到soloUsers存储库中的对象。我还没有完全建立我的SoloUserRepository班级,所以我想知道处理这个问题的最佳方法。从这个意义上说,我是否必须使用数据库来维护SoloUser添加到集合中的内容,或者有没有办法将此集合存储在内存中?请记住,不断添加和删除用户。

4

1 回答 1

0

我会说收藏品的大小无关紧要。这取决于其他因素,例如:

  1. 如果您的进程关闭,您是否需要继续收集?如果不是 - 内存会正常;如果您只丢失一些数据是可以的 - 不时将内存与持久存储同步;否则 - 使用(不一定是数据库)存储。

  2. 有多少线程将访问您的收藏?这是 web/cs 应用程序的一些后端,对吧?如果是这样 - 那么您将需要一些锁和事件来同步访问。关系数据库通常可以为您处理这些。

  3. 如果您确定,该集合将保持较小 - 内存将没问题。如果它长大了会发生什么?将部分进程移动到其他服务器或将持久存储移动到其他服务器会更容易吗?你的例行程序会保持足够快吗?

于 2012-07-23T07:20:04.043 回答