This repository was archived by the owner on Dec 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Configuration Settings
Marc Wittke edited this page Sep 29, 2018
·
1 revision
Backend.Fx provides a Key/Value store abstraction that can be used to save application settings. All values are serialized to strings using built-in serializers.
A simple SMTP settings service can be realized like this:
public interface ISmtpSettings
{
string EmailSenderName { get; set; }
string EmailSenderAddress { get; set; }
string SmtpHost { get; set; }
int SmtpPort { get; set; }
string SmtpUserName { get; set; }
string SmtpPassword { get; set; }
SmtpTransportSecurity TransportSecurity { get; set; }
}
public enum SmtpTransportSecurity
{
None,
Ssl,
StartTls,
}
public class SmtpSettings : SettingsService, ISmtpSettings, IDomainService
{
public SmtpSettings(IEntityIdGenerator idGenerator, IRepository<Setting> settingRepository, ISettingSerializerFactory settingSerializerFactory)
: base("smtp", idGenerator, settingRepository, settingSerializerFactory)
{ }
public string EmailSenderName
{
get { return ReadSetting<string>(nameof(EmailSenderName)); }
set { WriteSetting(nameof(EmailSenderName), value); }
}
public string EmailSenderAddress
{
get { return ReadSetting<string>(nameof(EmailSenderAddress)); }
set { WriteSetting(nameof(EmailSenderAddress), value); }
}
public string SmtpHost
{
get { return ReadSetting<string>(nameof(SmtpHost)); }
set { WriteSetting(nameof(SmtpHost), value); }
}
public int SmtpPort
{
get { return ReadSetting<int?>(nameof(SmtpPort)) ?? 25; }
set { WriteSetting<int?>(nameof(SmtpPort), value); }
}
public string SmtpUserName
{
get { return ReadSetting<string>(nameof(SmtpUserName)); }
set { WriteSetting(nameof(SmtpUserName), value); }
}
[Protected]
public string SmtpPassword
{
get { return ReadSetting<string>(nameof(SmtpPassword)); }
set { WriteSetting(nameof(SmtpPassword), value); }
}
public SmtpTransportSecurity TransportSecurity
{
get { return StringEnumUtil.Parse<SmtpTransportSecurity>(ReadSetting<string>(nameof(TransportSecurity)) ?? "None"); }
set { WriteSetting(nameof(TransportSecurity), value.ToString()); }
}
}By storing application settings in the persistence store, multi tenancy is supported, meaning that each tenant might provide private settings. Also, there is no application data besides the persistence mechanism, since to configuration file might hold application settings.