如何从WCF服务中获取逐段数据



我创建了一个.Net应用程序,它允许查询一些web服务器的IIS日志。该应用程序调用WCF服务以获取数据。WCF服务位置已放置IIS日志。WCF服务在内部调用IIS日志文件上的Logparser并返回结果。存在多个IIS日志文件。如果我一次对所有这些文件运行logparser,则需要花费大量时间才能返回,因为大约有30个巨大的IIS日志文件被查询。我想对这些IIS日志中的每一个逐一运行logparser,并逐个返回结果。

我正在寻找一个框架,它可以在WCF上工作,并允许从WCF服务中逐段检索数据。所以我想得到IISlogfile1的结果,然后是IISlogfile 2的结果,依此类推。否则,UI将不得不等待很长时间才能一次性获得完整的结果。

您知道任何现有的框架允许从WCF服务中逐部分检索数据吗?

PS:我的解决方法是多次调用该服务,每个IIS日志文件一次,直到它响应所有数据都已发送。但我正在寻找一个更清洁的解决方案。

这个问题似乎与您的场景非常相关,看看Steven Cheng的回答是否对您有帮助。他回答的要点是,您可以尝试Duplex服务,在该服务中,服务器可以在完成对每个日志文件的处理时调用客户端。

编辑:

还可以查看SignalR框架,以在服务器和客户端之间建立持久连接,这样您就可以在服务器完成处理通知时从服务器发送通知(在您的案例中是日志文件)。这里有一个例子。

Souvik basu井,

我不确定这是否有帮助,但你可以这样做。

首先调用WCF服务以获取您拥有的文件数。

然后在循环中,您用文件名调用WCF服务,并用gridview+jqgrid或一些异步调用magic将它们绑定。

通过这种方式,你可以异步地在上进行进度和显示数据,并且你的延迟会更小。WCF服务的负载也将减少。

希望我把我的观点说清楚。

最新更新