2015-02-19 2 views
0

У меня есть ряд вложенных объектов, подвергаются над 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? Repository? Я немного смущен между ними, не уверен, что будет применимо здесь.

+0

потому что ваш клиент обращается к этим объектам через RESTful api, почему бы не воспользоваться кешированием HTTP? – swazza85

ответ

0

Для приложений со сложным поведением, обычно бизнес-приложениями, the Repository is a better choice, поскольку в большинстве случаев бизнес-объект отличается от того, как он сохраняется.

Хотя репозиторий представляет собой концепцию, он реализован как DAO, по крайней мере, с точки зрения приложения. Фактически каждый объект, используемый для работы с хранилищем, является DAO, но репозиторий является специализированным DAO. Он имеет дело только с Business Objects и действует как фасад для других DAO нижнего уровня (например, ORM).

Репозиторий централизует логику доступа для услуги и предоставляет точку подстановки для модульных тестов. Сервисы часто дорого вызывают и используют стратегии кэширования, которые реализованы в репозитории. (Repository pattern on MSDN)

Web Service Repositories diagram on MSDN

Что касается кэширования, вы можете: блок приложения

  1. Caching: для его хорошего уровня абстракции, конфигурации легко и настольного компьютера плюс стороны сервера приложений постоянно возможностей, хотя не рекомендуетесь в корпоративной библиотеке 6.
  2. Богатая структура кэширования ASP.NET: (Grigori Melnik MSFT on MSDN blogs)
  3. .NET Framework 4.0 System.Runtime.Caching classes.
Смежные вопросы