Introduction
- The problem that it solves – or its importance or value of configuration
- Important but is neglected
- Configuration hell
Features
- Simple scenarios: key=value pairs (untyped)
- Store and retrieve typed values
- Primitives (int, date, etc)
- Complex types (POJOs or POCOs)
- Arrays
- Maps
- Inheritance and hierarchy
- Expressiveness (DSLs)
- Management
- Dynamically specify configuration to use at runtime
- Include other config
- Centralization of configuration
- Organization
- Documentation – single and multi-line comments
- Versioning
- Abstract configuration sources or media
- Persistence of modified configuration
- Detection of changes and dynamic reloading
Examples of configuration
- Unix/Linux .rc files (or scripts?)
- Apache
- Sendmail
- ini
- XML
- Windows Registry
- Apache or squid config
Storage
- Settings or property files
- XML files
- database
- App.config and Web.config
- JNDI
Trends
- Convention over configuration
- Fluent vs XML configuration
- Service Locators and registries
- Configuration worksheet
Holy wars
- File vs database
- Configuring end user applications vs systems applications
- Configuration files vs DSLs
Misc topics
- Deployment and configuration
- Re-loading config files
- Abstracting configuration sources
- IOC containers and configuration
- Configuring the shell environment
Configuration Frameworks
- Nini
- .NET – System.Configuration
- java
- java.utils.properties
- Commons.Configuration
- IOC containers
- Spring – org.springframework.beans and org.springframework.context
- Unity
- XML serialization
- Java: org.simpleframework.xml
Advertisements