SignalR:生成的代理与动态创建的集线器文件

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

关于我的问题的一些背景:由于执行期间的依赖性问题,我正在努力使用命令行工具创建集线器代理,我认为获取动态生成的文件可能是一种更简单的方法。

正如此ASP.NET页面上所述,关于在SignalR中使用集线器:

生成的代理及其为您做的事情

您可以编写JavaScript客户端以与SignalR服务进行通信,无论是否有SignalR为您生成的代理。 代理为您做的是简化用于连接的代码的语法 ,编写服务器调用的方法,以及调用服务器上的方法。

当您编写代码来调用服务器方法时,生成的代理使您可以使用看起来就像执行本地函数的语法:您可以编写serverMethod(arg1,arg2)而不是invoke(’serverMethod’,arg1,arg2)。 如果您错误地键入服务器方法名称 ,则生成的代理语法还会启用即时且可理解的客户端错误 。 如果手动创建定义代理的文件,您还可以获得IntelliSense支持,以编写调用服务器方法的代码。

长话短说:

如果您输入错误的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); }); 

如果您需要生成一次代理文件而不是在运行时生成代理文件 ,则可以按照此部分进行操作 ,这样您就可以预先生成它(用于缓存或捆绑行为)。