模块化系统架构
我试图在我的POS系统中实现模块化以允许第三方执行某种模块/插件/附加模块。我已经开始实现一个SPI和一个API,我的问题是:访问数据库上的数据必须这样,否则我需要提供一个服务?模块化系统架构
在这一点上,你可能已经注意到,我在这几年的经验,所以这个话题的任何建议是很好
编辑:阿多一点信息。我的系统有一个用户系统,通过理论检查凭据来访问系统的任何部分,mysql数据库,都是用Java编写的。我的模块安全地需要访问数据库中的某些表格,访问主菜单,我不知道我还能说什么,但我的问题更多地是关于如何api需要。
在此先感谢
PS很抱歉,如果我的英语不好
奥克塔维奥·鲁伊斯
一般而言,软件系统(通常)分成“层”(如用户界面(UI),业务逻辑(BL),数据访问层(DAL)等)。这些图层还提供了自然的地方进行整合。所以......
的访问数据的数据库具有 是通过这种方式或者我需要提供 服务?
从你说过的话我会认为其他系统应该通过服务或API进行集成。直接访问数据库意味着他们将旁观适用于他们想要执行的交互的业务逻辑。在你的具体情况下,这可能也意味着他们会采取安全措施。
模块化
有两个部分,以这样的:
- 建筑风格和设计模式,其有助于模块化系统(specifcially关于维护和可扩展性);这些都是技术不可知的(不管你使用的是什么技术)。
- 实现和技术特定的框架和技术。
设计模式
维基百科是一个伟大的地方得到的引入模式和StackOverflow上有很多他们身边伟大的内容太多。
我开始用getitng来处理所谓的SOLID,尽管它很有用,我认为你会发现S,O,I和D区域的最大价值。就模块性而言,依赖性倒置(“D”)将与您特别相关。通过界面创建“合同”,您可以创建其他各方可以构建的内容 - 例如:他们可以将您的“默认”实施与他们所做的一样。
特定技术
我不能为Java专门讲(虽然它应该很容易为你find out),但净有专门为这种事情,比如建几个框架: Managed Extensibility Framework(MEF)。
问题是,大多数技术堆栈将为构建模块化系统提供各种框架,工具和方法。
我正在研究你的答案,我非常感谢你的高质量回应,并且只是我想要的回应类型。 – ZooMMX 2010-10-11 14:33:16
目前系统通常是一大块泥土,但是一些部分使用控制反转来实现战略代理模式和几个类。我关心的是每个部分的重构部分,重构像我这样的项目是一个好主意吗? (200班,4个发展年,生产18个月)。我想修复它以发布它的开源代码。 – ZooMMX 2010-10-11 14:45:26
一次重构一部分就没有问题。我建议列出你想要做的所有优化因素 - 优先考虑它们的价值和努力,并且确定依赖关系;这应该可以帮助你制定出重构的最佳顺序:) – 2010-10-11 21:28:52
实现一个方便您和第三方的界面。我们不知道没有进一步的信息。 – 2010-10-10 14:18:11