our future projects differs from the typical stuff we do. Our client wants a large set of applications in a kiosk like environment. Some of these modules need to communicate with others and should also be able to update individually without the need to restart
other modules. Some would have their own UI other would be just services.
Examples would be
- A push notification like service with messages from the server to the client
- A list of work items to execute, track, report and so on
- A phone book type module to lookup names and addresses and auto dial numbers
- A maps module to visualize the address
- A communication module to exchange data between the client and the server and cache or persist
One approuch would be to build seperate WPF applications for each module and use some kind of central service to coordinate the messaging and life cycle between the apps. We could use a ServiceBus or a MessageQueue to link these together somehow.
Now we heard about MEF and the possibility to have loosely coupled components under one big application. We could make one WPF application with a main menu, where the user could start a module and/or a list of services to start or stop. Modules could be
updated when a new version is available on the server. Parts could be changed without the need to update or restart the entire system, even those that have their own GUI. We would have a big solution with different projects in VS.
Now my question: Is MEF the right solution to our problem?
Especially the update scenario is of concern. The main application needs to be able to download a new version, stop the old module and install the new version while running.