簡體   English   中英

網站和Windows服務之間的通信

[英]Communication between web site and windows service

我有一個用c#(MVC)編寫的網站和一個用c#編寫的Windows服務。 兩者都在同一台機器上運行。 他們的想法是讓他們共享同一個數據庫。

Windows服務充當引擎,網站更多地是前端,顯示引擎執行的計算結果。 通信包含從Web服務器到Windows服務的幾乎沒有數據的命令。 預計很少的命令/秒。

他們進行交流的一種好方法是什么?

通常Windows最快的是LRPC。 根據您的需求,WCF可能是一個真正的問題。 我們使用Win32 LRPC + protobuffers從Web服務器到后台服務的吞吐量大約提高了40倍。 只取決於您的需求。

(請參閱與協議緩沖區+ RpcLibrary相比對WCF進行基准測試

protobuf-csharp-port具有定義服務和消息所需的大部分功能。 然后使用protobuf-csharp-rpcWin32 LRPC傳輸層上提供消息序列化。

一旦您在原型緩沖區中定義了協議,這將非常容易。 在客戶端/服務器上只需要幾行代碼即可創建連接和代理類。

同樣,這完全取決於您要尋找的內容。 但是,恕我直言,.NET Framework目前沒有更好的RPC體系結構。 我當然有偏見,但自2003年以來我們一直在使用這種形式的變體,並且它確實有效。

PS:如果要從頭開始構建服務,則可以查看我的“ 構建Windows服務項目模板”指南 通過真實的事件記錄,安裝和命令行測試,它將使您快速啟動並運行。

您總是可以用“另一種方式”進行操作-讓您的網站運行Web偵聽器,並使Windows Service連接到它。

這完全取決於您要做什么。 有許多可用的選項:您可以在Windows Service中托管(寧靜的或不寧靜的)Web服務,可以使用Remoting或WCF等。

但這一切都始於一個問題:為什么你們都需要它們? 是什么使您無法將Windows服務的功能移至Web App中?

暫無
暫無

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

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