远程设置文件

时间:2013-02-15 20:44:10

标签: c#

我正在开发一个C#项目,我想将管理员的设置存储在一个设置文件(而不是app.config)中,我想知道这个设置文件是否可以存储在远程位置,如服务器数据库或在同一局域网中的另一台计算机,这实际上是最好的,因为我想将管理员的设置推送到所有计算机,因此单个文件是必不可少的。这甚至可能吗?如果是,有人可以指出我正确的方向(tuto,链接,文档等)如何创建一个设置文件以及如何建立一个远程连接。

我考虑过使用数据库但是我没有看到使用它来存储设置的便利性。你们有什么想法/建议?

1 个答案:

答案 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();
            }
        }
    }
}