I have a problem: I need an architecture to allow for versioning a plugin, component or factory pattern in C#. The requirements are:
- Simple way for a running program to access a new component.
- When a new version is added, the older version still need to be available.
- A way to specify which version of a component to use.
- Standard interface for the program and the components to communicate.
I've got a couple of ideas. I could modify a plugin architecture to allow for versioning. I'm not really sure about dynamically loading dlls - bit more complex than what I have time for. Although I'm willing to listen to any reasoned arguments.
A console application wrapper could work. I could pass arguments for the various requirements. Then the console app could write out a text file in a well-known format. I'm not a real fan of writing and reading text files for communication if I can help it. I'd rather just call a method in code.
At the moment the console app is the most straight-forward idea. I'd have a whole bunch of directories named using the version. Then just create a new directory, copy over the required files, run the console app, read in the output file.
I'm really looking for a simple way to get this done without too much fooling around with complex c# concepts. Or a ready-made library.