Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.NET MVC4的实用实时应用程序的最佳实践_Javascript_Ajax_Asp.net Mvc_Jsonp_Real Time - Fatal编程技术网

Javascript 使用.NET MVC4的实用实时应用程序的最佳实践

Javascript 使用.NET MVC4的实用实时应用程序的最佳实践,javascript,ajax,asp.net-mvc,jsonp,real-time,Javascript,Ajax,Asp.net Mvc,Jsonp,Real Time,大家好,机器人们 我正在为一个系统开发前端web应用程序,遇到了一个小问题 整个应用程序必须在一个页面上,这意味着在应用程序的主要区域流动期间不会刷新或更改页面 它还必须在包括IE7在内的所有网络浏览器中工作,并且能够作为HTML5应用程序部署到平板电脑和手机上 它基于用户登录,这是由webforms身份验证管理的,然后我需要轮询或长轮询服务器以获取更新。如果我可以为系统的每个部分都做一个请求,这将很简单,但是如果系统变得太大,会话阻塞将成为一个问题,并且它也可能会自行终止DDoS。所以我需要做

大家好,机器人们

我正在为一个系统开发前端web应用程序,遇到了一个小问题

整个应用程序必须在一个页面上,这意味着在应用程序的主要区域流动期间不会刷新或更改页面

它还必须在包括IE7在内的所有网络浏览器中工作,并且能够作为HTML5应用程序部署到平板电脑和手机上

它基于用户登录,这是由webforms身份验证管理的,然后我需要轮询或长轮询服务器以获取更新。如果我可以为系统的每个部分都做一个请求,这将很简单,但是如果系统变得太大,会话阻塞将成为一个问题,并且它也可能会自行终止DDoS。所以我需要做的是想出一种方法来发送一个请求并根据该请求构建一个响应

我的第一个想法是用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会带来什么样的安全问题

感谢您的帮助

你可以看一看。斯科特·汉斯曼也谈到了这件事