我尝试构建 3 层应用程序。在DAL
我从database
( No-SQL
) 到DataSets
. 如果BLL
有必要,我会处理这些数据。在PL
我显示适当的数据。
问题是:如果数据database
仍在更新,并且我需要立即拥有最新的“行”,我应该DataSet
使用BLL
某个计时器还是其他地方进行更新?
我尝试构建 3 层应用程序。在DAL
我从database
( No-SQL
) 到DataSets
. 如果BLL
有必要,我会处理这些数据。在PL
我显示适当的数据。
问题是:如果数据database
仍在更新,并且我需要立即拥有最新的“行”,我应该DataSet
使用BLL
某个计时器还是其他地方进行更新?
当您说“立即”时,我必须假设您的应用程序非常渴望数据……为此,您应该在 DLL 和 BLL 之间使用第四层并称为Cache。
因为它接缝你想要快速的事情,并且为了快速的事情,你永远不会一遍又一遍地调用数据库,你调用一次,当有更新时,你清除该实体上的缓存,下次你的 BLL 询问数据时,缓存是空的,因此它传递给 DAL 以检索一组新记录,并将其放入缓存中以供下次调用。
要警惕更新,您可以制作自己的通知系统,或简单地实现INotifyCollectionChanged
界面...
如果您不想麻烦,当您发送要更改的新行时,您已经有了数据,您可以轻松地将其添加到网格(或您正在使用的任何集合对象)中
DataTable dt = bll.ListAllEmployeesByCompanyId( 2 );
dt.Rows.Insert(0, myNewRow);
gv.DataSource = dt;
您可以通过在该网格中制作一个顶部边框并将其设为黄色(因为数据不是来自数据库)轻松创建一个漂亮的用户体验,并在数据全部来自数据库时将其变为浅绿色(并且所有内容都是同步的) ...
这完全取决于您的策略,始终取决于我们开发的每个软件的唯一问题:
用户真的关心这个很棒的功能吗?
因为,我们开发人员倾向于假设很多,有时,您确实假设错误:)