2013-10-05 34 views
3

我正在尋找一種用戶可以在ASP和Winform應用程序之間進行通信的方式。ASP MVC和WinForm應用程序之間的通信

我在尋找類似soluto.com,我想讓用戶通過網站發送命令到其他計算機。假設用戶註冊了10臺計算機,這是在mvc應用程序上註冊的。用戶可以選擇所有10臺計算機並通過單擊按鈕發送「執行此任務」。

我在想,Winform會創建一個httplisten服務器。每當winform打開時,它會發送一個「我在線」的帖子給mvc,以及IP:Port。服務器將在需要時向該ip:端口發送請求。

這種辦法似乎很不安全不過,有一個開放的端口,配置防火牆和等,似乎是一個矯枉過正。

我想知道是否有任何其他方式來完成此任務。

謝謝你的幫助。

P.S.在你聲稱這是一個愚蠢的想法之前,Piriform也在做這樣的事情。看看Agomo.com

回答

0

在WinForm應用程序中創建一個WCF服務,指定端點(並且適當地保護端點),並以同樣的方式從您的ASP.NET應用程序連接到所述端點連接到WCF服務。

0

你爲什麼不只是有Winforms應用程序使用標準的HttpClient或WebRequest定期輪詢服務(可能每隔5秒左右)並詢問是否有任何需要執行的任務?

除非你需要實時,低延遲,高性能通信,那麼這是解決以最小的零客戶端設置或安全配置您的問題最簡單的方法。

我會做的方式是實現它就像一個數據持久層的堆疊。因此每個客戶端可以在任務排隊時添加一個表中的行。當客戶端向MVC服務器發送HTTP GET請求時,它將返回該客戶端的一組任務,並且可以讓它立即從數據庫中刪除它們,或者等待客戶端稍後發送HTTP命令以指示它完成的任務。

你可以代表任務有幾個屬性簡單的數據對象,或者只是一個字符串或詮釋,你可以以某種方式來調用相應的代碼在客戶端上查找。

對於合理的安全每個客戶端只需要得到像一個GUID或等同,它可以在以後發送到服務器驗證其身份的唯一關鍵。這也被稱爲cookie,祕密或API密鑰。

+0

這是我在想什麼,但是有些WinForms像每分鐘發送一次請求都不會有什麼麻煩嗎?我的程序每天有200次下載。所以,假設在一年中,這將是很多程序查詢我的服務器。我猜想還是比實時更好。 – JohnC1

+0

你真正想要的是一個發佈/訂閱模型,這是@John S.已經回答的。輪詢也可能很慢,並且還會產生很多開銷。 –

相關問題