使用 .NET MVC4 的实用实时应用的最佳做法
Best practice for a practical real-time app with .NET MVC4
大家好,机器人,
我正在为一个系统开发前端 Web 应用程序,遇到了一个小问题。
整个应用程序必须位于一个页面上,这意味着在应用程序的主要区域流动期间不会刷新或页面更改。
它还必须在包括IE7在内的所有Web浏览器中工作,并且可以部署为平板电脑和手机的HTML5应用程序。
它基于用户登录,由网络表单身份验证控制,然后我需要轮询或长轮询服务器以获取更新。如果我可以为系统的每个部分做一个请求,这将很简单,但是如果系统变得太大,会话阻塞就会成为一个问题,它也可能最终会自行 ddoly。因此,我需要做的是想出一种方法来发送一个请求并从该请求构建一个响应。
我的第一个想法是用JSON或XML构建一个响应模型,让JavaScript来调节需要更新的内容。例如,对某个主题发表了新评论,所有客户端几乎都会立即看到此更新。我的想法是发送这样的东西:
[
'd':
{
'addComment' : [{'topicId':'topic1', 'description':'haha'}, {'topicId':'topic1', 'description':'lol'}],
'addTopics' : ['topic2','topic708'],
}
]
然后JavaScript会解析它,并将"haha"和"lol"添加到id为"topic1"的元素中。从理论上讲,这似乎很容易实现,但随着系统变得越来越大,它似乎不断变成一个大混乱。
我的第二个想法是简单地拥有一组客户端函数来添加和删除DOM中的内容,然后使用JSONP技术来调用此函数。
var addComment = function(commentModel)
{
var topic = document.getElementById(commentModel.topicId),
comments = topic.getElementByClassName('comments')[0],
comment = document.createElement('div');
comment.innerHTML = commentModel.description;
comments.appendChild(comment);
updateUnreadComments();
}
响应:
(function(addComment){
addComment({ topicId : 'topic1', description : 'haha' })
addComment({ topicId : 'topic1', description : 'lol' })
})(addComment)
就个人而言,我发现这两种方法都是一种相当烦人的解决方法,只不过是简单的广播。
我想知道是否有其他人曾经遇到过同样的问题,以及他们是否曾经想出过更有创意的解决方案。
我还想知道 JSONP 会遇到什么样的安全问题。
感谢所有帮助!
你可以
看看SignalR。斯科特·汉塞尔曼(Scott Hanselman(也在博客上写了这篇文章。
相关文章:
- 链接两个网页或网络应用程序的最佳方式
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 展示纯js应用程序前端的最佳架构是什么
- 应用程序的最佳目录结构 - 节点 + 道场:这行得通吗?
- 在 Web 应用中处理事件跟踪的最佳(高性能)方法
- 用于组织大型javascript应用程序的工具和最佳实践
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 将配置传递到qoxdoo应用程序的最佳实践
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式
- 在同构的React web应用程序中,选择服务器渲染的最佳方式是什么
- AngularJS组件和cms驱动应用程序的最佳实践
- 在单页应用程序 (SPA) 中处理身份验证的最佳方法
- 让Laravel应用程序同时服务于基于浏览器的应用程序,并充当iPhone和Android应用程序的API的最佳实践是什
- 将复杂内容(想想整个网页树)从一个 Web 应用程序提供给另一个网站的最佳可重用解决方案是什么?
- 是否安全应用是最佳实践
- 在应用程序框架中处理异步 Javascript 代码的最佳实践
- 我的原生脚本应用程序的最佳结构
- 在 Web 应用中识别用户的最佳方式
- 缩小Javascript代码和css代码的最佳应用程序