【问题标题】:Please tell me a architecture to use in a Windows Form project请告诉我在 Windows 窗体项目中使用的体系结构
【发布时间】:2019-01-16 14:32:12
【问题描述】:

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

【问题讨论】:

  • 从提到“代码背后”,我们应该假设这是网络表单吗?请注意,这是一个非常广泛的问题...
  • 您在寻找什么?模型视图控制器? MVP?被动视图?
  • 不只是简单的窗体...

标签: c# winforms architecture


【解决方案1】:

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

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

【讨论】:

    【解决方案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);
      }
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        哥们,你可以使用 premitive 架构:

        业务对象层 业务逻辑层 数据访问层 UILayer

        【讨论】:

          【解决方案5】:

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

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

          Rocket framework

          【讨论】:

            猜你喜欢
            • 2011-05-16
            • 1970-01-01
            • 1970-01-01
            • 2022-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多