是否更好地在页面上执行数据访问操作,然后使用检索到的数据填充每个usercontrol的属性。
- 或 -
如果每个UC调用业务层并独立提取自己的数据而不必依赖页面,那会更好。
现有条件: 1.网页用于数据访问的任何信息(查询字符串,URL等)也可供各个UC使用。 2.两种解决方案都使用缓存。
我的同事坚持认为第一个选项更好,因为数据访问只在页面上发生一次。
第二个选项对我来说似乎更合乎逻辑,因为它允许我将UC放在另一个页面上而无需在页面本身上进行任何额外的连线。页面和UC真正解耦。
请告知为什么一个人比另一个好。
答案 0 :(得分:3)
在大多数情况下,第一种选择更好。
UserControl不是控制器而是页面。它应该显示不访问它的数据。该页面通常设置UserControl的属性。
其中一个目的是可重用性。如果与数据源硬连接,这将减少。它应该适用于任何类型的DAL,它根本不应该打扰它们。
但如果它的唯一目的是封装(例如,作为TabContainer的TabPanel中使用的容器控件),则UserControl是页面替换,因此也会进行数据访问和事件处理。你不会经常重复使用这种UserControl。
答案 1 :(得分:1)
你们两个都是对的。
如果您有任何计划重用用户控件,那么您应该在该控件中封装数据访问。
但是,如果页面上有多个用户控件,那么访问数据肯定会更有效。
我们在类似情况下经常做的是实现一个混合解决方案:用户控件托管在实现数据检索接口的页面上(它们从页面拉出)或者用户控件实现一个指示其类型的接口他们需要的数据(然后页面将数据推送到用户控件)。