2017-10-20 75 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将创建必要的数据结构和配置以连接到服务。

无论哪种情况,您都可以在本地系统帐户下运行您的服务,这是典型的服务,您所问的问题就会消失。 :)

相关问题