2016-10-11 39 views
1

SignalR集线器代理生成器的输出与动态生成的集线器代理文件基本相同吗?如果不是,有什么区别?SignalR:生成的代理与动态创建的集线器文件

对我的问题的一些背景:我在执行过程中努力创建使用命令行工具枢纽代理由于依赖问题,我也想获得动态生成的文件可能是一个更简单的方法。

回答

4

如前所述on this ASP.NET page有关使用集线器与SignalR:

生成的代理和它做什么你

您可以编写一个JavaScript客户端使用或不使用代理与SignalR 服务进行通信SignalR为您生成。 代理为您做了什么简化了您用于连接的代码的语法,服务器调用的写入方法以及 服务器上的调用方法。

当你编写代码来调用服务器方法,生成的代理 使您可以使用语法看起来就好象正在执行 局部功能:你可以写serverMethod(ARG1,ARG2),而不是 的invoke('serverMethod ',arg1,arg2)。生成的代理语法也 能够立即和理解客户端的错误,如果你敲错 服务器方法名。如果您手动创建定义 代理的文件,则还可以获得IntelliSense支持,以编写调用服务器方法的代码 。

为了使长话短说:

这使你的生活更容易与真正的JS错误,如果输错SignalR集线器或方法名。

随着代理:

var contosoChatHubProxy = $.connection.contosoChatHub; 
contosoChatHubProxy.client.addContosoChatMessageToPage = function (name, message) { 
    console.log(name + ' ' + message); 
}; 

没有代理:

var connection = $.hubConnection(); 
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub'); 
contosoChatHubProxy.on('addContosoChatMessageToPage', function(name, message) { 
    console.log(name + ' ' + message); 
}); 

如果需要生成代理文件一次,而在运行时生成它,你可以按照this section ,它允许您事先生成它(用于缓存或捆绑行为)。

+0

在您的参考文献中有一个名为*“如何为SignalR生成的代理创建物理文件”的部分*。我的问题正好针对这个过程的物理输出(例如,我可以在我的硬盘上物理访问生成的JavaScript文件):这与通过''? – 0xDECAFBAD

+0

是的,确切地说;更新了我的答案以反映问题需求。 – bsoulier

相关问题