Configuration – Outline

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s