Options in GroupHive Apps

Four steps to Teams success

Options sind DTOs, deren einzige Aufgabe es ist literale Werte zu transportieren.
Diese Werte können Konfigurations-Werte sein, die als Parameter aus Konfigurationsdateien gelesen werden oder Werte, die während der App-Laufzeit dynamisch gesetzt werden.
Ein typisches Beispiel für Options wäre z.B. folgende Klasse:

public class EnterprisesStaticOptions
{
    public ComponentDefinitionIdOptions ComponentDefinitionIdOptions { get; set; }
}

Die zugehörige Konfigurationsdatei wäre hier appsettings.json:

"EnterprisesOptions": {
"ComponentDefinitionIdOptions": {
"Customer": "general_customers",
"Supplier": "general_suppliers",
"OwnCompany": "general_own_companies",
"CustomerSite": "general_customer_sites",
"SupplierSite": "general_supplier_sites",
"OwnSite": "general_own_sites"
}
}

In diesem Fall werden statische Werte aus appsettings.json gelesen und in die App transportiert.
Dies erfolgt i.d.R. über die IConfiguration, die per DI alle Apps mit Options versorgt.

Options, die während der Laufzeit immer gleich sind - also als Parameter oder in Form von Konfigurationsdateien oder Umgebungsvariablen bezeichne ich als "StaticOptions" (wie oben " EnterprisesStaticOptions")

Options, die sich während der Laufzeit verändern bezeichne ich als "DynamicOptions".
Dies sind bei mir die Options, die z.B. pro API-Aufruf gesetzt werden und die Infos über den aktuellen Tenant oder die Umgebung beinhalten.

Beispiel

EnterprisesStaticOptions: z.B. ComponentDefinitionIdOptions
EnterprisesDynamicOptions: z.B. ServiceBusConnectionString, ServiceBusTopicName
EnterprisesStaticCallingOptions: BaseUrl, Scopes
EnterprisesDynamicCallingOptions: CallingTenant, CallingEnvironment

MSALConfiguration wird nicht benötigt in APIs, sondern nur in DaemonApps