2017-10-20 78 views
-1

因此,我安裝了一個具有服務和表單的項目。該服務加載表單創建的XML文件。問題是由於路徑的服務和形式AppDatas使用如何使用XML在服務和表單之間進行正確的通信

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

我不得不對用戶帳戶,而不是本地系統安裝服務是不同的。我注意到大多數服務都安裝爲本地系統。這將如何影響服務的性能,還是有更好的方法來解決這個問題?

+0

該系統沒有一個環境,所以沒有文件夾的路徑。我認爲正常的過程是在管理員帳戶中有項目,然後以管理員身份運行。以用戶帳戶運行是等同的,但用戶將有權修改(除非您是用戶)。性能基於設置服務的優先級。通常服務運行時系統服務設置爲以正常優先級運行,因此不影響操作系統性能。所以任何服務的優先級都應該根據自己的要求來設定。 – jdweng

回答

0

您的問題接近太寬。有很多方法可以處理您的場景。這就是說,既然你已經有了一個實現,我們可以對它進行評論,以解決你的問題的特定部分。

首先,作爲普通用戶運行應該沒問題,假設服務在該帳戶下正常運行。這並不理想,但不應該傷害任何東西。通常情況下,服務需要提升權限,這就是爲什麼它首先是服務,爲什麼它作爲本地系統或本地服務帳戶運行。但是,如果您的服務不需要這些權限,那麼使用用戶帳戶就沒有問題。

也就是說,從您的描述中可以看出,GUI程序通過將XML文件寫入服務監視和讀取的特定位置來控制服務。將文件系統用作進程間通信(IPC)的一種形式本身並不理想,我會推薦一種不同的方法。

由於您已經擁有基於XML的I/O,因此我會建議使用命名管道或其他基於網絡/套接字的IPC。您可以將流對象(例如PipeStreamNetworkStream)包裝在StreamWriterStreamReader中,然後使用您已經使用的正常XML內容來相應地讀取和寫入。

另一種選擇是WCF。有一點學習曲線,對用於傳輸數據的精確序列化的控制較少,但好處是,通過Visual Studio的支持,您可以在實現XML /序列化方面花費更少的時間,並且您只需在Visual Studio中添加它們即可爲該服務創建新的客戶端。 IDE將創建必要的數據結構和配置以連接到服務。

無論哪種情況,您都可以在本地系統帳戶下運行您的服務,這是典型的服務,您所問的問題就會消失。 :)

相關問題