我正在尝试在我的POS系统中实现模块化,以允许第三方执行某种模块/插件/添加。我已经开始实现SPI和API,我的问题是:访问数据库上的数据必须是这样的,还是我需要提供服务?
此时你可能已经注意到我在这方面的经验很少,所以这个主题的任何建议都很好
编辑:更多信息。我的系统有一个用户系统理论上检查凭据来访问系统的任何部分,mysql数据库是用Java编写的。我的模块安全地需要访问数据库中的一些表,访问主菜单,我不知道我还能说什么,但我的问题更多的是关于api需要如何抽象。
提前致谢
PS对不起,如果我的英语不好
Octavio Ruiz
答案 0 :(得分:2)
一般而言,软件系统(通常)被分解为“层”(例如用户界面(UI),业务逻辑(BL),数据访问层(DAL)等)。这些层也提供了与之融合的自然场所。所以......
访问数据库上的数据了 通过这种方式或我需要提供 服务?
根据您的说法,我认为其他系统应该通过服务或API进行集成。直接访问数据库意味着他们将侧重于应该应用于他们想要执行的交互的业务逻辑。在您的具体情况下,这可能也意味着他们会采取安全措施。
<强>模块化强>
这有两个部分:
设计模式
维基百科是一个了解模式的好地方,StackOverflow也有很多很棒的内容。
我开始尝试使用所谓的SOLID,尽管它有用但我认为你会找到最有价值的S,O,I和D区域。
依赖于模块化,依赖性反转(“D”)将与您特别相关。通过界面创建“合同”,您可以创建其他方可以构建的内容 - 例如:他们可以将您的“默认”实现换成他们所做的。
特定技术
我不能专门针对Java说话(虽然你应该很容易find out)但是.Net有一些专门为这类事情构建的框架,例如:{{3} (MEF)。
关键是大多数技术堆栈将提供构建模块化系统的各种框架,工具和方法。