繁体   English   中英

从REST API检索和缓存嵌套对象

[英]Retrieving and caching nested objects from a REST API

我有一系列嵌套对象,通过REST API公开,如下所示:

class Category
{
      int id;
      string name;
      List<Subcategory> subcategories;
}

class Subcategory
{
      int id;
      string name;
      List<Product> products;
}

class Product
{
     int id;
     string name;
     List<Model> models;
}

class Model
{
    int id;
    string name;
    Dictionary<string, string> metadata;
}

可以使用以下端点通过REST API访问这些对象

// get a list of categories
GET /categories 

// get a category                                   
GET /categories/:id

// Get subcategories for a product
GET /categories/:categoryId/subcategories

// Get a subcategory
GET //categories/:categoryId/:subcategoryId


//Get products under a subcategory
GET /categories/:categoryId/:subcategoryId/products

//Get a product
/categories/:categoryId/:subcategoryId/:productId

//Get models
/categories/:categoryId/:subcategoryId/:productId/models


Get a model under a product
/categories/:categoryId/:subcategoryId/:productId/:modelId

我在客户端使用什么设计模式设计数据访问层? 请注意,我的客户端只读取这些对象,它不会写入它们。 DAO? 库? 我两者之间有点困惑,不知道这里适用什么。

对于具有复杂行为的应用程序(通常是业务应用程序), 存储库是更好的选择,因为大多数情况下业务对象与其持久化的方式不同。

虽然存储库是一个概念,但它实现为DAO,至少从应用程序的角度来看。 事实上,用于处理存储的每个对象都是DAO,但Repository是一个专门的DAO。 它仅处理Business Objects,并充当其他低级DAO(例如ORM)的外观。

存储库集中了服务的访问逻辑,并为单元测试提供替换点。 调用服务通常很昂贵,并且可以从存储库中实现的缓存策略中受益。 MSDN上的存储库模式

MSDN上的Web服务存储库图

至于缓存,您可以:

  1. 缓存应用程序块:具有良好的抽象级别,配置简易性以及桌面加服务器端应用程序功能,即使在Enterprise Library 6中已弃用。
  2. ASP.NET丰富的缓存框架:( MSDN博客上的Grigori Melnik MSFT
  3. .NET Framework 4.0 System.Runtime.Caching类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM