簡體   English   中英

ASP.NET Web App和C#應用程序之間的雙向通信

[英]Two-way communication between ASP.NET Web App and C# Application

我需要建立一個雙向交流的網站和應用程序。 我將使用ASP.NET構建網站,並使用C#構建應用程序。

我將自己托管該網站,該網站將與該應用程序在同一台計算機上運行。

我不知道在兩者之間發送數據的最佳技術是什么。 C#應用程序將需要一直運行。 我應該構建一個C#控制台應用程序,然后隱藏控制台窗口嗎? 還是其他某種應用更合適?

我一直在網上瀏覽,發現了一些不同的建議,包括套接字,消息隊列,遠程處理和WCF。 一些提示將不勝感激-我是所有這一切的新手。

謝謝。

編輯將使用請求-響應模式,Web App始終是實例化請求的模式。 這就是我雙向交流的意思。

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

我將使用SQL Server Express 2008 R2,而后端應用程序將是唯一與數據庫通信的應用程序。 該網絡應用將主要與表示層有關。

后端應用程序將具有內存對象,這些對象將在應用程序啟動時實例化(使用從數據庫加載的數據),然后持久化到數據庫(在執行期間和關閉之前)。 C#控制台應用程序是否適合此類事情?

您在評論中描述的是典型的三層應用程序。

  • 前端:IIS中托管的ASP.NET應用程序
  • 后端:.NET應用程序作為Windows服務運行(或IIS / WAS中托管的WCF應用程序),並帶有公開的Web服務。 前端應用程序使用Web服務(或遠程處理)與此應用程序進行通信。
  • 數據庫:僅由后端應用程序訪問。

為了清楚起見。 雙向具有多種含義,但在這種情況下,常見的是前端進行對后端的調用以及后端響應(請求-響應模式)。 后端從不調用前端-使用ASP.NET應用程序很難實現這種通信。

ASP.NET基於每個請求工作。 客戶端調用您的ASP.NET應用程序,並且正在處理客戶端請求=這就是所有邏輯的運行位置。 處理請求后,處理結束。 因此,除非您公開一些用於后端處理的特殊Web服務,否則從后端調用ASP.NET應用程序不適合此操作,但是即使在此之后,如果沒有ASP.NET中的某些內部狀態保留,它也不會與客戶端請求處理相關聯應用。

WCF可能是一個選擇。 您可以使用WCF建立所需的連接。

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

WCF可以工作,您可能還希望研究使用/編寫Web服務,但是取決於您是希望Sync還是Async看起來更像是一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM