3

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

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

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

提前致谢

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

奥克塔维奥·鲁伊斯

4

1 回答 1

2

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

必须通过这种方式访问​​数据库上的数据还是我需要提供服务?

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

模块化

这有两个部分:

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

设计模式

Wikipedia 是介绍模式的好地方,StackOverflow 也有很多很棒的内容。

我开始着手掌握所谓的SOLID,尽管它都很有用,但我认为您会发现 S、O、I 和 D 领域最有价值。

就模块化而言,依赖倒置(“D”)将与您特别相关。通过接口创建“合同”,您可以创建其他各方可以构建的东西 - 例如:他们可以将您的“默认”实现替换为他们制作的实现。

特定技术

我不能专门针对 Java 说话(尽管您应该很容易找到它),但 .Net 有一些专门为此类事物构建的框架,例如:托管可扩展性框架(MEF)。

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

于 2010-10-10T21:01:28.677 回答