天天看點

一步一步學習SignalR進行實時通信_7_非代理一步一步學習SignalR進行實時通信_7_非代理

目錄

  • 一步一步學習SignalR進行實時通信_7_非代理
    • 前言
    • 代理與非代理
    • 建立連接配接
    • 調用方法
    • 維持狀态
    • 從伺服器接收
    • 結束語
    • 參考文獻

一步一步學習SignalR進行實時通信_7_非代理

标簽(空格分隔): SignalR

前言

距離上次寫部落格已經一個多月了,一直想抽空寫,卻一直沒時間寫。現在緊接着要開始畢業設計了,工作的同時還要抽時間完成畢業設計,心也是有些累。由于自己是個.NET迷,自己的工作也是.net開發,老師給的畢業設計百分之八九十都是安卓java相關,雖然之前也學過但是自己還是喜歡.net開發,今天突發奇想,做個和Singalr相關的畢業設計,将自己的想法以及應用場景和老師提了下,還是得到了肯定,如果确定了,希望能将自己的畢業設計抽時間寫下來能分享給大家。

是以為什麼今天硬是開工繼續寫,也是為了盡快完成這篇文章,脫了太長時間了。

代理與非代理

今天講的内容是非代理,那為什麼不将代理呢?因為之前我們實作的所有功能都是通過代理的方法。那麼代理和非代理的差別是什麼呢?我也不知道

但是,據我了解代理可能會造成額外的帶寬和處理器的開銷,通過代理在安全性也不如非代理,它将操作直接暴露給用戶端。(若有不對,請糾正)

代理的優點:簡化開發。

但是非代理其實也沒有想象中的困難,它隻是用來不同的文法來做與代理相同的事情。

建立連接配接

當不用代理進行連接配接時,我們無需引入/Singalr/hubs或者之前我們做的一些配置,如:

<script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>           
var connection = $.hubConnection("/realtime");
connection.start()
    .done(function () {         
        // Code     
    });           
app.MapSignalR("/realtime", new HubConfiguration())           

這些我們統統不需要!

如果我們不用代理,最好的辦法是禁用它們,我們可以通過以下代碼配置:

public void Configuration(IAppBuilder app) 
{     
    app.MapSignalR(new HubConfiguration()                 
    {                     
        EnableJavaScriptProxies = false                 
    }); 
}           

即使我們不用自動生成的代理類,我們也需要一個對象來調用和接受伺服器的事件。

首先我們通過

createHubProxy

手動建立一個代理

var connection = $.hubConnection(); 
var proxy = connection.createHubProxy("AlertService");           

調用方法

通過

invoke()

執行伺服器的操作

connection.start().done(function () {     
    proxy.invoke("Alert", "I felt a great disturbance in the force"); 
    });           

第一個參數:執行伺服器的alert方法,此參數不區分大小寫

第二個參數:可以是任意類型,該參數會傳遞給伺服器

invoke()

start()

方法一樣可以實作promise模式
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {         
    alert(result);     
})     
.fail(function(err) {         
    alert(err);     
});           

維持狀态

同時我們也可以保持狀态

var proxy = connection.createHubProxy("AlertService");
 proxy.state.MsgId = 1; 
 proxy.state.UserName = "Obi Wan";             

從伺服器接收

我們通過

on()

捕獲

proxy.on("ShowAlert", function(msg) {     alert(msg); });           
第一個參數是伺服器指定調用的方法名,第二個參數是匿名方法将被執行。

結束語

今天簡單介紹一下代理與非代理的差別,下一講将分析一個小例子來掌握。

本文釋出至作業部落

參考文獻

SignalR Programming in Microsoft ASP.NET pdf 下載下傳

目錄

  • 一步一步學習SignalR進行實時通信_7_非代理
    • 前言
    • 代理與非代理
    • 建立連接配接
    • 調用方法
    • 維持狀态
    • 從伺服器接收
    • 結束語
    • 參考文獻

一步一步學習SignalR進行實時通信_7_非代理

标簽(空格分隔): SignalR

前言

距離上次寫部落格已經一個多月了,一直想抽空寫,卻一直沒時間寫。現在緊接着要開始畢業設計了,工作的同時還要抽時間完成畢業設計,心也是有些累。由于自己是個.NET迷,自己的工作也是.net開發,老師給的畢業設計百分之八九十都是安卓java相關,雖然之前也學過但是自己還是喜歡.net開發,今天突發奇想,做個和Singalr相關的畢業設計,将自己的想法以及應用場景和老師提了下,還是得到了肯定,如果确定了,希望能将自己的畢業設計抽時間寫下來能分享給大家。

是以為什麼今天硬是開工繼續寫,也是為了盡快完成這篇文章,脫了太長時間了。

代理與非代理

今天講的内容是非代理,那為什麼不将代理呢?因為之前我們實作的所有功能都是通過代理的方法。那麼代理和非代理的差別是什麼呢?我也不知道

但是,據我了解代理可能會造成額外的帶寬和處理器的開銷,通過代理在安全性也不如非代理,它将操作直接暴露給用戶端。(若有不對,請糾正)

代理的優點:簡化開發。

但是非代理其實也沒有想象中的困難,它隻是用來不同的文法來做與代理相同的事情。

建立連接配接

當不用代理進行連接配接時,我們無需引入/Singalr/hubs或者之前我們做的一些配置,如:

<script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>           
var connection = $.hubConnection("/realtime");
connection.start()
    .done(function () {         
        // Code     
    });           
app.MapSignalR("/realtime", new HubConfiguration())           

這些我們統統不需要!

如果我們不用代理,最好的辦法是禁用它們,我們可以通過以下代碼配置:

public void Configuration(IAppBuilder app) 
{     
    app.MapSignalR(new HubConfiguration()                 
    {                     
        EnableJavaScriptProxies = false                 
    }); 
}           

即使我們不用自動生成的代理類,我們也需要一個對象來調用和接受伺服器的事件。

首先我們通過

createHubProxy

手動建立一個代理

var connection = $.hubConnection(); 
var proxy = connection.createHubProxy("AlertService");           

調用方法

通過

invoke()

執行伺服器的操作

connection.start().done(function () {     
    proxy.invoke("Alert", "I felt a great disturbance in the force"); 
    });           

第一個參數:執行伺服器的alert方法,此參數不區分大小寫

第二個參數:可以是任意類型,該參數會傳遞給伺服器

invoke()

start()

方法一樣可以實作promise模式
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {         
    alert(result);     
})     
.fail(function(err) {         
    alert(err);     
});           

維持狀态

同時我們也可以保持狀态

var proxy = connection.createHubProxy("AlertService");
 proxy.state.MsgId = 1; 
 proxy.state.UserName = "Obi Wan";             

從伺服器接收

我們通過

on()

捕獲

proxy.on("ShowAlert", function(msg) {     alert(msg); });           
第一個參數是伺服器指定調用的方法名,第二個參數是匿名方法将被執行。

結束語

今天簡單介紹一下代理與非代理的差別,下一講将分析一個小例子來掌握。

本文釋出至作業部落

參考文獻

SignalR Programming in Microsoft ASP.NET pdf 下載下傳