2016-03-11 6 views
0

Я довольно смущен тем, как следует управлять данными в веб-приложении RESTful, которое я разрабатываю. Сколько данных необходимо сохранить на стороне клиента?REST Web api application data management

Для более конкретного примера:

Мое приложение отправляет письма из одной системы в другую. Я сохраняю буквы на стороне сервера, используя Sql-сервер. Для каждой буквы есть адресаты и источник, представляемый объектом Address, содержащий полную информацию об адресах. Я не могу решить, как я должен управлять данными адресов в моем приложении, я должен:

  1. нагрузок все Обращается к моему клиенту при запуске и с каждой буквой sendding Наклейте Целые Адреса в список reqeust? Запрос будет содержать больше данных и будет больше, но мне не нужно будет получать все станции на сервере

  2. загружать на клиент только идентификаторы адресов и отправлять запросы с идентификаторами, а затем загружать их из базы данных на сервере боковая сторона? Запросы будут содержать меньший объем данных, но мне нужно будет получить все адреса на сервере

  3. Должен ли я сохранять на клиенте только объект Address, представляющий его собственный адрес и другие идентификаторы станций? То же, что и 2, но мне не нужно будет получать адрес отправителя

Каковы преимущества/недостатки каждого метода? Что бы вы выбрали в случае, если количество станций составляет около 100 (без столько данных в пределах каждого объекта)

Я не профессионал, так, пожалуйста, поправьте меня, если что-то я сказал, было неправильно/глупая формулировка

Спасибо авансовый.

ответ

2

Там нет серебряной пули, которая работает во всех случаях, но я хотел бы предложить вам сделать это в следующем виде:

  1. Загрузить все адреса для клиента. Скорее всего, конечный пользователь, предпочитает увидеть подробную информацию об адресах вместо бессмысленных идентификаторов
  2. После выбора пользователя пункта назначения приложение отправляло только идентификаторы на сервер
  3. сервера должно принимать адресные данные по идентификаторам из БДА
  4. Послать письмо

Клиент не должен посылать полный адресный объект, как это могло бы быть (случайно или по назначению) неверно. Лучше всегда получать реальные и достоверные данные из БД. Если вам нужно уменьшить нагрузку на БД, лучше использовать кеширование на стороне сервера. Пример:

  1. Создать хранилище, выборки адресов из БД
  2. Создать оболочку репозитория, которые принимают данные из БД только один раз, а затем сохранить в MemoryCahce strucutre
  3. Использовать кэшированные обертку вашего приложения
+0

Спасибо для ответа, можете ли вы объяснить, в чем разница между использованием этого CacheMemory в использовании простого Словаря в моем классе?Я видел, что его реализация довольно сложная, поэтому я хочу знать, стоит ли это –

+1

. Самое важное отличие состоит в том, что с MemoryCache .net будет обрабатывать время жизни кэшированного объекта. Например, вы хотите, чтобы адреса кэшировались только в течение 1 часа, и они должны быть обновлены. С MemoryCache у вас есть такая возможность из коробки, но со словарем вы должны реализовать ее самостоятельно. Еще один важный момент: если хостинг-хостинг вашего веб-приложения испытывает недостаток в памяти .net, он сможет очистить MemoryCache и повторить это запоминание, со словарем это будет невозможно –

+0

Что касается вашего ответа, мои товарищи по команде говорят, что если клиент уже владеет все данные, которые должны передавать все данные в методе POST, потому что они говорят, что это лишний код и дополнительный вызов для базы данных. Любые другие причины для srndijg только для ids помимо возможности извращенных данных? –