【问题标题】:Designing Multi-Tier application to use progress bar设计多层应用程序以使用进度条
【发布时间】:2010-12-13 03:27:47
【问题描述】:
我在 c# 中有一个多层应用程序,它应该在数据库上执行任务(如果第一次使用,我们可能会创建数据库并用一些数据填充它)。当我最初设计应用程序时,我没有考虑可能的进度条控件,更不用说任何形式的进度报告了。如何修改应用程序的设计以便能够向 UI 层报告数据库操作进度?有没有一种可重复使用的解决方案,并且不会强迫我修改我的所有函数以获取额外的报告输入?
【问题讨论】:
标签:
c#
progress-bar
multi-tier
【解决方案1】:
正如格雷格所说,前面还有很多工作要做。然而,有很多方法可以解决这个问题,最适合您的方法取决于已经从客户端传递到应用程序/数据库层的上下文信息。例如,如果会话令牌或事务标识符在执行查询/事务的正常过程中从客户端传递到应用程序,或者从应用程序异步传回客户端的确认引用,那么对于那些查询/事务,进度报告是必要的,您可以让应用程序更新客户端可以查询的状态表。这可以减少所需的返工量。基本上,您需要考虑已经到位的“中间件”,看看是否可以利用其中任何一个来关联跨层的事务。
【解决方案3】:
您可以修改服务器代码,使其在服务器端更新进度信息(不更改函数签名),然后有一个单独的方法可以单独查询此信息。
这将允许您改进对进度的支持,而不会对您对服务器的现有调用产生任何影响,只需在 UI 上添加一个新的后台线程,以便在长时间运行的任务正在进行时检查更新的进度信息。
编辑:我想同样的方法也适用于客户端中发生的任务。不过,这里也可以使用静态进度指示器类。