В 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
Вы посмотрели на блок Программы кэширования Библиотеки Предприятия? Это допускает аннулирование кэша в ряде различных событий, включая изменения файла (AFAIK), и не требует ASP.NET (и все же, интегрируется хорошо с ним).
Кэш 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;
}
Вы могли сохранить последнюю дату, которую Вы загрузили из файл как другой файл в том же каталоге, или в статическое время даты в Вашем классе. Я думаю, что последнее решение, вероятно, не, что Вы ищете, так как Вы не можете рассчитывать на свой загружаемый класс. Я также полагал бы, что сохранение и сравнение хеша MD5 файла видят, когда это изменяется.
Мое решение этой проблемы состояло в том, чтобы периодически перезагружать файл данных: однажды в час, например. Это зависит от того, насколько очень важный случается так, что Ваша программа имеет точный до мелких данных.
Возможно, гибридный подход требуется. Используйте FileSystemWatcher, но также и сохраните последнюю дату/время файла (как предложено выше) и периодически проверяйте текущую дату / время на файле. Если они отличаются, то перезагружают файл. Это было бы моим предпочтительным решением, если бы было важно усовершенствовать данные.
Вы могли также создать способом для уведомления программы, когда она должна перезагрузить данные.