Arhn - архитектура программирования

Оптимистичный параллелизм OData WEB API | Использование ETag вместо TimeStamp

Контекст

Чтобы включить оптимистичный параллелизм, в модель данных клиента было внесено следующее изменение с использованием Entity Framework 6.

Раньше, без TimeStamp:

public class Customer
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

После, с TimeStamp:

public class Customer
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    [Timestamp]
    public byte[] Version { get; set; }
}

Результаты

На основе этого изменения WEB API добавил ETag в ответ от службы OData.

Раньше, без TimeStamp:

{
"@odata.context":"http://localhost:50378/$metadata#Customers/$entity",
"Id":"c16883eb-3f4b-3515-9151-caa1c9e5bfc8",
"Name":"TestSeed"
}

Афер с TimeStamp:

{
"@odata.context":"http://localhost:50378/$metadata#Customers/$entity",
"@odata.etag":"W/\"YmluYXJ5J0FBQUFBQUFBQjlrPSc=\"",
"Id":"c16883eb-3f4b-3515-9151-caa1c9e5bfc8",
"Name":"TestSeed",
"Version":"AAAAAAAAB9k="
}

Вопрос

Поскольку WEB API представил поле Etag в ответе, как мне скрыть свойство Version из ответа?

На стороне клиента все управляется через файл ETag. Это только на сервере, на уровне доступа к данным, где используется свойство Version.

Причина сокрытия свойства Version заключается в том, чтобы предоставить внешним пользователям нашей службы OData доступ к свойствам, которые используются только в деловых целях.

Я упустил что-то основное?


  • ETag идентифицирует ресурс, но один и тот же ресурс может существовать в разных версиях, поэтому вам нужны оба, не так ли? 31.01.2018
  • Насколько я понимаю, содержимое ETag получено из свойства Version, по крайней мере, из Entity Framework в WEB API. Свойство Version здесь представляет собой тип данных TimeStamp, который обновляется SQL каждый раз, когда данные в конкретной записи изменяются. Пользователи только читают свойство. 31.01.2018
  • Используя Декодер, мне удалось декодировать ETag и получить правильное значение Version. Кодирование и декодирование основано на Base64. 31.01.2018

Ответы:


1

если вам не нужно поле «Версия», просто поместите аннотацию в другое поле.

public class Customer
{  
    [TimeStamp]
    public Guid Id { get; set; }
    public string Name { get; set; }
}
19.03.2020
  • Нет, это плохая идея просто пометить какое-либо другое свойство как отметку времени/версию. И Id — это последнее свойство, которое вы хотели бы использовать в качестве метки времени, потому что оно неизменяемо. 19.03.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..