2011-12-26 156 views
0

我需要構建一個網站和一個雙向通信的應用程序。我將使用ASP.NET構建網站,並使用C#構建應用程序。ASP.NET Web App和C#應用程序之間的雙向通信

我將自己託管網站,它將與應用程序在同一臺機器上運行。

我不知道用什麼最好的技術來發送數據。 C#應用程序需要始終運行。我應該建立一個C#控制檯應用程序,然後隱藏控制檯窗口嗎?或者其他類型的應用會更合適嗎?

我一直在尋找網絡,發現了幾個不同的建議,包括套接字,消息隊列,遠程處理和WCF。幾個指針將非常感謝 - 我是所有這一切的新手。

謝謝。

編輯將使用請求 - 響應模式,Web應用程序始終是實例化請求的模式。這就是我所說的雙向溝通​​。

該Web應用程序將向後端應用程序發送請求,後端應用程序將執行一些處理,然後將響應發送回Web應用程序。 JSON將用於來回發送數據。

我將使用SQL Server Express 2008 R2,後端應用程序將是唯一一個與數據庫進行通信的應用程序。 Web應用程序將主要關注表示層。

後端應用程序將具有內存中的對象,這些對象在應用程序啓動時(從數據庫加載數據)實例化,然後保留到數據庫(在執行期間和結束之前)。 C#控制檯應用程序是否適合這種類型的應用程序?

+0

你會使用什麼樣的數據源?在例子MSSQL? – 2011-12-26 12:41:11

+0

@Rachel - 他們會有什麼樣的交流?如果它是簡單的數據通信,那麼你的Windows應用程序可以將它放置在數據庫中,並且Web應用程序調用將它從數據庫中拉出來,否則請去WCF。 – Bibhu 2011-12-26 12:45:09

+0

@Trikks是的,我將使用SQL Server 2008 R2。我的想法是隻有C#應用程序與數據庫進行通信,以便Web應用程序將主要關注表示層。我可能會使用JSON將數據發送到/來回這兩個應用程序。 – Rachel 2011-12-26 12:47:45

回答

4

您在您的評論描述的是典型的三更高級的應用程序。

  • 前端:在IIS
  • 託管ASP.NET應用程序後端:.NET應用程序運行的Windows服務(或WCF應用程序託管在IIS/WAS)與公開的Web服務。前端應用程序使用Web服務(或遠程處理)與此應用程序進行通信。
  • 數據庫:僅由後端應用程序訪問。

只是爲了說清楚。雙向有很多含義,但在這種情況下常見的是前端調用後端和後端響應(請求 - 響應模式)。後端從不調用前端 - ASP.NET應用程序很難實現這種通信。

ASP.NET根據請求進行工作。客戶端調用您的ASP.NET應用程序,並處理客戶端請求=這是所有邏輯運行的地方。處理請求時,處理結束。因此,從後端調用ASP.NET應用程序並不適合這種情況,除非您爲後端處理公開某些特殊的Web服務,但即使在此之後,它也不會與您的客戶端請求處理相關聯,而無需在ASP.NET中保留一些內部狀態應用。

+0

是的,你正確理解我的情況。我將使用請求 - 響應模式,前端總是實例化請求,而後端是唯一訪問數據庫的人。後端應用程序應具有在開始執行時從數據庫加載的內存中對象,並在停止之前保留該對象。那麼C#控制檯應用程序會更適合嗎? – Rachel 2011-12-26 13:43:39

+0

當前端是ASP.NET時,控制檯應用永遠不會更合適。 – 2011-12-26 15:14:55

0

WCF可能是一個選擇。你可以用WCF建立你需要的連接。我建議你看看SignalR。這是一個項目,它使您能夠在您的Web應用程序和客戶端應用程序之間建立持久連接。 (在這種情況下你的C#應用​​程序)。官方話語中,SignalR是ASP.NET的異步信號庫,可幫助構建實時的多用戶交互式Web應用程序。

+0

我不想爲這個項目使用第三方庫,但是非常感謝你提出這個建議。我從來沒有使用過WCF。如果我構建一個WCF應用程序,我可以像我的問題(更新)中解釋的那樣保留內存中的對象嗎? – Rachel 2011-12-26 14:04:35

+0

@Rachel SignalR可能看起來像第三方庫,但事實並非如此。該項目背後的主要開發人員是ASP.NET團隊的核心成員:Damian Edwards和David Fowler。我敢打賭,這個項目將在未來的版本中內置到核心ASP.NET中。 – tugberk 2011-12-26 14:29:25

0

WCF會工作,你也可能想看看消費/寫一個Web服務,但是這取決於如果你想同步或異步上看起來更像是問題..

相關問題