2009-09-29 71 views
0

我有一个vb.net 2.0 winforms项目,它充满了各种可以运行的业务报告(通过Excel interop调用生成)“on -需求”。其中一些报告通过大量数据进行过滤,并花费很长时间才能运行 - 尤其是在办公室的老旧机器上。如何设计来自客户端机器的报告请求以在可用服务器上运行

我想要一个系统,可以从客户端机器发出报告请求,一些监听者看到它,找到低负载的服务器,在该服务器上运行报告,并将结果通过电子邮件发送给请求它的用户。

我该如何设计这样的改变?我们所有的报告都采用不同的参数,我似乎无法弄清楚如何处理这个问题。每个生成器是否需要继承这个工作的“RemoteReport”类?我是否需要在我们的一台服务器上使用服务来收听这些请求?

回答

3

您可以采取的一种方法是创建一个客户端可以连接到的数据库,并让客户端添加一个表示报告请求的记录,包括可以在xml字段中传递的必要参数。

然后,您可以定期检查此数据库以查找新请求,并根据当前正在处理的其他请求数量,将请求提交给最不忙的服务器。

然后服务器将能够运行报告并将文件通过电子邮件发送给用户。

这绝不是一个快速解决方案,可能需要一些时间来设计各种元素并让它们一起工作,但这不是不可能的,特别是考虑到它可以很好地扩展(增加更多可用/更强大的服务器)。

我开发了一个类似的系统,用户可以从Web界面提交数据请求,该请求将由请求管理器服务提取,该请求管理器服务将根据请求类型将请求委托给适当的服务器,为客户提供进度指示。

+0

该问题的良好解决方案设计 – NotMe 2009-09-29 14:38:19

+0

这听起来像是我看到为我们工作的那种东西。我看到的最大问题是,我们有各种各样的参数传入实际的报告生成器 - 包括数组列表。如何将这种数据保存到数据库“参数”列? – Jeffrey 2009-09-29 14:40:14

+0

如果您使用的是SQL Server,那么存在一种名为XML的数据类型,如果您使用的是VB.NET,则应该能够将报表参数封装到一个对象中,然后将其序列化并将其弹出到该列中 – 2009-09-29 14:43:06

0

如何编写接受报告请求的Web服务?完成后,报告可以通过电子邮件发送给用户。 Web服务可以提供一个Status方法,允许您的WinForms应用程序询问报告请求的当前状态。

相关问题