我正在寻找一个关于如何构建VB.net GUI应用程序的策略。我有一个基本上是数据库接口的应用程序。它由带有6个选项卡的TabControl组成,每个选项卡都有一些自定义控件,并对数据库执行业务操作。
标签功能:
将XLS解析为SQL插入并提交到db
从数据库查询结果生成XLS
从数据库查询结果生成XLS
从数据库快速访问数据查找(写入日志框)
通过GUI表格手动修改数据库(插入/更新语句执行)
数据库连接设置
常用代码功能:
连接/断开数据库
执行非查询
执行查询
迭代查询结果
写入XLS
常见子查询(数据库提供程序不允许查看)
目前,我已经将大部分操作内置到GUI线程上的事件处理函数中。我想转向更面向对象的结构,以实现代码可重用性和更轻松的多线程。
我正在努力解决一些设计问题:
哪些对象/类有意义?
是否有关于分离GUI和后端功能的行业标准最佳实践或设计模式?我应该阅读哪些特别好的文章?
BackgroundWorker是执行后端功能的最佳方式吗?
谢谢 -
乔纳森
答案 0 :(得分:4)
......可能是一个很难回答的问题;抱歉。但是你可以通过传统的“寻找名词”技术做出合理的第一次传递。
对于Windows窗体,请查看Model-View-Controller or Model-View-Presenter。 (如果在未来的项目中使用WPF或Silverlight,则需要查看名为Model-View-ViewModel的替代模式,但这对WinForms来说效果不佳。)
是的,BackgroundWorker是WinForms后台任务的一个不错的选择,因为它提供了一种方便的方式来提供进度和完成通知。它确实有一些限制,但是通过Thread或ThreadPool进行显式线程可能在这里是多余的,并且只会导致额外的GUI反馈代码。因此,至少要将BackgroundWorker作为起点,并且只有在它开始让您感到痛苦时才考虑显式线程。