从UI层分离数据?

时间:2012-10-05 13:30:03

标签: c# winforms design-patterns .net-4.0 data-access-layer

我想将data layerUI Layer完全分开。这是我的例子,我有一些客户需要不同的数据用于同一报告,我不想UI触及Data Layer,所以我假设我需要一些“东西” Data LayerUI。基本上,UI会调用一些“东西”,而“东西”会调用Data layer,然后data layer会根据用户检索数据并将其传递给“东西” “并且”事物“会将数据传回UI

我不知道这件事应该是什么?

我听过像Model这样的一些术语,使用了Object Mapper,但不确定它们是否相关。

2 个答案:

答案 0 :(得分:1)

您寻找的模式是MVC - 模型 - 控制器 - 视图。你需要的“东西”是控制器。通常代码就像这样组织

  • 调用控制器以获取报告
  • 访问数据层(或模型)并获取一个填充了数据的对象(可以是强类型对象,也可以只是地图)
  • 控制器调用视图,传递数据对象并获取渲染结果
  • 控制器将呈现的结果返回给客户端。

这应该足以让你入门。

MVC pattern in wikipedia

答案 1 :(得分:0)

你在谈论一个共同的架构:UI - >业务逻辑层(BLL) - >数据访问层(DLL)。现在,BLL和DAL可以包含在您的.exe中(您使用WinForms标记您的问题)或者可以是服务层/层的一部分,这是非常常见的。

通常,使用定义每个层(BLL和DLL)的接口是一种很好的做法。这将允许您更改图层的实现,而不会影响其消费者(通常),让您分离关注点,并促进测试。

BLL将包含您的逻辑,DAL将管理您的数据源。你提到了一个Model,它通常是指DAL通过BLL返回的对象。将其视为您的Person模型或Order模型。由于您的标记是Winforms,因此您可能需要调查MVP模式。