实现插件框架的最佳方式——DLL是唯一的方式(C/C+;+;项目)吗?
简介: 我目前正在用C/C++开发一个文档分类器软件,我将使用朴素贝叶斯模型进行分类。但是我希望用户使用他们想要的任何算法(或者我将来想要的),因此我将架构中的算法部分分离为一个插件,该插件将连接到主app@app启动。因此,任何用户都可以编写自己的算法作为插件,并将其用于我的应用程序。 问题陈述: 我打算开发它的方法是将用户想要使用的每一种算法制作成一个DLL文件,并放入一个特定的目录中。在开始时,我的应用程序将搜索该目录中的所有DLL并加载它们 我的问题: (1) 如果一个恶意代码被制作成DLL(并且具有插件框架强制要求的相同功能)并放入我的插件目录,该怎么办?在这种情况下,我的应用程序会认为它是一个插件,并选择它并调用它的函数,因此恶意代码可以很容易地使我的整个应用程序停止运行(在最坏的情况下,可能使我的应用程序成为恶意代码启动器!!!) (2) 使用DLL是实现插件设计模式的唯一途径吗?(这不仅是出于对恶意插件的恐惧,也是出于好奇的一般性问题:)) (3) 我认为很多软件都是使用插件模型编写的,以实现可扩展性,如果是这样的话,它们如何抵御此类攻击 (4) 总的来说,您对我决定使用插件模型来实现可扩展性有什么看法(您认为我应该考虑其他选择吗?) 多谢各位 -微核:)实现插件框架的最佳方式——DLL是唯一的方式(C/C+;+;项目)吗?,c,architecture,dll,plugins,design-decisions,C,Architecture,Dll,Plugins,Design Decisions,简介: 我目前正在用C/C++开发一个文档分类器软件,我将使用朴素贝叶斯模型进行分类。但是我希望用户使用他们想要的任何算法(或者我将来想要的),因此我将架构中的算法部分分离为一个插件,该插件将连接到主app@app启动。因此,任何用户都可以编写自己的算法作为插件,并将其用于我的应用程序。 问题陈述: 我打算开发它的方法是将用户想要使用的每一种算法制作成一个DLL文件,并放入一个特定的目录中。在开始时,我的应用程序将搜索该目录中的所有DLL并加载它们 我的问题: (1) 如果一个恶意代码被制作成
- 核心应用程序(插件功能)
- 插件(更高的隔离度)
- 装置
- 调试+诊断(仅在特定插件组合中出现的错误)
- 管理(用户必须知道并管理插件)
- 安装/更新主软件比更新插件要复杂得多
- 单个组件需要单独更新(例如,用户可以组合不同版本的插件)
- 其他人为您的主应用程序开发插件