我正在尝试在我的POS系统中实现模块化,以允许第三方做一些模块/插件/附加组件。我已经开始实现一个SPI和一个API,我的问题是:访问数据库上的数据必须通过这种方式还是我需要提供一个服务?
在这一点上,您可能已经注意到,我在这方面几乎没有经验,所以这个主题中的任何建议都是很好的
编辑:更多信息。我的系统有一个用户系统,理论上是通过检查凭据来访问系统的任何部分,mysql数据库是用Java编写的。我的模块需要安全地访问数据库中的一些表,访问主菜单,我不知道我还能说什么,但我的问题更多的是抽象地需要一个api。
提前感谢
PS如果我的英语不好,我很抱歉
奥克塔维·鲁伊斯
发布于 2010-10-11 05:01:29
一般而言,软件系统(通常)被分成“层”(如用户界面(UI)、业务逻辑(BL)、数据访问层(DAL)等)。这些层还提供了与之集成的自然场所。所以..。
访问数据库中的数据必须通过这种方式,还是我需要提供服务?
根据您所说的,我认为其他系统应该通过服务或API进行集成。提供对数据库的直接访问意味着他们将绕过应该应用于他们想要执行的交互的业务逻辑。在你的特定情况下,这可能也意味着他们会绕过你的安全措施。
模块化
这包括两个部分:
帮助模块化系统(特别是关于维护和可扩展性)的
设计模式
维基百科是一个介绍模式的好地方,StackOverflow也有很多关于模式的很好的内容。
我将开始学习所谓的SOLID,尽管它都很有用,但我认为您会发现S、O、I和D领域最有价值。
就模块化而言,依赖反转( "D")将与您特别相关。通过接口创建“契约”,您可以创建其他各方可以在其上构建的东西-例如:他们可以将您的“默认”实现替换为他们已创建的实现。
特定于技术的
我不能专门为Java说话(尽管你应该很容易使用find out),但是.Net有几个专门为这类东西构建的框架,例如:Managed Extensibility Framework (MEF)。
重点是,大多数技术堆栈将提供各种框架、工具和方法来构建模块化系统。
https://stackoverflow.com/questions/3900630
复制相似问题