Aplikacja Asp.Net MVC - ustawienia i parametry

0

Cześć,
Zastanawiam się nad sposobem przechowywania i pobierania różnych ustawień aplikacji (np. parametry dotyczące hasła: minimalna długość, czas ważności czy parametry dotyczące adresu siedziby firmy). Myślałem o tym aby umieścić je w bazie danych. Użycie pliku web.config raczej odpada z uwagi na fakt, że są to ustawienia które mogą się zmieniać z czasem.
A jakie są wasze doświadczenia w tej kwestii? Możecie polecić jakieś ciekawe materiały?

1

Możesz w bazie, możesz w jakimś JSONie na dysku, jak Ci wygodniej.

0
somekind napisał(a):

Możesz w bazie, możesz w jakimś JSONie na dysku, jak Ci wygodniej.

Z plikiem jest chyba o tyle kiepsko, że trzeba pilnować aby podczas wgrywania nowej wersji aplikacji go nie podmienić. Baza danych wydaje się być lepszym rozwiązaniem.

0

Ale kto każe trzymać ten plik w tym samym katalogu, w którym jest aplikacja?

2

(...) parametry dotyczące adresu siedziby firmy

Czemu konkretnie ma sluzyc ten adres? Jesli wyswietlaniu statycznej informacji (np. na stronie About/Contact) i jest male prawdopodobienstwo czestych zmian to nie widze problemu z zakodzeniem tego we frontendzie. W przeciwnym razie miejscem na takie dane jest raczej baza danych.

0

Oprócz adresu są to np. numery telefonów czy adresy mailowe, które mogą być zmieniane (lub dodawane). Założenie jest takie żeby nie musieć przy każdej zmianie aktualizować html'a we wszystkich miejscach gdzie te dane występują. Myślę że baza danych będzie lepszym rozwiązaniem, bo trzymanie pliku z danymi po za projektem raczej nie wchodzi w grę

0

Jeśli możecie to zerknijcie na mój kod. Będę wdzięczny za wszelkie sugestie.

Model:

public class Settings
    {
        public int ID { get; set; }
        public int CATALOG { get; set; }
        public string KEY { get; set; }
        public string VALUE { get; set; }
        public string DESC { get; set; }
    }

Klasa Settings:

public class Settings
    {
        private DataBaseContext db;
        private IEnumerable<Models.Settings> sett;

        public string Address => ReadProperty(3, "Address");
        public int PasswordLength => Convert.ToInt32(ReadProperty(2, "PasswordLength"));

        public Settings(DataBaseContext db)
        {
            this.db = db;
        }

        private void Init()
        {
            sett = db.TAB_SETTINGS;
        }

        private string ReadProperty(int catalog, string key)
        {
            if (sett == null)
                Init();

            return sett
                .Where(x => x.CATALOG == catalog && x.KEY == key)
                .FirstOrDefault()
                .WARTOSC;
        }
        
        public void UpdateProperty(int catalog, string key, string value)
        {
            var appSett = sett
                .Where(x => x.CATALOG == catalog && x.KEY == key)
                .FirstOrDefault();

            appSett.WARTOSC = value;

            db.SaveChanges();
        }
    }

Klasa AppConfig:

public class AppConfig
    {
        public static Settings Configuration;

        static AppConfig()
        {
            Configuration = new Settings(new DataBaseContext());
        }
    }

A tak używam:

AppConfig.Configuration.Address
AppConfig.Configuration.PasswordLength

1 użytkowników online, w tym zalogowanych: 0, gości: 1