Сохранение объекта .NET в памяти и оставление его там после выхода - PullRequest
0 голосов
/ 05 августа 2011

Мне было интересно, есть ли способ загрузить объект в память и оставить его там после того, как программа существует. Я хочу сделать это, чтобы поделиться информацией о конфигурации через службу WCF REST, не обращаясь к диску для сериализации / десериализации при каждом чтении конфигурации. У меня проблема в том, что нет гарантии, что что-то всегда работает, чтобы «удерживать» объект.

Я использую C # и .NET 4.0.

Вот некоторый псевдо-код, который моделирует то, что я буду / надеюсь сделать:

variable localmemoryobject
if memoryObject does not exist then
    create the memory object
end if 
copy the memory object into localmemoryobject
done

Я просматриваю отображенные в памяти файлы, чтобы выполнить это, и не был уверен, подходит ли это для моей проблемы. Есть предложения?

Ответы [ 4 ]

2 голосов
/ 05 августа 2011

Если вы хотите сохранить некоторые данные в памяти, то для их сохранения должен быть хотя бы один процесс. Возможно, вы захотите иметь небольшой процесс, который вы используете для хранения этих объектов в памяти (например, memcached ), а затем запускать и выключать службы WCF, не беспокоясь о сериализации данных на диск.

1 голос
/ 05 августа 2011

Возможно, API Windows Mapped Files может быть полезен для вас.

Подробнее здесь: http://msdn.microsoft.com/en-us/library/aa908742.aspx

1 голос
/ 05 августа 2011

Используйте блоки кэширования корпоративных библиотек в вашей службе WCF.

http://msdn.microsoft.com/en-us/library/ff649551.aspx

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

1 голос
/ 05 августа 2011

Как насчет добавления приложения-службы Windows для вашей конфигурации и сохранения его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...