2017-11-04 127 views
0

我有一個WCF CRUD REST API啓動並運行在Windows服務中。一切都很好。如何運行我的WCF服務庫「正在處理」

我想爲用戶提供運行該進程的能力;所以,而不是運行服務(這將需要管理員)我也想有一個靜態庫版本。使用.NET(C#)我該如何去解決這個問題?現在,我有:

ServiceLib (interesting code) 
ConsoleHost 
GUI 

我想GUI來選擇能夠運行ServiceLib代碼作爲一個完整的Windows服務 - 或 - 就像在處理代碼。服務方式已經有效,我認爲這很難。

+0

我應該更清楚 - 我知道如何自我託管,並且我知道如何在控制檯中託管,並且我知道如何託管服務。我不知道如何根據用戶偏好從一種方法更改爲另一種方法。 如果用戶想要在服務中運行它,我想在服務中運行它。如果用戶想要將其作爲普通應用運行,我想這樣做。我不知道如何在運行時更改此綁定。 – Dave

+0

我現在看到了。謝謝澄清! –

回答

0

如果你現在在Windows服務中運行它,它已經是自我託管了,我想?如果GUI應用程序將是唯一在「進程中」模式下使用服務的應用程序,則可以將「WCF CRUD REST API」ServiceLib分成兩部分,一部分實現CRUD部分,另一部分在其上實現WCF REST API。在GUI中,您只需要CRUD部分,因此不需要在將要調用它的相同(且唯一)應用程序中自行託管REST API。

無論如何,從系統管理員的角度來看,將GUI應用程序作爲Windows服務運行通常是一個非常糟糕的主意。我經常運行的控制檯應用程序可以是託管Windows服務的WCF或者只是WCF主機,但他們唯一的GUI可以對Ctrl-C做出反應。