3

私はC#プロジェクトに取り組んでおり、管理者の設定を設定ファイル(app.configではなく)に保存したいのですが、この設定ファイルをサーバーデータベースや別のコンピューターなどのリモートの場所に保存できるかどうか疑問に思っています。同じLANの場合、これは実際には最良の方法です。管理者の設定をすべてのコンピューターにプッシュしたいので、単一のファイルが不可欠になるからです。これも可能ですか?もしそうなら、誰かが設定ファイルを作成する方法とそれへのリモート接続を確立する方法について正しい方向(tuto、リンク、ドキュメントなど)を教えてくれませんか。

データベースを使うことを考えましたが、設定を保存するためだけに使うのは便利ではありません。あなたたちはどう思いますか/提案しますか?

4

1 に答える 1

2

Visual Studio / .NETには、リモートアプリケーション設定ファイルの概念はありません。ただし、ファイルまたはデータベースを介して、リモート設定を保存および使用する方法は多数あります。

あなたが自分自身に尋ねる必要があるいくつかの質問はこれです....

それはローカルネットワーク上にあり、ローカルネットワーク上のクライアントソフトウェアによってのみ消費されますか?これは、たとえば、企業ネットワークでイントラネットアプリケーションを作成している場合に当てはまります。

その場合は、共有ドライブを使用してファイルをホストし、同じ正確なファイルパスを持つ任意のクライアントからファイルを読み取ることができます。

インターネットを介してそれを消費する場合は、呼び出されたときにファイルを返すある種のサービスを作成できます。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();
            }
        }
    }
}
于 2013-02-15T20:54:21.863 に答える