技术开发 频道

WCF中的REST架构

  这个操作使用LINQ to SQL到数据库获取一页产品信息。该实现返回一个包含ProductData类型的ProductGroupingData 类型。我这样做的原因在于我不仅需要返回产品信息(ProductData),还需要一些有助于分页的元数据(StartIndex, PageSizebut 和ProductGrouping的TotalCount)。 下面就是这些类型: 

[DataContract]
public class ProductData
{
[DataMember]
public int ProductId;
[DataMember]
public string ProductName;
[DataMember]
public string Description;
[DataMember]
public decimal Price;
[DataMember]
public string ProductImage;
}
[DataContract]
public class ProductGroupingData
{
[DataMember]
public List<ProductData> Products;
[DataMember]
public int StartIndex;
[DataMember]
public int PageSize;
[DataMember]
public int TotalCount = 0;
}


  以下是实现代码: 

[OperationContract]
public ProductGroupingData GetProductGrouping(int startIndex, int pageSize)
{
using (CatalogDataContext catalogCtx = new CatalogDataContext())
{
// Set up the query
var products = from p in catalogCtx.Products
orderby p.ProductName
select
new ProductData()
{
ProductId
= p.ProductId,
ProductName
= p.ProductName,
Description
= p.ProductDescription,
Price
= p.Price,
ProductImage
= p.ProductImage
};
// Use skip and take extension methods for server side paging  
// and call ToList to execute the query
var productColl = products.Skip(startIndex).Take(pageSize).ToList();
// Add the metadata  
var package = new ProductGroupingData()
{
Products
= productColl,
StartIndex
= startIndex,
PageSize
= pageSize,
TotalCount
= catalogCtx.Products.Count()
};
return package;
}

  到这里,我们已经创建好了一个支持AJAX的服务。一个服务支持AJAX,就是说该服务可以非常容易地被一个 AJAX 客户端调用。接下来的 WCF中的REST架构 三,我就讨论如何在客户端调用服务.

0
相关文章