use*_*953 4 asp.net-mvc signalr
在使用asp .net MVC编写的基于javascript的数据驱动应用程序中使用Signalr作为通信方法有哪些优点和缺点?
谢谢,
当然,除非您需要它提供的功能,否则不应使用SignalR,也就是说,一个专注于JavaScript客户端的简单双工Web服务层.如果你是全新的,以ASP.NET,这可能不是你会需要马上 - 你已经得到了很多其他的东西去学习,然后才能避开编写复杂的,数据驱动的JavaScript应用程序.如果您只是在使用.NET客户端,请坚持使用WCF:它更灵活,其静态类型更适合C#和VB.NET.
这就是说,当你这样做需要一个基于.NET的Web服务后台的JavaScript应用程序,SignalR是一个相当不错的选择.配置肯定比Windows Communication Foundation更简单,对于JavaScript应用程序,它具有更好的功能集.它似乎是由微软赞助的(他们允许它坐在Microsoft.AspNet命名空间中),负责它的人似乎很聪明,也很努力(如果有时候有点麻烦).我曾在午夜报告过一个错误,在15分钟内得到了回复,并且在我早上起床时得到了修复.当然,它是开源的,并且他们愿意考虑拉取请求,所以如果你需要修复某些东西,那么你将获得比微软以前的闭源模型更好的运气.
唯一真正的缺点是,它是很新的 - 它最近达到1.0 RC1的状态 - 并因此缺少一些功能,这将是不错的,仍然有一些错误(这些最终会得到修复,当然).
这是一个如何仍然有点新的例子.你几乎肯定会遇到,如果你想序列化复杂的对象图的一个问题是,它使用Json.NET的专用格式的对象引用,所以你最终获得了很多的JSON的,看起来像这样:
{
"$id": "57",
"Name": "_default",
"User": {
"$id": "58",
"UserTag": "ken",
"Sessions": [{
"$id": "59",
"SessionId": "0ca7474e-273c-4eb2-a0c1-1eba2f1a711c",
"User": {
"$ref": "58"
},
"Room": {
"$ref": "57"
}
}],
},
"Sessions": [{
"$ref": "59"
}]
}
Run Code Online (Sandbox Code Playgroud)
这是不是非常有帮助读取Session[]阵列,并且发现在它的唯一对象不是Session所有,但单一的任意对象$ref属性.为了解决这个问题,你需要包装的东西,如所有SignalR通话JsonNetDecycle.并不难,但在SignalR本身处理的事情会很好.(当然,如果我是一个更好的人,我会自己编写代码并将其作为拉取请求提交 - 但还没有解决它.)
| 归档时间: |
|
| 查看次数: |
7225 次 |
| 最近记录: |