Принадлежит ли шифрование данных шаблону хранилища? - PullRequest
1 голос
/ 05 марта 2009

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

Я применяю шаблон Repository в приложении.

Является ли код шифрования / дешифрования данных внутри или вне класса Repository?

В настоящее время я думаю, что когда данные находятся в состоянии покоя, шифрование является аспектом хранилища, и класс обслуживания, использующий хранилище, не должен загромождаться этим кодом шифрования.

Класс обслуживания отвечает за проверку и бизнес-логику, но алгоритм шифрования и способ хранения данных в состоянии покоя зависит от реализации репозитория.

Это разумная практика или я что-то упускаю?

Ответы [ 2 ]

4 голосов
/ 05 марта 2009

Вы, конечно, не хотите шифрования в классе обслуживания.

В некотором смысле, вы действительно отвечаете на свой вопрос, когда говорите

но алгоритм шифрования и способ хранения данных в состоянии покоя зависит от реализации хранилища.

Поскольку шифрование является частью способа хранения данных, оно принадлежит внутри хранилища.

1 голос
/ 06 марта 2009

Я бы поставил его на сервисный уровень. И вот почему:

Глядя на это с точки зрения бизнес-правил / требований к домену, шифрование данных является требованием? Должно ли это быть подтверждено тестами? Если это так, вы должны поместить его в то же место, где размещена вся другая проверяемая бизнес-логика. Другими словами, в сервисе.

Насколько мне известно, бизнес-логика (что шифровать, а что не шифровать) не принадлежит хранилищу. Сохраняемые объекты должны быть готовы к сохранению (или как можно ближе), когда они передаются в хранилище. В противном случае хранилище отвечает за постоянство и реализации бизнес-правил, и тогда вы больше не используете шаблон хранилища ...

...