Component Framework Help

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Michael Crawford

    #1

    Component Framework Help

    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.


  • Tian Min Huang

    #2
    RE: Component Framework Help

    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
    misunderstandin g. 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:



    2. In addition, I recommend you the following sample which demonstrates a
    plug-in / plug-out component model.
    LiveCode.NET


    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.

    Comment

    • Tian Min Huang

      #3
      RE: Component Framework Help

      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
      misunderstandin g. 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:



      2. In addition, I recommend you the following sample which demonstrates a
      plug-in / plug-out component model.
      LiveCode.NET


      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.

      Comment

      Working...