Architecture 模块化系统结构

Architecture 模块化系统结构,architecture,modular,Architecture,Modular,我正在尝试在我的POS系统中实现模块化,以允许第三方执行某种模块/插件/附加组件。我已经开始实现SPI和API,我的问题是:必须通过这种方式访问数据库中的数据,还是我需要提供服务 在这一点上,你可能已经注意到,我在这方面的经验很少,所以在这个话题上的任何建议都是好的 编辑:更多信息。我的系统有一个用户的系统,理论上检查访问系统任何部分的凭证,mysql数据库是用Java编写的。我的模块需要安全地访问数据库中的一些表,访问主菜单,我不知道还能说些什么,但我的问题更多的是抽象地说api需要如何 提前

我正在尝试在我的POS系统中实现模块化,以允许第三方执行某种模块/插件/附加组件。我已经开始实现SPI和API,我的问题是:必须通过这种方式访问数据库中的数据,还是我需要提供服务

在这一点上,你可能已经注意到,我在这方面的经验很少,所以在这个话题上的任何建议都是好的

编辑:更多信息。我的系统有一个用户的系统,理论上检查访问系统任何部分的凭证,mysql数据库是用Java编写的。我的模块需要安全地访问数据库中的一些表,访问主菜单,我不知道还能说些什么,但我的问题更多的是抽象地说api需要如何

提前谢谢

对不起,如果我的英语不好


Octavio Ruiz

一般来说,软件系统(通常)分为“层”(如用户界面(UI)、业务逻辑(BL)、数据访问层(DAL)等)。这些层还提供了与之融合的自然场所。所以

对数据库中数据的访问权限已被取消 要通过这种方式,否则我需要提供 服务

根据您所说的,我认为其他系统应该通过服务或API进行集成。给予对数据库的直接访问权意味着他们将避开应该应用于他们想要执行的交互的业务逻辑。在你的特殊情况下,这也可能意味着他们会回避你的安全措施

模块化

这有两个部分:

  • 有助于模块化系统的架构风格和设计模式(特别是关于维护和可扩展性);这些都是技术不可知论(不管你使用什么技术)
  • 实现和技术特定的框架和技术
设计模式

Wikipedia是了解模式的好地方,StackOverflow也有很多很棒的内容

我开始着手解决所谓的问题,尽管它很有用,但我认为你会发现s、O、I和D领域最有价值

就模块化而言,依赖倒置(Dependency Inversion,简称“D”)将与您特别相关。通过一个接口创建一个“契约”,您可以创建一些其他方可以构建的东西——例如:他们可以将您的“默认”实现替换为他们已经创建的实现

特定技术

我不能专门谈论Java(虽然你应该很容易理解),但是.Net有一些专门为这类东西构建的框架,例如(MEF)


关键是,大多数技术栈将提供各种框架、工具和方法来构建模块化系统。

实现一个对您和第三方都很方便的接口。如果没有进一步的信息,我们无法知道。我正在研究你的答案,我真的很欣赏你的高质量响应,这正是我想要的响应类型。目前系统总体上是一个大泥球,但有些部分实现了策略、代理模式和使用控制反转的几个类。我关心的是每个部分的重构,重构像我这样的项目是个好主意吗?(200类,4个开发年,在生产中使用18个月)。我想修复它,将其发布到开源版本。一次重构一个部分是可以的。我建议列出你想做的所有因素——根据价值和努力对它们进行优先级排序,并确定相关性;这应该可以帮助你找到进行重构的最佳顺序:)非常感谢你提供的信息,我不知道SOLID的存在,我忘记了做重构列表。顺便说一句,我真的很喜欢你的3D/等轴测/对象化的Morpholia图。