我正在开发一个C#项目,我想将管理员的设置存储在一个设置文件(而不是app.config)中,我想知道这个设置文件是否可以存储在远程位置,如服务器数据库或在同一局域网中的另一台计算机,这实际上是最好的,因为我想将管理员的设置推送到所有计算机,因此单个文件是必不可少的。这甚至可能吗?如果是,有人可以指出我正确的方向(tuto,链接,文档等)如何创建一个设置文件以及如何建立一个远程连接。
我考虑过使用数据库但是我没有看到使用它来存储设置的便利性。你们有什么想法/建议?
答案 0 :(得分:2)
Visual Studio / .NET中没有远程应用程序设置文件的概念。但是,有许多方法可以通过文件或数据库存储和使用远程设置。
你需要问自己的一些问题是......
是否在本地网络上,是否仅由本地网络上的客户端软件使用?例如,如果您在公司网络上编写Intranet应用程序,就会出现这种情况。
如果是这样,那么您可以使用共享驱动器来托管该文件,并从具有相同文件路径的任何客户端读取该文件。
如果您打算通过互联网使用它,您可以创建某种类型的服务,该服务在调用时返回文件。如果Web服务是从Apache或IIS等Web服务器提供的,那就像Web服务一样。
如果它通过互联网,我只会建议使用数据库。仅仅因为它已经设置为通过网络使用数据,并且您的记录只是一个数据结构,它可以存储在具有x个字段的文件中,或者存储在具有x字段且具有相同工作量的数据库表记录中。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestAsync.Services
{
public static class AppSettings
{
public static string SettingsFileLocation {get; set;}
public static string Setting1 { get; set; }
public static string Setting2 { get; set; }
public static DateTime Setting3 { get; set; }
static AppSettings()
{
SettingsFileLocation = @"C:\Wherever\Whatever.config";
LoadConfiguration();
}
public static void LoadConfiguration()
{
using(var fs = new StreamReader(File.OpenRead(SettingsFileLocation)))
{
Setting1 = fs.ReadLine();
Setting2 = fs.ReadLine();
Setting3 = DateTime.Parse(fs.ReadLine());
fs.Close();
}
}
public static void SaveConfiguration()
{
using (var fs = new StreamWriter(File.OpenWrite(SettingsFileLocation)))
{
fs.WriteLine(Setting1);
fs.WriteLine(Setting2);
fs.WriteLine(Setting3.ToShortDateString());
fs.Flush();
fs.Close();
}
}
}
}