2016-10-11 43 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

相關問題