This project is read-only.

Project Description

The MySpace Configuration System is a client/server solution for managing configuration sections.
It allows you to easily keep all consumers of a section up to date without deployments, and provides simple visibility into what the current configuration is.

Getting Started

Everything you need to run the configuration system is included in the release, though currently you will need visual studio 2010 in order to build the source and having a running system. A binary release should be available soon.

Please go grab a copy of the source tree from either the Source Code tab above or by connecting to codeplex's source control, and open the configurationsystem/MySpace Configuration System.sln file.

The Code

Under the configurationsystem folder, there are two more: _drop and Core. This reflects the structure of the internal MySpace source tree, which is left intact in order to make keeping everything in sync easier.

_drop is where all libraries are built to, and they are referenced there via assembly references instead of project references.

Core contains all of the code in the following folders.
  • ConfigurationSystem
    • The configuration system code itself - the client and server, a windows service and console app that hosts the server, and client example code
  • Logging
    • Our wrapper for log4net. All of the configuration system pieces use this for logging. You set the log4net configuration file with the appSettings key LoggingConfigFile.
  • ResourcePool
    • A simple library for reusing resources, such as memory streams. You do not need to know how to use this library to use the configuration system or extend it, but there was no reason not to include the code!
  • Shared
    • This is a large library of shared code used across the myspace code base. The majority of it is not used by the configuration system, but it's a useful library to have.

All of the other shared libraries are also used by our middle tier system, Data Relay It may make sense to separate them into another CodePlex release, but distributing everything together was the simplest way to make an easily buildable release.

Test Console Server

After you've built the solution the fastest way to explore the system is by running MySpace.ConfigurationSystem.TestConsoleServer. This will start an instance of the config server, listening on port 9000. Once it's running, you can hit


to display the current configuration. The details of this configuration are discussed in detail in the Server documentation.

You will see an entry in the mapping like

<section name="MySection" provider="FileProvider" source="MySection.config" comment="For the XmlSerializerExample project"/>

That defines a configuration section called MySection, which you can access by hitting


This section contains an example which is used by the XmlSerializerExample project. There is much more information about that on the XmlSerializerReplacementHandler page, which should be your next stop now that you have a server running!

If you wish to have a more permanent and manageable instance of the config server, you can install the windows service. The ConfigurationSystem.WindowsService project builds to a folder called Output, and you can run InstallUtil against MySpace.ConfigurationSystem.WindowsService.exe to install a service named MySpace Configuration Server. You could also create whatever sort of program you wish that hosts MySpace.ConfigurationSystem.HttpServer by following the example set by the windows service or test console server!

Both the Windows Service and Test Console Server are configured by default to log to a file called ConfigurationServer.log in their run time directories. If you experience any problems or are curious about what they are doing, be sure to check out the log files!

Once you have a server running and have read the XmlSerializerReplacementHandler page, you should have a good handle on how the system works and how you can use it for your code's configuration. The .Net Client page contains more information about the client works, and the Server page describes in more detail how to configure and extend the server, as well as documenting all of the commands it supports so that you could create other clients if you so desire!

Last edited May 25, 2011 at 1:02 AM by eriknelson, version 14