我正在使用.NET 3.5上的ServiceStack库开发一个API服务器(对我来说是一种全新的体验),旨在由Windows Forms胖客户端应用程序访问。当用户单击导致向服务器发出REST请求的按钮时,我想显示一个显示RPC调用进度的进度条。
我的服务通常遵循以下模式之一:
(number of objects received so far) / (total number of objects requested)
(number of bytes received so far) / (Content-Length of the HTTP response)
在这两种情况下,这些列表可能会很长,因此我希望它们需要花费大量时间通过网络发送。
有没有办法使用ServiceStack的JsonServiceClient
,XmlServiceClient
或ServiceClientBase
的任何子类来完成此操作?如果没有,那么在没有太多额外工作的情况下完成我想要的东西会是什么好方法?我知道我可以从头开始编写自己的REST客户端实现,但如果可以,我宁愿避免这样做。
答案 0 :(得分:1)
一种方法是查看ServiceStack提供的pub / sub。您可以提交初始请求并返回相关标识符。那么你希望胖客户端订阅一个事件。该事件可以包含客户端计算进度的数据。
答案 1 :(得分:1)
您无法使用当前未公开任何方式的ServiceStack's service clients来点击网址下载以报告进度条。
我建议使用HTTP Client that does support progress updates下载json字符串。要从ServiceStack服务获取JSON,您可以使用Accept: application/json
HTTP标头或将?format = json 附加到QueryString。
下载完JSON字符串后,将其完全转换为DTO:
var json = ...; //download with progress
var dto = json.FromJson<MyDto>();