Architecting Distributed Control Applications Based on (Re-)Configurable Middleware