请告诉我在Windows窗体项目中使用的体系结构

时间:2010-11-09 08:37:25

标签: c# winforms architecture

我想要一个架构让我的UI与数据库进行交互,而无需为UI编写多余的代码......即。背后的代码......

5 个答案:

答案 0 :(得分:3)

使用业务对象/用户界面/业务逻辑/数据访问架构。

BO------UI
|       |
--------BL
|       |
--------DA

答案 1 :(得分:2)

一个起点是定义一些简单的经验法则。一个好的经验法则是在Form类中使用尽可能少的代码。 Form类中的所有代码都应该是基本的UI映射。

我个人喜欢使用DAO pattern来组织我的数据库访问逻辑。这种模式巧妙地封装了代码访问和访问。存储数据,因此可以轻松切换和更改。根据数据库的复杂程度,我通常每个表有1个DAO,但对于简单的数据库,每个数据库甚至可能只有1个DAO。

MVC也是一种分离演示和其他逻辑的流行方式,但对于一个简单的项目可能有点过分。 Use cases也是一种封装逻辑并将其从表单中分离出来的好方法。

基本框架的外观示例,请参见下文(注意:不完整!阅读完整的DAO文章以正确实现它)。这段代码的目的是为了表明Form类中没有数据库逻辑,当单击按钮(或者其他什么)将UI映射到动作时,它是一个简单的单线程。如果您决定从数据库存储交换到文件存储,那么编写FileMyDAO : IMyDAO类并让工厂返回此类并不困难。请注意,如果您这样做,UI代码都不会改变!

public interface IMyDAO
{
  void InsertData(int data);
}

public class SqlMyDAO : IMyDAO
{
  public void InsertData(int data) { throw new NotImplementedException(); }
}

public class DAOFactory
{
  public static IMyDAO GetMyDAO() { return new SqlMyDAO(); }
}

public class MyForm : Form
{
  private void Button_Click(object sender, EventArgs e)
  {
    DAOFactory.GetMyDAO().InsertData(123);
  }
}

答案 2 :(得分:1)

Data Binding是你应该研究的东西。这将引导您进行更多的学习,但您一定会了解您需要的人员。

答案 3 :(得分:0)

伙计你可以使用原始架构:

BusinessObjects Layer BusinessLogicLayer 数据访问层 UILayer

答案 4 :(得分:0)

已经开发了等待使用的免费架构框架..检查..

Nido framework - 更灵活,但仅适用于您的后端架构

Rocket framework