[英]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-rpc在Win32 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.