<< Click to Display Table of Contents >> Объектная модель > Основные механизмы > Signatures – подписи ComputeAndStoreHashes – рассчитать хеши подписываемых свойств сущностей и сохранить их в кэш
|
![]() ![]() |
Метод используется для вычисления хеша подписываемых свойств сущности и сохранения его в кэш.
По умолчанию в системе для всех документов время жизни хеша в кэше – 240 минут. Администратор может изменить это значение. Разработчик с помощью метода ComputeAndStoreHashes() задает свое время жизни хеша для конкретных документов.
Используйте метод, когда необходимо дополнительно ускорить массовое подписание документов. Например, сотруднику приходит на подписание большой поток документов, при этом их содержимое он не меняет. При этом учитывайте:
•если время жизни в кэше истекло или подписываемые данные изменились, то хеш пересчитывается при следующем обращении к ним;
•предварительный расчет хеша необходимо выполнять на сервисе асинхронных событий (Worker) и до того, как документ придет на подписание. Например, при сохранении карточки документа добавьте запуск асинхронного обработчика для расчета его хеша;
•в зависимости от перегрузки метода алгоритм хеширования:
•выбирается по сертификату. Если передается null, то используется алгоритм SHA512;
•указывается явно, в том числе в виде массива из алгоритмов.
Перегрузки
ComputeAndStoreHashes(IEnumerable<IEntity> entities, ICertificate certificate, int cacheLifetimeInMinutes, params IChildEntity[] childEntities) |
Рассчитать хеши подписываемых свойств сущностей и сохранить их в кэш. Алгоритм хеширования определяется по сертификату |
---|---|
ComputeAndStoreHashes(IEnumerable<IEntity> entities, string hashAlgoritmId, int cacheLifetimeInMinutes, params IChildEntity[] childEntities); |
Рассчитать хеши подписываемых свойств сущностей и сохранить их в кэш. Задать идентификатор алгоритма хеширования |
ComputeAndStoreHashes(IEnumerable<IEntity> entities, IEnumerable<string> hashAlgoritmsId, int cacheLifetimeInMinutes, params IChildEntity[] childEntities); |
Рассчитать хеши подписываемых свойств сущностей и сохранить их в кэш. Задать массив идентификаторов алгоритмов хеширования |
Синтаксис
C# |
public static void ComputeAndStoreHashes(IEnumerable<IEntity> entities, ICertificate certificate, int cacheLifetimeInMinutes, params IChildEntity[] childEntities); |
Параметры
entities – список сущностей;
certificate – сертификат;
cacheLifetimeInMinutes – время жизни хеша в кэше, указывается в минутах. Кэш сохраняется в базе данных для возможности повторного использования;
childEntities – строки свойства-коллекции, которые подписываются;
hashAlgorithmsIds – идентификаторы алгоритмов хеширования;
hashAlgorithmId – идентификатор алгоритма хеширования.
Пример. Рассчитать хеши документов и задать время жизни в кэше
Например, есть документы, которые отправляются на ознакомление тысячам сотрудников со сроком 7 дней. С помощью метода при старте блока «Задача» предварительно рассчитайте хеши документов и задайте их время жизни в кэше. В течение этого времени при подписании документов система не будет многократно обращаться к сервису хранилищ, чтобы получить содержимое и вычислить хеш. Значение будет браться из кэша.
// Идентификатор алгоритма хеширования SHA512.
const string SHA512_ID = "2.16.840.1.101.3.4.3";
// Идентификатор алгоритма хеширования ГОСТ Р 34.11-2012-512.
const string GOST_R3411_12_512_ID = "1.2.643.7.1.1.2.3";
// Время жизни, 7 дней.
var cacheLifeTime = 7*24*60;
// Рассчитать и сохранить хеши.
Signatures.ComputeAndStoreHashes(_obj.Documents.All, new [] {SHA512_ID, GOST_R3411_12_512_ID}, cacheLifeTime);
© Компания Directum, 2024 |