我们怎样才能在wcf中处理这种情况

时间:2011-11-23 04:31:39

标签: wcf wcf-ria-services

任何机构都可以帮助我

  1. 我的WCF服务工作正常 wcf具有数据库锥度数据库,具有100条记录 当客户端请求记录时,WCF服务从数据库中获取记录,这些记录必须提交给客户端系统。
  2. 当客户端发出记录请求时,它适用于10-20条记录,但由于客户端和WCF服务之间的巨大流量,服务不提供服务而获取记录100。
  3. 我们如何在WCF中处理这种情况?

1 个答案:

答案 0 :(得分:2)

如果它引发了邮件大小过大的异常,您可以查看此问题中列出的一些选项:Setting Max Message and buffer size for WCF webhttp

100条记录是您的服务返回的最大值吗?如果它只是增长和增长,我不建议改变消息大小。相反,你应该考虑某种分页机制,所以如果你有一个看起来像这样的方法:

IEnumerable<Record> GetRecords()

制作:

Response GetRecords(index)

然后响应看起来像这样:

[DataContract]
public class Response
{
    [DataMember]
    IEnumerable<Record> Records { get; set; }

    [DataMember}
    bool IsLast { get; set; }

    [DataMember]
    int PageIndex { get; set }
}

然后你会从客户端这样称呼它:

Response resp;
int pageIndex = 0;
do
{
    resp = service.GetRecords(pageIndex);
    // use resp.Records here - could just build a bigger list with them all in
    // and use it after the loop or if your client can handle chunks, just use it
    pageIndex = resp.PageIndex + 1;
} while(!resp.IsLast);

不是最复杂的分页,但它可以让你有机会开始。