【问题标题】:Modular system architecture模块化系统架构
【发布时间】:2011-04-23 11:20:21
【问题描述】:

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

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

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

提前致谢

如果我的英语不好,请见谅

奥克塔维奥·鲁伊斯

【问题讨论】:

  • 实现一个方便你和第三者的界面。如果没有更多信息,我们无法得知。

标签: architecture modular


【解决方案1】:

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

对数据库中数据的访问权限 通过这种方式或者我需要提供 服务?

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

模块化

这有两个部分:

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

设计模式

Wikipedia 是介绍模式的好地方,StackOverflow 也有很多关于它们的精彩内容。

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

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

特定技术

我不能专门针对 Java 说话(尽管 find out 对您来说应该很容易),但 .Net 有一些专门为此类事物构建的框架,例如:Managed Extensibility Framework (MEF) .

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

【讨论】:

  • 我正在研究您的回答,非常感谢您的高质量回复,这正是我想要的回复类型。
  • 目前系统总体上是一个大泥球,但有些部分实现了战略、代理模式和几个使用控制反转的类。我关心的是每个部分都重构,重构像我这样的项目是个好主意吗? (200 个课程,4 个开发年限,在生产中使用 18 个月)。我想修复它以将其发布为开源。
  • 一次重构一个部分是可以的。我建议列出你想要做的所有重构——优先考虑它们的价值和努力,并确定依赖关系;这应该可以帮助您确定进行重构的最佳顺序:)
  • 非常感谢您提供的信息,我不知道 SOLID 的存在,我忘了做一个重构列表。顺便说一句,我真的很喜欢你的 morphfolia 的 3D/等距/物化图。
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 2010-12-17
  • 2016-04-26
  • 1970-01-01
  • 2022-08-20
  • 2016-07-24
相关资源
最近更新 更多