3

我已经使用 2 个静态数组(用于角色和资源)实现了一个访问控制列表,但是我在数据库中添加了一个新表来获取权限。

为角色使用静态数组的想法是我们不会一直创建新角色,因此数据不会一直更改。我对资源也是这么想的,也是因为我认为资源是只有开发人员才应该处理的东西,因为它们与代码的关系比与数据的关系更大。您知道为什么要使用静态数组而不是数据库表吗?什么时候/为什么?

4

5 回答 5

2

将值硬编码到代码中的问题在于,与数据库更改相比,代码更改要昂贵得多

  • 通常需要新建一个包来部署。该软件包需要进行回归测试,以验证没有引入任何错误。提示:即使您只更改了一行代码,回归测试也是必要的,以验证构建过程中没有出现任何问题(例如,未正确打包库导致模块失败)。

  • 更新代码可能意味着停机,这也会增加风险,因为如果更新失败怎么办,总是存在这种风险

  • 在企业环境中,批准数据库更新通常比更改代码要快得多。

所有这些都需要时间/精力/金钱。请注意,在我看来,在数据库中保存参考数据或静态数据并不意味着会影响性能,因为数据始终可以被缓存。

于 2012-07-27T11:40:38.350 回答
1

您的静态数组是将数据“硬编码”到程序中的一个示例,如果您永远不想更改它,这很好。

根据我的经验,对于您的用例来说,这永远不会是真的,并且将您的数据硬编码到您的源中将导致您不断被要求更新那些您认为永远不会改变的东西。

Protip:对于项目经理和/或客户来说,没有什么是一成不变的。

于 2012-07-27T11:20:15.943 回答
1

我认为这归结为您认为数据库将来将如何使用。如果您将数据保留在数组中,然后想要创建另一个与该数据库交互的应用程序,您将开始必须在两个代码库中维护角色/资源数据。但是,如果您将角色/资源放入数据库,则数据库将是它们的唯一权限。

我建议将它们放入数据库中。您可以在启动时将表读入数组,您将获得相同的性能优势以及让其他应用程序能够获取此信息的灵活性。

此外,当/如果您开始编写用户管理系统时,通过加入表格来显示用户的角色/资源比取回角色/资源 ID 并且必须在你的数组。

于 2012-07-27T11:22:09.950 回答
1

使用静态数组可以获得性能,考虑到你不需要一直访问数据库,但是安全比性能更重要,所以我建议你在数据库中做权限控制。

研究 RBAC。

于 2012-07-27T11:25:23.523 回答
0

被认为是静态的事物应该被编码为静态的。也就是说,如果您真的认为它们是静态的。

但我建议使用类常量而不是静态数组值。

于 2012-07-27T11:22:14.477 回答