In this section, I’ll go over the list of Cinchoo framework configuration parameters can be overridden to control the run-time environment of the framework either through configuration or programmatically.
Framework will run fine without overriding these parameters. Only when you need, you can override them. In those situation, it can be done through configuration or programmatically.
First, we will see how to override them through configuration. All the framework parameters must be stored in ChoCoreFrx.config file under application executable folder. This is the default behavior of discovering this file by the framework. But this can be overridden by specifying the path to this file through appFrxSettings custom configuration section in App.config file as below
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="appFrxSettings" type="Cinchoo.Core.ChoAppFrxSettings, Cinchoo.Core" /> </configSections> <appFrxSettings appFrxFilePath="C:\ConfigFolder" /> </configuration>
GlobalApplicationSettings
There are the application level settings used by framework. Below are the attributes and their usages.
- globalApplicationSettings – Global application parameters used by framework. All the variables are optional.
- singleInstanceApp [bool] – true, to ensure there is only one instance of the application running at any point in time. false, lets you to run multiple instances of the application. Default is false.
- applicationId [string] – the custom application name. Default value is the executable name.
- eventLogSourceName [string] – Event log source name where all the errors are posted on this name, default value is applicationId.
- useApplicationDataFolderAsLogFolder [bool] – true, it uses the current roaming user directory. Default is false.
- logFolder [string] – A log directory, where all the log files are created by framework. Default is ‘[appExePath]\Logs’.
- appConfigPath [string] – configuration file path. If not specified, this will be [appExeFolder].[appExeName].xml
- logTimeStampFormat [string] – A time stamp format used when logging information to log files. Default value is “yyyy-MM-dd hh:mm:ss.fffffff”
- traceLevel [int] – Specifies what message to output for the Trace/ChoTrace classes. 0-Off, 1-Error, 2-Warning, 3-Info, 4-Verbose.
Here is the sample Global Application Settings section in ChoCoreFrx.config file
<?xml version="1.0" encoding="utf-8" ?> <configuration> <globalApplicationSettings singleInstanceApp="false" applicationId="TestApplication" eventLogSourceName="TestApplication" useApplicationDataFolderAsLogFolder="false"> <logFolder>C:\Logs</logFolder> <appConfigPath>c:\config\TestApplication.xml</appConfigPath> <logTimeStampFormat>yyyy-MM-dd hh:mm:ss.fffffff</logTimeStampFormat> </globalApplicationSettings> </configuration>
MetaDataFilePathSettings
Cinchoo framework creates as well as uses number of Meta-Data files, these file paths can be configured through ChoCoreFrx.config file.
- configurationMetaDataFilePath – meta data file path used by Configuration manager. By default, it’s value is [appExeName].config.meta
- pcMetaDataFilePath – meta data file path used by Performance Counter manager. By default, its value is [appExeName].perf.meta
Here is the sample xml section looks like
<?xml version="1.0" encoding="utf-8" ?> <configuration> <metaDataFilePathSettings> <configurationMetaDataFilePath>c:\Config\configurationMetaFile.meta</configurationMetaDataFilePath> <pcMetaDataFilePath>c:\Config\PCMetaFile.meta</pcMetaDataFilePath> </metaDataFilePathSettings> </configuration>
Run-Time approach
Lets see how we can override the system parameters at run-time in here. Cinchoo framework exposes ChoApplication.ApplyFrxParamsOverrides event. By subscribing to this event, you have a chance to override the framework parameters at run-time. See below the sample code on how to override some of the system parameters
static void Main(string[] args) { try { ChoApplication.ApplyFrxParamsOverrides += new EventHandler<ChoFrxParamsEventArgs>(ChoApplication_ApplyFrxParamsOverrides); XmlApplicationSettings ApplicationSettings = new XmlApplicationSettings(); } finally { ChoAppDomain.Exit(); } } static void ChoApplication_ApplyFrxParamsOverrides(object sender, ChoFrxParamsEventArgs e) { e.GlobalApplicationSettings.SingleInstanceApp = true; e.MetaDataFilePathSettings.ConfigurationMetaDataFilePath = @"C:\Config\MetaDataFilePath.meta"; }