【发布时间】:2013-11-02 03:49:35
【问题描述】:
假设有一个包含以下模块的 ERP 系统:
- 人员
- 考勤和考勤
- 工资单
- 社会关怀
- 培训
此 ERP 系统是使用 ASP .NET Web 表单(DAL、BLL、BVL、GUI)的分层架构构建的。后端是 SQL Server,通过 EF 访问。有一个数据库保存所有模块的所有表,并且这些表中有很多是相互关联的。所有模块都有一个 GUI 项目。但是每个模块都放在一个单独的文件夹中。
我的目标是创建具有不同模块的不同版本。例如(人事+考勤+工资),或(人事+工资+社会关怀)等。
问题是:是否有实现这一目标的指南或最佳实践?如何维护已发布的代码,如何隔离不需要的DB表?
【问题讨论】:
-
你有登录系统吗?从您的问题来看,似乎每个版本都有自己的一组模块?第 1 版将包含人事、时间/出勤和工资单模块,而第 2 版将包含人事、工资单和社会关怀模块?您如何确定使用哪个版本?您是否使用版本作为修订?设计某种登录系统,然后根据用户权限来决定显示哪个模块不是更简单吗?
-
Starter:数据库方面,我会创建模式来封装不同的功能。这样一来,您就可以将它们放在一个数据库中,但要分开,并且可以准确地知道何时跨越这些界限。
-
@Brandon J 已经有一个登录系统。目前我用它来允许/拒绝对特定模块的访问。问题是,安全配置都存储在数据库中,因此任何可以访问数据库服务器的人都可以根据自己的意愿授予自己访问所有模块的权限。
-
如果您只关心许可问题,您可以加密 db 中的配置(即 UserLicenses 表,其中将有用户 ID 和用户有权访问的模块的加密列表)。
-
听起来你的系统已经可以工作了。如果现在的安全问题是“某些数据库管理员可能会做他们不应该做的事情”,那么您会通过“几个版本”计划消除这种担忧吗?
标签: c# asp.net sql-server architecture module