I would like to open up an application so that 3rd parties can _SAFELY_ add additional functionality without access to my application's source code or internal runtime environment (work areas, variables, SET values, etc). My application already has hook points that could be enhanced to check for plugins and communicate with them if present.
My strawman ideas:
1. Define a simple XML syntax for communication between my application and plugins.
2. By default, use a low level file for passing messages.
3. Optionally define an expected COM interface that my application would use to "bind" to external plugins. The downside to a COM interface is that users would have to install plugins as COM components and most of my customers run in locked down environments that will not allow them to install COM or ActiveX components.
I'm also thinking of allowing users to write plugins in VFP source code and use EXECSCRIPT() to execute their code. My understanding is that EXECSCRIPT() code does _NOT_ have any access to the calling application's work areas, variables, SET values, etc) and so could safely be used as a type of "external scripting language". I'm choosing EXECSCRIPT() vs. COMPILE because any code run via the COMPILE command will have access to my application's internal environment.
Feedback, suggestions, warnings, etc? Fire away!
Thanks, Malcolm
©2004 Malcolm Greene |