运行单独进程的首选体系结构

时间:2014-01-20 11:53:00

标签: c# .net wpf architecture

我想知道以下情况的首选架构是什么:

我需要一个.NET应用程序,它将同时批量上传多个数据文件到SQL Server。这将从WPF应用程序调用,该应用程序将允许用户选择文件和目标表,以及报告每次上载的各个进度(包括错误消息)。我完全没有问题编写任何代码。但是,要求用户能够完全关闭WPF应用程序并继续上载过程。此外,如果用户从同一台计算机重新启动WPF应用程序,它应该能够处理现有上载并处理状态,就像程序从未关闭一样。

我的问题是实现这一目标的方法是什么,哪些似乎是最标准/最合适的?

我认为根本没有关闭WPF应用程序而是隐藏所有窗口,但这似乎是一个骗局。最好在上传发生的服务器上创建WCF服务,只需上传文件吗?我不认为我能做到这一点并报告进度%等。那么本地运行的Windows服务,我可以达到类似的效果吗?我应该考虑MemoryMappedFiles吗?

欣赏你的所有想法。

1 个答案:

答案 0 :(得分:1)

因为您正在讨论长时间运行的任务,所以我会使用本地Windows服务通过MSMQ与您的WPF应用程序进行通信。例如,要上载的每个文件可以由一个MSMQ消息表示。您的WPF应用程序将定期将消息放入队列和Windows服务,如果WPF正在运行,则不会产生任何影响,应该从队列和进程中获取它。这将提供简单可靠的提供任务(上传)的渠道。

要向其客户端(您的WPF应用程序)提供Windows服务的内部状态,我将在其内部托管一个WCF端点,其中包含简单的服务,例如,有关进度的信息。