我通过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个用户,则数组长度将太长。工作非常困难(阅读已有的信息并附加新信息)。它也使服务器运行缓慢。
有什么想法吗?
答案 0 :(得分:1)
一个选项可能是将内存缓存中的通知保存到某个级别,然后将它们批量保存到数据库中。