Component Framework Help

  • Thread starter Thread starter Michael Crawford
  • Start date Start date
M

Michael Crawford

I need to develop a plugin based application framework.
The framework or host app needs to handle all the "common"
or "underlying" functionality including connecting and
updating a remote database, connecting to the internet,
passing soap messages etc.
The user interface will be made up of plugins that the
user can install or uninstall. These gui plugins also
need to communicate (calling methods, raising events,
etc.) with eachother and be able to pass data to
eachother. The framework should also allow for the
creation and installation of custom plugins which will
also be able to communicate with the framwork / host app
and the other plugins aswell.

I'm really not sure where to start or how to create
a "plugin" architecture. I think I need to use reflection
or extensibility to complete this task. I would want the
entire framework and the plugin components to be
customizable ( I envisioned using xml files and parameters
with a wizard type interface to allow users to
customize). In addition the plugins and the framework
would need to expose their interfaces (i think) so that
other developers can create additional plugins and also to
use my plugins in their applications by interacting with
the exposed methods, events, properties.

Best Regards,
Michael Crawford.
 
Hello Michael,

Thanks for your post. As I understand, you want to implement a plugin-based
application so that you main application need to dynamically
load/call/unload plugins. Please correct me if there is any
misunderstanding. I now share the following information with you:

1. I suggest that you can implement plugins in other assembly, create an
AppDomain to load a required assembly (plugin), and unload the AppDomain
when you want to release a plug.

Please note that CLR does not provide a way to unload an assembly. The only
mechanism to remove the assembly is to unload the application domain in
which the assembly is loaded, that's the reason why we should create a new
AppDomain for a plugin. I believe the Application Domain FAQ is very
helpful:

http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx

2. In addition, I recommend you the following sample which demonstrates a
plug-in / plug-out component model.
LiveCode.NET
http://www.codeproject.com/csharp/livecodedotnet.asp

Hope this helps.

Regards,

HuangTM
Microsoft Online Partner Support
MCSE/MCSD

Get Secure! -- www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 
Back
Top