asp.net-mvc – 通过WCF服务实现寻呼机

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 通过WCF服务实现寻呼机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个包含WCF服务和ASP.NET MVC客户端的应用程序. ASP.NET MVC网站必须显示一个对象网格 – 比如产品.这些产品存储在可通过WCF服务访问的数据库中.所以在MVC控制器的某个地方,我调用WCF服务的方法,返回我需要显示的一系列产品.

那么我的问题是什么?我想为我的产品网格实现寻呼机功能,因为可能会有很多产品.所以有几种方法可以做到这一点:

>我的控制器可以获取整个产品列表,只需进行内存分页
> WCF可以选择所有产品并将其存储在其缓存中的某个位置,然后根据请求的页码传给控制器只有其中的一部分.
> WCF可以根据请求的页码数据库中只选择部分产品.
> WCF可以将IQueryable返回给控制器,然后控制器将根据需要选择任何他想要的内容.

据我所知(如果不正确,请纠正我),第一个选择是无用的,所以我必须选择其他人.

第二个选项浪费我的服务器内存.

第三个选项是OK,但在WCF端实现分页似乎有点丑.

第四个选项听起来很混乱.我实际上向客户端传递某种查询,然后他自己通过WCF服务查询我的数据库.我无法弄清楚如何正确实现.

那么可以请帮我选择正确的方法来实现吗?

解决方法

你的后端数据库层是什么样的?如果您使用LINQ(to-sql或-to-Entities),则可以通过指定页面大小和所需的页码来实现WCF的分页,然后使用LINQ的“Skip”和“Take”运算符获取请求的页面 – 大致如下:
[ServiceContract]
public interface IFetchData
{
  [OperationContract]
  public List<Data> GetData(int pageSize,int pageNumber)
}

然后实现它这样(简化):

public class FetchDataService : IFetchData
{
  public List<Data> GetData(int pageSize,int pageNumber)
  {
      var query = yourContext.DataTable
                    .Skip((pageNumber - 1) * pageSize)
                    .Take(pageSize);

      return query.ToList();
  }
}

这对你有帮助吗?

渣子

猜你在找的asp.Net相关文章