.net GUI应用程序结构的想法

时间:2010-01-09 22:14:15

标签: vb.net user-interface design-patterns

我正在寻找一个关于如何构建VB.net GUI应用程序的策略。我有一个基本上是数据库接口的应用程序。它由带有6个选项卡的TabControl组成,每个选项卡都有一些自定义控件,并对数据库执行业务操作。

标签功能:

  1. 将XLS解析为SQL插入并提交到db

  2. 从数据库查询结果生成XLS

  3. 从数据库查询结果生成XLS

  4. 从数据库快速访问数据查找(写入日志框)

  5. 通过GUI表格手动修改数据库(插入/更新语句执行)

  6. 数据库连接设置

  7. 常用代码功能:

    1. 连接/断开数据库

    2. 执行非查询

    3. 执行查询

    4. 迭代查询结果

    5. 写入XLS

    6. 常见子查询(数据库提供程序不允许查看)

    7. 目前,我已经将大部分操作内置到GUI线程上的事件处理函数中。我想转向更面向对象的结构,以实现代码可重用性和更轻松的多线程。

      我正在努力解决一些设计问题:

      1. 哪些对象/类有意义?

      2. 是否有关于分离GUI和后端功能的行业标准最佳实践或设计模式?我应该阅读哪些特别好的文章?

      3. BackgroundWorker是执行后端功能的最佳方式吗?

      4. 谢谢 -

        乔纳森

1 个答案:

答案 0 :(得分:4)

  1. ......可能是一个很难回答的问题;抱歉。但是你可以通过传统的“寻找名词”技术做出合理的第一次传递。

  2. 对于Windows窗体,请查看Model-View-Controller or Model-View-Presenter。 (如果在未来的项目中使用WPF或Silverlight,则需要查看名为Model-View-ViewModel的替代模式,但这对WinForms来说效果不佳。)

  3. 是的,BackgroundWorker是WinForms后台任务的一个不错的选择,因为它提供了一种方便的方式来提供进度和完成通知。它确实有一些限制,但是通过Thread或ThreadPool进行显式线程可能在这里是多余的,并且只会导致额外的GUI反馈代码。因此,至少要将BackgroundWorker作为起点,并且只有在它开始让您感到痛苦时才考虑显式线程。