我有一个桌面客户端,它通过ASP.NET Web API检查服务器上的新内容,并将其保存在本地。比如电子邮件客户端。
但是我不知道具体什么是实现这一点的最佳方式,我的意思是我应该有一个控制器来检查是否有新的内容,然后客户端调用另一个控制器来下载它,或者什么?
欢迎提供任何线索。
大多数人使用轮询方法,通过这种方法,应用程序传递上次系统检查更新时的日期或标识符,然后将任何新的更新流到桌面客户端。您所需要做的就是调用一个方法,该方法检查数据库中截至特定时间的更新,流式处理新的更新,然后将新的更新添加到结果集中(或刷新整个结果)。
public class UpdatesController : ApiController
{
public object Get(long millisecondsAsOf)
{
//Query from DB, return results, or return true/false if there are new records.
}
}
这里描述了从Web Api控制器返回http状态代码的restful方法。您需要将上次更新的时间输入到您的控制器方法中,使用该时间来检查在该日期内是否进行了更改,如果没有更改,则返回http状态代码304 Not Modified并省略响应;但是,如果它已经改变,发送资源正常与200 OK。
就我个人而言,我会对上面提到的方法进行一点修改,通过http头和ETag来管理最后一次更新。更多信息请看这里。