I have a new desktop application that must post listings to many different sites. As more sites are added I want to be able to install these as plugins instead of having to update the program every time. I want you to provide me with is a proof of concept project that shows the basic architecture for this.
Design and implement a prototype host application (windows desktop app) that will make use of plugins.
Plugins should support the following interface:
string PluginID():
string PluginVersion();
void SetProperty(string name, string value);
string GetProperty(string name);
void Execute(string Action, string Parameter);
Any properties set for a plugin should be persistent.
The host application should be able to discover what plugins are available, allow the user to enable, disable them, register enabled plugins and allow the user to execute the Execute() method of each plugin.
1. It should provide a tabbed UI with a tab that displays the available plugins and their status. The user should be able to enable and disable the plugins here.
2, A separate tab should provide a combo that allows the user to select a plugin. For the selected plugin, display the PluginID, the version, allow the user to defined and query a property
There are plenty of resources on the internet about implementing plugins - sites like codeproject and stackoverflow are good starting points.
------------------------------
Deliverables -
1 x Host Application (msi installer)
3 Plugins (PluginA, PluginB, PluginC)
PluginA should open a form that has a webbrowser component.
PluginB - show a simple form with an input TextBox
PluginC - something different.
The host application is a separate project and will have a separate installer
Each plugin should be implemented as a separate VS2010 project and have it's own .msi installer.
All project source files. (VS2008 projects are also OK)
----------------------------
This is not a difficult project but I don't have the time to do [login to view URL] are plenty of resources on C# plugins (e.g. codeproject, stack overflow, etc)
What I am interested in with this project is the ability to have plugins that can be installed and update the separately to the host application. How you solve this issue is up to you, simplest is probably to have a plugin folder where the host application can find the plugins.
The other issue for you to solve is where the plugin will store its properties - use the Windows Special folders reserved for user data (AppData\Local or ProgramData folders.)
I look forward to receiving your bid. Make some attempt to discuss this requirement intelligently as it will help your cause. Simply assuring me that "you can do this" is seldom very convincing unless you have solid references. If you have no ratings here, then some background and a description of your experience to date would probably be useful.
Thanks!