如何检查客户端是否接收到所有数据?

本文关键字:数据 是否 何检查 检查 客户端 | 更新日期: 2023-09-27 17:53:56

对于我正在做的一个项目,我必须用c# asp.net web api 2创建一个web服务。现在,我有一个基本的web服务,当客户端调用该服务时,它返回json。这是我的文件:

ProductController

public class ProductController : ApiController
    {
        public List<Dictionary<string, object>> Get()
        {
            ProductRepository er = new ProductRepository();
            return getDataRows(er.getModifiedProducts());
        }

        private List<Dictionary<string, object>> getDataRows(DataTable dt)
        {
            List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
            Dictionary<string, object> row;
            foreach (DataRow dr in dt.Rows)
            {
                row = new Dictionary<string, object>();
                foreach (DataColumn col in dt.Columns)
                {
                    string output = Regex.Replace(Convert.ToString(col.ColumnName), "[.]", "''.");
                    row.Add(output, Convert.ToString(dr[col]));
                }
                rows.Add(row);
            }
            return rows;
        }
    }

当客户端调用服务时,它将获得所有修改过的产品。当客户端接收到所有数据时,我希望更新产品状态,以便当客户端进行第二次调用时,不再发送第一次调用的产品。在服务进行更新之前,它必须确保客户端已经接收到完整的数据集。我在想一个有回调的东西,但我不知道从哪里开始。你能给我一些建议吗?

如何检查客户端是否接收到所有数据?

我不知道您在服务器端更新状态是什么意思。看起来您只需要它在下一次服务调用中向客户机发送新产品(不管这意味着什么)。这违反了Web API无状态的通用模式。有关有状态服务的更多信息,以及如何实现它,以及为什么不应该这样做,请参阅以下问题:我们可以使Restful web服务有状态吗?和ASP。NET Web API会话之类的?

在每个请求中包含已下载到客户机的产品的密钥列表将是一个更好的解决方案,以便服务器知道哪些不应在响应中发送。我不知道你的问题的细节,但是也许,如果新产品有一个增量id,一个更新的日期,或者类似的东西,你只需要发送一条信息,这样服务器就知道要发送什么给客户端。