【发布时间】:2011-01-18 09:53:12
【问题描述】:
我正在处理一个 ASP.NET WebForms 项目,我们需要能够根据当前用户的“组”配置整个应用程序的行为。这适用于应用程序的几乎所有方面,包括站点导航、在页面上显示/隐藏某些用户控件以及在某些情况下执行自定义业务逻辑。但是,绝大多数应用程序行为是在组之间共享的,因此我们排除了创建完全独立的应用程序的想法。
本质上,我正在寻找一种在 ASP.NET WebForms 应用程序中实现自定义行为的架构方法。有没有比在视图层、业务层和持久层的代码库中散布 if/else 语句更好的方法?
编辑:一些例子:
如果 A 组中的用户,他们的 导航将包括所有 B组导航加上一些 其他链接。
如果用户在 A 组中,页面将 显示用户控件 c1、c2 和 c3。 如果用户在 B 组,他们将 只能在同一页面上看到 c1 和 c3。
如果用户在表单上保存一些数据 他们在 A 组,发送一个 通知电子邮件。如果用户是 在 B 组中,发送短信
我们可以解决所有这些特定问题,但正在寻找一种方法来尽可能地封装这种行为,以免它分散在代码库中。
编辑:有一些与动态加载用户控件相关的有趣答案。是否应该将根据用户组确定要加载哪些控件或使用哪些行为的逻辑封装在一个(非内聚的)类中,例如:
GroupManager.GetNavigationControl(int groupId) // loads site nav control based on group
GroupManager.PerformNotification(int groupId) // sends text or email based on group
或者这个逻辑是否应该尽可能靠近代码中使用它的位置,从而分布在代码库的不同层?
【问题讨论】:
-
也许您可以更详细地说明
behavior的含义
标签: asp.net architecture webforms