我应该在数据库或json文件中保存用户通知吗?

时间:2016-04-18 09:15:57

标签: c# asp.net-mvc asp.net-mvc-5

我通过SignalR设计像Facebook notification这样的控件。但我有一个问题:当用户收到新通知时,我应该在哪里保存它?

以下是我的建议:

1 /。保存到数据库。

[Table("Notifications")]
public class Notification
{
    [Key]
    public string Id { get; set; }
    public string UserId { get; set; }
    public string Message { get; set; }
    public bool IsRead { get; set; }
    public DateTime DateTime { get; set; }
}

此解决方案的问题是:如果我的网站有超过200个用户,并且所有用户同时有10个新通知,则控制器将至少达到数据库2000次。那太糟糕了。

2 /。保存到json文件:

[
    {
        UserId_1:
            NotiId: "",
            Message: "",
            IsRead: false,
            DateTime: ...
    },
    {
        UserId_2:
            NotiId: "",
            Message: "",
            IsRead: false,
            DateTime: ...
    }
]

此解决方案的问题是:如果我的服务器有超过200个用户,则数组长度将太长。工作非常困难(阅读已有的信息并附加新信息)。它也使服务器运行缓慢。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

一个选项可能是将内存缓存中的通知保存到某个级别,然后将它们批量保存到数据库中。