更新DataSet - 在哪个层?

时间:2012-05-16 07:16:36

标签: architecture dataset 3-tier

我尝试构建3层应用程序。在DAL我从databaseNo-SQL)到DataSets获取数据。 在BLL中,如果有必要,我会处理此数据。在PL中,我显示了适当的数据。

问题是: 如果database中的数据仍在更新,并且我需要立即获得最新的“行”,我是否应该使用某个计时器或其他地方更新DataSet中的BLL

1 个答案:

答案 0 :(得分:1)

当您说“一次”时,我必须假设您的应用程序非常渴望数据...因为您应该在DLL和BLL之间使用第4层并调用高速缓存

因为你需要快速的东西,而且对于快速的东西,你永远不会一遍又一遍地调用数据库,你调用一次,当有更新时,你清除该实体上的缓存,下次你的BLL询问数据,缓存为空,因此它传递给DAL以检索一组新记录,并将其放入缓存中以进行下一次调用。

要对更新保持警惕,您可以使用自己的通知系统,或者简单实现INotifyCollectionChanged界面......

如果您不想解决所有这些问题,当您发送要更改的新行时,您已经拥有了数据,您可以轻松地将其添加到网格(或您正在使用的任何集合对象)中简单

DataTable dt = bll.ListAllEmployeesByCompanyId( 2 );
dt.Rows.Insert(0, myNewRow);
gv.DataSource = dt;

您可以通过在该网格中创建一个顶部边框并使其变为黄色(因为数据不是来自数据库)并在数据来自数据库时将其变为浅绿色(以及所有数据),轻松创建一个漂亮的UX是同步的)...

这完全取决于您的策略,它始终是我们开发的每个软件的唯一问题:

  

用户是否真的关心 awesome 功能?

因为,我们开发人员倾向于承担很多,有时候,你会错误地假设:)