Что лучший способ к данным кэша в C# dll?

В Hyperledger Composer все транзакции хранятся в истории записи ( https://hyperledger.github.io/composer/unstable/reference/historian.html ). Таким образом, запрос и использование одного и того же решения решит вашу проблему. Историческая запись - это ресурс, определенный в пространстве имен композитора Hyperledger.

Историческая запись определяется как:

asset HistorianRecord identified by transactionId {
  o String      transactionId
  o String      transactionType
  --> Transaction transactionInvoked
  --> Participant participantInvoking  optional
  --> Identity    identityUsed         optional
  o Event[]       eventsEmitted        optional
  o DateTime      transactionTimestamp
}

Вы можете прочитать больше об API клиента Historian, который вам пригодится: https: //hyperledger.github. io / composer / v0.19 / api / client-historyian

Также прочтите это обсуждение истории актива в композиторе: https://github.com/hyperledger/composer/ вопросы / 2458

7
задан casperOne 21 January 2009 в 04:36
поделиться

4 ответа

Вы посмотрели на блок Программы кэширования Библиотеки Предприятия? Это допускает аннулирование кэша в ряде различных событий, включая изменения файла (AFAIK), и не требует ASP.NET (и все же, интегрируется хорошо с ним).

6
ответ дан 6 December 2019 в 07:52
поделиться

Кэш ASP.NET и связанный CacheDependency не имеют никакой зависимости от ASP.NET, IIS или веб-сервера. Вы свободны использовать его для этой точной ситуации. Это требует намного меньшего усилия получить работу, чем Блок Программы кэширования Библиотеки Предприятия и более широко используется и документируется.

Некоторая дополнительная ссылка: http://aspalliance.com/1705_A_New_Approach_to_HttpRuntimeCache_Management.all

Если Вы хотите использовать логику Кэша ASP.NET в своем DLL, просто перенести его и сослаться на него как так:

using System.Web.Caching;
...
var cache = HttpRuntime.Cache;
cache.Insert("foo", foo);

Этот код, наряду с любым FileSystemDependency, который Вы хотите добавить к нему, будет работать одинаково хорошо в Вашей библиотеке независимо от того, работает ли он в сети, winform, консоли или сервисном контексте.

Можно также сделать это, если Вы хотите убедиться использовать тот же кэш в качестве сети, но это является дополнительным:

HttpContext context = HttpContext.Current;
            if(context != null)
            {
                _cache = context.Cache;
            }
            else
            {
                _cache = HttpRuntime.Cache;
            }
14
ответ дан 6 December 2019 в 07:52
поделиться

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

2
ответ дан 6 December 2019 в 07:52
поделиться

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

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

Вы могли также создать способом для уведомления программы, когда она должна перезагрузить данные.

1
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: