所以我安装了一个有服务和表单的项目。该服务加载表单创建的XML文件。问题是因为使用
服务和形成AppDatas的路径是不同的Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
我必须在用户帐户而不是本地系统上安装该服务。我注意到大多数服务都安装为本地系统。这将如何影响服务的性能,还是有更好的方法来解决这个问题?
答案 0 :(得分:0)
你的问题接近于过于宽泛。您可以通过多种方式处理您的方案。也就是说,既然您已经有了实现,我们可以对其进行评论,以解决您问题的特定部分。
首先,假设服务在该帐户下正常运行,以普通用户身份运行应该没问题。它并不理想,但不应该对任何事情造成伤害。通常,服务需要提升权限,这既是它首先提供服务的原因,也是为什么它作为本地系统或本地服务帐户运行的原因。但是,如果您的服务不需要这些权限,那么使用用户帐户就可以了。
也就是说,从您的描述中可以看出,GUI程序通过将XML文件写入服务监视和读取的某个特殊位置来控制服务。将文件系统用作进程间通信(IPC)的一种形式本身并不理想,我建议采用不同的方法。
由于您已经有基于XML的I / O,我建议使用命名管道或其他一些基于网络/套接字的IPC。您可以将流对象(例如PipeStream
或NetworkStream
)包装在StreamWriter
和StreamReader
中,然后使用您已经使用的普通XML内容来阅读和写相应的。
另一种选择是WCF。有一点学习曲线,您对用于传输数据的精确序列化的控制较少,但好处是,通过Visual Studio的支持,您可以减少实现XML的时间/序列化方面,只需在Visual Studio中添加它们即可为服务创建新客户端。 IDE将创建必要的数据结构和配置以连接到服务。
在任何一种情况下,您都可以在本地系统帐户下运行您的服务,就像服务的典型情况一样,您要问的问题就会消失。 :)