我的需求是這樣,我寫了個asmx檔案供別人來調,別人調完后會把相關資料傳給我,asmx拿到這個資料以后,我想再發給我自己的web應用,讓我的web應用可以以訊息彈屏的樣式彈出來,把asmx拿到的資料在彈屏上一并展現出來,我的asmx和web應用在同一個專案里面,請問這種需求怎么解決,有哪些實作方式。
uj5u.com熱心網友回復:
最簡單的做法就是ashx一直輪訓不過比較耗資源,推薦使用SignalR吧uj5u.com熱心網友回復:
那是不是asmx接收到資料后,我直接在asmx里面給web應用的aspx頁面發個請求然后在aspx里面接收再彈屏?這種方式是否可行,這樣不用輪詢,也就是asmx一旦被呼叫后就給aspx發過去
uj5u.com熱心網友回復:
就這個把,雖然手段很多,不過我們就不給你多寫了,免得你得選擇困難癥
至于你說這個嘛,我們問一句,服務器請求了給誰看,給網站管理員看么?
uj5u.com熱心網友回復:
場景是這樣的,第三方調我寫的asmx時候,會把客戶資料發過來,我的asmx拿到資料以后,我想把資料再推給我的web頁面,web頁面以訊息彈屏的方式彈出來,只要登錄了web頁面的人或者我指定某些登錄web頁面的人進行彈屏,不管他在web網站的任何頁面都會彈屏提醒,目前asmx檔案和我的web網站是在一個專案里面的,需求就是這樣的。uj5u.com熱心網友回復:
場景是這樣的,第三方調我寫的asmx時候,會把客戶資料發過來,我的asmx拿到資料以后,我想把資料再推給我的web頁面,web頁面以訊息彈屏的方式彈出來,只要登錄了web頁面的人或者我指定某些登錄web頁面的人進行彈屏,不管他在web網站的任何頁面都會彈屏提醒,目前asmx檔案和我的web網站是在一個專案里面的,需求就是這樣的。
沒問題,就SignalR好了,這已經是第3遍了。你就是在重復幾遍,我們依舊這么回答。(雖然也有其他選擇,不過我們說就不給其他的了,唯一選擇,免得你來回折騰)
uj5u.com熱心網友回復:
這也就是你,換成java的,或者公司有正規前端的,我們會選擇websocket,雖然SignalR也基于websocket,不過對于正規前端,正規安卓java,他們更喜歡直接用原始的websocket,那是標準庫,標準代碼,不需要他們額外學習uj5u.com熱心網友回復:
對于你,反正用SignalR你要學,用websocket你也要學不過SignalR給net準備好了完整demo,你直接用就好,所以我們直接給你SignalR了
uj5u.com熱心網友回復:
我的意思,如果不用signalr,就是asmx拿到資料以后,在asmx里面直接給web網站的類似default.aspx頁面請求把資料扔過去,然后在default.aspx頁面里面接收資料并且彈屏提醒,這樣是否可行uj5u.com熱心網友回復:
我的意思,如果不用signalr,就是asmx拿到資料以后,在asmx里面直接給web網站的類似default.aspx頁面請求把資料扔過去,然后在default.aspx頁面里面接收資料并且彈屏提醒,這樣是否可行
不行,你自己想把,要行。人家廢那個精力寫啥SignalR給你啊。能這樣做了,就沒有這個需求了,你也不會那么做,人家也不會還在瀏覽器你給提供websocket(別認為websocket天生就在,正式因為你這種需求多了,瀏覽器才花了好幾個版本,無數日夜和人工,才把websocket嵌進去的)
uj5u.com熱心網友回復:
大神告訴我不行的理由嗎,我得弄清楚原理,下次避免再入坑
uj5u.com熱心網友回復:
大神告訴我不行的理由嗎,我得弄清楚原理,下次避免再入坑
http無狀態,response.write 完了,你跟你沒關系了。你找不到他的。
就像現在我在打字,csdn 其實壓根就不知道我在打字,除非我按下提交按鈕了,我們倆才會重新建立連接(當然我指csdn沒用啥websocket的情況下)
uj5u.com熱心網友回復:
都寫在asmx的介面方法里面,一旦第三方調我的asmx方法,我方法里面拿到資料緊接著再給default.aspx頁面發個http請求把拿到的資料發過去不行嗎?uj5u.com熱心網友回復:
在很早以前,瀏覽器還不支持websocket的時候,google曾經實驗過一種手段,那就是為了保持狀態,服務端故意阻塞response.write輸出,故意保持這么個狀態但是那是google,你不行。google可以用幾k個服務器做個實作,你要這么做,能有300個訪問,你服務器就掛了
uj5u.com熱心網友回復:
如果你理解不了,我們也沒辦法,只能告訴你,google都曾經為了你的想法操心,你要覺著你這樣可以,google操哪門子心哦uj5u.com熱心網友回復:
樓主可以試著你自己的方法去做,實踐才能出真知,做了才能加深印象,如果你有那么多時間的話
uj5u.com熱心網友回復:
關鍵沒用過,大神指點下思路,我現在asmx和我的web網站都在同一個專案下面,那是不是如果用websocket就是還在這個專案里面c#后臺建個服務端,前臺建個客戶端,建立個websocket連接,然后asmx拿到資料以后就通過服務端推資料,然后再到客戶端處理并且做彈框提醒邏輯,是這么個思路嗎?uj5u.com熱心網友回復:
直接SignalR把,把他的demo跑一遍你自己就明白了為啥用SignalR呢,那是因為人家有demo,并且hub這塊是專門給net寫滴, 你說你要推,就2句話,context找到hub,然后call就完了
uj5u.com熱心網友回復:
所以我前面說,本來就不想提別的,免得你折騰uj5u.com熱心網友回復:
好吧,我先了解一下,程序中有問題再咨詢你們吧
uj5u.com熱心網友回復:
再請教一下,用SignalR的話,服務端給客戶端發送訊息,不是全部發送,我想給登錄的某鞋特殊賬號的推送訊息,這些特殊賬號需要我在web應用那里用業務邏輯判斷篩選,這個能實作 嗎uj5u.com熱心網友回復:
1.打開Visual Studio,然后選擇新建專案。2.在New Project對話框中,點擊Visual C#下的Web,然后新建一個名為SignalR.StockTicker的ASP.NET Web Application專案。
3.在New ASP.NET視窗中,選擇Empty模板,然后點擊OK來創建專案
uj5u.com熱心網友回復:
再請教一下,用SignalR的話,服務端給客戶端發送訊息,不是全部發送,我想給登錄的某鞋特殊賬號的推送訊息,這些特殊賬號需要我在web應用那里用業務邏輯判斷篩選,這個能實作 嗎
我們已經給你東西了,剩下的事情,你就應該看SignalR的官方檔案了,后面還要我們弄,我們可沒時間為每個帖子寫你copy就用代碼,csdn可沒給我1分錢啊。
提示: 你hub呼叫會有 xxxhub.Clients.Call
紅字的部分就就是你要的,每個clients都有id,如何實作自己想要實作的分組,官方檔案也有。如何選擇想要的clients(過濾id,過濾分組)你自己實作
uj5u.com熱心網友回復:
以事件的方式觸發就可以uj5u.com熱心網友回復:
樓主我大概了解你的意思了,如果真的想做ASP.NET的實時推送功能,SignalR確實學習一下是比較好的。如果不考慮性能什么的話只是想簡單實作這個功能,也可以有一個比較粗暴的方法就是ajax輪詢:前臺不斷向后臺查詢,首先你要記錄當前在線的用戶(Application或者在資料庫存在線狀態等一些方法可以自己找一下),然后WebService收到資料之后直接把你想要的訊息放到資料庫、記憶體等你需要他在的地方,前臺在向后臺輪詢的程序中一旦發現這個狀態變了,你就回傳訊息,否則回傳無訊息。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/46322.html
標籤:Web Services
