我有一个Asp.Net MVC 5.1网站。我们有3种类型的用户,我想在一种类型的用户之间添加聊天支持。我想到了一些像这样的模型:
public class Conversation
{
public NormalUser A { get; set; }
public NormalUser B { get; set; }
public List<PrivateMessaage> Messages { get; set; }
}
public class PrivateMessaage
{
public NormalUser Sender { get; set; }
public NormalUser Receiver { get; set; }
public string Message { get; set; }
public DateTime Created { get; set; }
}
另外,我在项目的其他部分使用SignalR,并认为这是一个非常好的解决方案,可以在SignalR上添加聊天界面。到目前为止一切看起来都很好。但是,我认为每次输入消息时都会在数据库中插入新消息并不是一个好主意。我已经创建了很多策略来在我的网站中实现自定义甜甜圈缓存,以尽可能快地使每一页都显示出来,似乎这会取消所有这些!这个问题的首选解决方案是什么?我想我可能采取这样的方法:
第一个问题是,可能存在网站崩溃的情况(更新,电源故障,启示录(!)等),内存中的所有消息都将丢失。我可以添加一个自定义动作来刷新所有内容,但它从来都不是很安全。由于那里有很多聊天解决方案,我认为有非常方便的解决方案。