【发布时间】:2011-05-04 19:38:42
【问题描述】:
我的应用是 Web App Chat Room,它支持以下功能:
1.创建/加入/关闭房间
2.在房间内发送消息(只是实时消息,未来可能支持离线消息)
我已经完成了应用程序的逻辑,但我正在考虑将聊天室数据(消息、房间信息和房间内的用户)保存在哪里?我看到有 2 个选项:
1.应用程序变量
2。使用文件或数据库
-如果我保存在应用程序变量中会怎样:
如果有 2000 个房间和 10000 个用户在线,意味着我必须持久化 2000 个房间的应用程序变量(实际上在 RAM 内存中)信息,超过 10000 条消息(文本),如果有更多,这些数字可能会增加秒用户实时在线。下一步是什么?我不知道服务器会发生什么,崩溃?或者我的网络应用程序将被终止?不管我不想要两个结果!
-如果我保存在文件或 DB(即:SQL Server DB)中会怎样
由于 Web 应用程序,客户端必须每 1 秒发送一次请求以获取数据(房间中的消息和用户列表)。因此,如果有 2000 个房间和 10000 个在线用户,则意味着他们每 1 秒将向 DB 发出 10000 个请求。我不知道 DB 会发生什么,有很多连接,并且在每 1 秒内,DB 是否还活着来服务请求?
我不知道现在储蓄在哪里好,因为两者似乎都是不好的解决方案:(。你的意见是什么?请给我一些想法?非常感谢!
【问题讨论】:
-
"由于 web 应用,客户端必须每 1 秒发送一次请求" 这是为什么?这是你的第一个问题。您应该使用 BOSH 或 Comet 之类的东西。另外,您是否有充分的理由不使用现成的 XMPP 服务器?
-
我的网站是 Asp.net MVC 应用程序,似乎它只在 IIS 服务器上运行。我以前从未听说过 BOSH 或 Comet 或 XMPP 服务器,它与 IIS 一起运行还是可以替换 IIS 来托管我的 asp 网络聊天?你能告诉我更多关于他们的信息吗?
-
当然,XMPP 是一种用于实现聊天的开放协议(曾经称为“Jabber”)。有许多 XMPP 服务器可以完成实现协议的所有工作。 BOSH 和 Comet 是利用 Ajax 促进双向 HTTP 流的 Javascript 技术(HTTP 是请求/响应,而普通的套接字编程寿命很长,并且允许重复来回通信——非常适合聊天)。对于 Javascript 端,我推荐 blog.jwchat.org/jsjac 对于服务器端,请参阅 en.wikipedia.org/wiki/Comparison_of_XMPP_server_software
-
哦,真是有用的资源!您是否曾经使用 XMPP 服务器和 Ajax 客户端库开发过用于回调 XMPP 服务器的 Asp.net MVC Web 应用程序?我没有那么多预算购买像 lightstreamer 服务器这样的服务器,我的 asp.net web 应用程序需要提供超过 10000 个连接,你有什么建议可以与 asp.net 集成的免费 XMPP 服务器mvc web 应用程序,可以提供这些连接的数量?
标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-ajax