2013-12-04 3 views
1

Возможно ли использовать кеш-память в качестве кэша второго уровня для NHibernate?Кэш-память Azure в качестве кэша второго уровня NHibernate?

Поскольку я совершенно новичок в разработке Azure и кэшировании NHibernate, я действительно не знаю, что искать. Есть ли учебники, руководства или подобные описания?

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

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

Моя идея состоит в том, что, когда NHibernate в одном экземпляре записывает в кеш, NHibernate на другом экземпляре (одной и той же роли, использующем один и тот же кеш), может читать эти данные из кеша, или я что-то не понял?

ответ

0

Чтобы быть честным, должно быть возможно реализовать собственный поставщик кэша второго уровня для NHibernate путем реализации NHibernate.Cache.ICacheProvider. Каждый поставщик кешей поддерживает NHibernate Query Cache и совместим с любой стратегией параллелизма (только для чтения, нестрочного чтения-записи и чтения-записи). Но это непросто, может занять много времени в зависимости от того, насколько вы опытный разработчик и насколько хорошо вы знаете NHibernate. Поэтому я не советую это делать, особенно когда вы говорите, что не знаете, если вам это нужно.

Моя идея заключается в том, что, когда NHibernate на одном экземпляре запись в кэше, NHibernate на другом экземпляре (в той же роли, разделяя тот же кэш) может прочитать эти данные из кэша, или я неправильно что-то?

Я бы рекомендовал использовать наш IIS Application Request Routing (ARR) module для реализации липкой сессии, если они необходимы для приложения. Есть несколько ресурсов, описывающих это решение, здесь есть несколько интересных ссылок:

  • Using the Application Request Routing Module: это стандартная установка документация из команды IIS, что вы могли бы, например, следить, чтобы развернуть ARR на Windows Virtual Machines.
  • Отличный Richard Astbury от Two10Degrees имеет AzureARR project hosted on Github, который передает ARR в веб-роли для использования в облачных сервисах.
+0

Я не думаю, что в этом случае поможет липкая сессия. Обычно клиент должен отправить данные в приложение, данные, которые я хотел бы кэшировать, так как все остальные (надеюсь тысячи) клиенты (подключенные к те же или другие экземпляры) нуждаются в данных. Причина, по которой хотелось бы использовать один и тот же кеш (вместо конкретных кэшей), - это запретить клиентам, подключенным к «другим» экземплярам, ​​получить устаревшие данные из кеша. – madcap

Смежные вопросы