Delphi plugin framework

妖精的绣舞 提交于 2019-12-09 09:18:23

问题


I want to design Delphi plugin framework. There are three options:
1. DLL
2. BPL
3. COM interface

Every option has some disadvantage.

DLL - Promblem with MDI apllication, forms from plugin cannot be embeded to the host exe - mdi application.
BPL - Every *.bpl plugin and *.exe host application must be compiled with the same version of Delphi.
COM - Interfaces {xxx-xx-xxx-xx} must be registered in system, (regsvr) So plugin framework cannot be portable!

Is everything true what I wrote above? If not, please correct me, or is there some other possibility?
thanks


回答1:


Yes, what you wrote is correct. All of these have advantages and disadvantages, the question is what is important for you, you didn't say what you want to do, so we can't tell you how to do it.

In general, I would pick BPL by default, use DLL if you need to use it from non Delphi apps, and pick COM only if you really have to.

The alternative is to not build your own, since there are several Delphi plugin frameworks available.

Also, this topic has been discussed here before, check out:

  • how-best-to-add-plugin-capability-to-a-delphi-program
  • plugins-system-for-delphi-application-bpl-vs-dll



回答2:


Another possibility is having a scripting interface, such as with Python or Pascalscript. There are many advantages to this approach, not least of which is that the plugin source is also the executable, making it easy to debug and share.




回答3:


I would look at Hydra from Remobjects.

Another candidate would be a combination of PaxCompiler (scripting) and EControl Form Designer (form designer).




回答4:


We use DLLs, even when using only with a Delphi application. Dll forms are embedded in the main form and use Tabs instead of MDI. For DLL to work properly we also use a shared memory manager and built with runtime packages: vcl, rtl and our own package.




回答5:


Have you taken a look at http://www.tmssoftware.com/site/tpf.asp



来源:https://stackoverflow.com/questions/3529039/delphi-plugin-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!