2012-02-29 50 views
1

我正在创建一个数据访问层(DAL)来读取/修改存储在XML文件中的一些表。虽然我的应用程序运行时,这些表中的行是经常更新的,所以我想两个可能的选择:数据访问层应该隐藏哪些细节?

  1. 应用程序启动时,我可以通过DAL加载表中的所有数据,并把它们放在数据结构,如Dictionary。在应用程序运行时,该字典不断更新。当应用程序关闭时,我调用DAL的方法,以便用字典中的新数据覆盖旧文件。
  2. 将字典隐藏到上层可能会更正确,因此我可能在DAL中有一个Dictionary专用字段。通过这种方式,上层将调用DAL的方法来更新表的行。

也许第二种方法比第一种更好?

+1

读者是否总是需要最新的值?或者他们可以有一个“最终一致”的文件视图?另外,编写者是否正确锁定文件以防止读取半写入的数据? – 2012-02-29 22:42:04

+0

这是一个winforms应用程序?将XML数据存储在某个服务器上的多个应用程序副本可以同时访问吗? – NotMe 2012-02-29 22:44:14

+0

@ChrisShain:唯一的读者是应用程序本身,它是多线程的,所以不同的线程可以同时读取/写入表(和XML文件)。线程(即阅读器)需要具有最新的值。 – enzom83 2012-02-29 23:11:08

回答

1

这里的选项2更适合封装,但会增加复杂性。字典是一个实现细节,你的上层不应该关心。相反,您的数据访问层应该公开代表实际表的类 - 例如,您可能有Person类或Inventory类。作为DAL类,这些将提供适当的添加,删除,更新,检索等方法。

而且高达你有这从您的DAL类检索,将增加商业方法(例如Order可以由Person和影响Inventory进行连续运行的领域层 - 对这些域调用方法的行为类到达DAL实际触及底层数据)。

+0

通过这种方式,所有更新都会更新DAL中的字典,然后DAL可能会定期更新XML文件,而不是在每次更新行之后。 – enzom83 2012-03-01 00:07:08