Application对象与MSSQL DB的性能

时间:2014-03-04 18:13:11

标签: sql sql-server vb.net performance chat

我目前正在使用vb.net开发聊天应用程序,我当前的设计使用了一个Application对象,当用户发送消息时,它们被附加到应用程序对象,并且在检索消息时,它们只是从他们离开的地方读取离开对象。我能想到的唯一选择是拥有一个MSSQL表,其中消息将被插入和读取,使用一个键来知道用户上次读取的位置。这些实现中的每一个的优缺点是什么,是否有一种我更容易理解的方法?

据我所知,应用程序对象的优点是速度,因为每次进行读取或写入时都不需要打开连接,并且在读取对象时不需要锁定。缺点是应用程序对象变得非常大并占用太多内存,如果应用程序池出现故障,聊天将随对象丢失。

MSSQL表的优点是数据持久性和结构化存储和检索。缺点是每次都要打开一个连接,当多人尝试一次发送消息时,我认为这会导致性能问题和冲突。

到目前为止,聊天中有400位用户,我预计它会达到数千人,所以在不久的将来,性能肯定会受到关注。

1 个答案:

答案 0 :(得分:2)

嗯,使用Application对象也有一个很大的缺点。如果部署到webfarm,它将无法工作,因为该对象不是跨服务器共享的。

如果这些是你唯一的两个选择,那么出于可扩展性原因,我肯定会使用数据库。

但是,您可能想要研究的另一种方法,特别是如果此聊天应用程序嵌入在Web应用程序中,则使用SignalR,它基本上是为这种情况而构建的。

以下是如何使用SignalR创建简单聊天应用程序的教程: http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20