Plug in framework made easy


Published on

This presentation shows the basic architecture of a plug-in framework using reflection in Microsoft .NET Framework. .NET reflection allows one to find out information about the types in programs or other assemblies in .NET, and also to read other metadata. Other then obtaining information, the power behind reflection mechanism is that it allows dynamic instantiation of the type discovered into a concrete object. We will show you how you can leverage on the features of reflection to simplify the process of developing a working plug-in framework for your application,

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Retrieving plug-inmetadata without the need of instantiating the plug-in.Version control to load the latest plug-in when conflict.Make PluginApi as an interface that is implemented by MainForm if most of the application logic and functionalities are located in MainForm.
  • Plug in framework made easy

    1. 1.
    2. 2. Plug-in Framework Made Easy<br />Thomas Cheah<br />Independent Software Consultant<br /><br />
    3. 3. Who Am I?<br />Started programming in 1993.<br />3 years distinction in eGenting Programming Competition.<br />Specialized in 2D & 3D visualization and computational geometry.<br />Previously co-founder and technical director of a computer game company.<br />Currently developing software for building visualization, documentation, simulation.<br />
    4. 4. What is Plug-in?<br />Internet Explorer Add-Ons for third party extensions, search providers, accelerators, etc.<br />
    5. 5. What is Plug-in?<br />Microsoft Office Add-Ins provide helpful features and simplify existing Office capabilities.<br />
    6. 6. What is Plug-in?<br />Adobe Photoshop filter plug-ins provide extensible image processing capabilities and effects.<br />
    7. 7. What is Plug-in?<br />Skype Extras allows you to install additional applications / games that can be used with your Skype contacts list.<br />
    8. 8. What is Plug-in?<br />WordPressPlugins are tools to extend its functionality for easy modification, customization, and enhancement to your WordPress blog.<br />
    9. 9. What is Plug-in?<br />Comprehensive IP Telephony Services that I developed in 2003. Plug-ins are used to provide a wide range of telephony services like those offered in traditional phone over VoIP network.<br />
    10. 10. Why Plug-in?<br />Faster time-to-market for your software.<br />Reduced software size.<br />More extensive and practical software features and capabilities.<br />Less hassle in software upgrade and support.<br />Cheaper and more effective marketing.<br />Greater loyalty from your customers.<br />
    11. 11. How to Develop a Plug-in Framework?<br />MainForm<br />IPlugin<br />PluginType1<br />PluginManager<br />PluginType2<br />PluginType3<br />
    12. 12. What Does PluginManager Do?<br />Loads and initializes plug-ins.<br />Retrieves plug-ins.<br />Executes plug-ins.<br />Disposes and releases all resources of plug-ins.<br />
    13. 13. Loading and Initializing Plug-ins<br />Start<br />Initialize plug-in<br />Read all plug-in files<br />Add plug-in to cache<br />Retrieve plug-in in the file<br />Has more plug-in<br />Is valid plug-in?<br />Yes<br />Yes<br />No<br />No<br />Retrieve next plug-in<br />End<br />
    14. 14. How Does .NET Reflection Help?<br />.NET Reflection provides run-time loading and inspection of type information.<br />
    15. 15. DEMO<br />XShow1 show… X-dimension of inspirations<br />
    16. 16. A More Robust Plug-in Framework<br />MainForm<br />PluginApi<br />PluginManager<br />IPlugin<br />
    17. 17. Other Design Considerations<br />Using attributes for plug-in metadata.<br />Version control in PluginManager.<br />Different plug-in interfaces for different functional areas.<br />Make PluginApi as an interface that is implemented by MainForm.<br />
    18. 18. Q&A<br />Questions & Answers<br />
    19. 19. THANKS<br />Thank You!Feel free to contact me at<br />