我公司(Shortbar)正在爲呼籲GRPC霍爾姆斯一個酒店管理系統的應用服務器。我們設置如下:
- HOLMS.Application是一個.NET類庫,做服務器的實際工作
- HOLMS.Application.ConsoleRunner是一個C#控制檯應用程序託管HOLMS.Application(組裝) 。 (1)開發人員爲了方便(在問題中提到)以及(2)在Docker容器內部運行的生產場景使用控制檯運行器,其中容器運行時(例如Amazon ECS)實現作業控制/縮放。它遵循「12因子應用程序」指南,包括將其本身作爲單獨的獨立無狀態進程運行,快速啓動/關閉以及環境變量配置注入。系統會記錄到stdout中,但stdout會在prod環境中耗盡(例如Sumo,logstash等)。這就是我們的SaaS多租戶解決方案將如何投入生產。
- HOLMS.Application.ServiceRunner將HOLMS.Application打包到Windows服務中,用於更傳統的內部部署環境,其中客戶的IT部門將自行運行服務。此軟件包使用Windows註冊表進行配置,並依賴Windows服務作業控制來啓動/關閉/重新啓動。它登錄到Windows事件日誌。
ConsoleRunner和ServiceRunner每個只有大約200行代碼;大多數情況下,他們只是包裝應用程序包,然後調用它。
希望這會有所幫助。
鑑於系統的性質,它聽起來應該是_reliable_並且有些_fault-tolerant_。這是一個通常不會與_console apps_關聯的特徵。一個很大的消極。另一方面,Windows服務是_recoverable_。一個很大的積極。 – MickyD