2015-09-29 3 views
-1

Я пытаюсь figure out an issue I'm having with sitecore. Я интересно, если моя проблема в основном проблема с их reliance on Session.Abandon():Когда сеанс отменяется во время типичного сеанса?

Из соображений производительности Sitecore только записывает контактные данные в XDB (это Монго) когда сессия заканчивается.

Эта логика кажется несколько ошибочной (если я не понимаю, как управляются сеансы в Asp.Net).

  • В какой момент (без явного вызова Session.Abandon()) это сеанс, покрасневший в этой модели? Когда произойдет событие session_end?
  • Можете ли вы гарантировать, что логика всегда будет вызвана или может быть завершена сессия без запуска события Abandon? например, когда app_pool перерабатывается.

Я пытаюсь понять это, как это было бы объяснить то, что я испытываю, когда данные штраф в сессии, но написана с перерывами в MongoDB

+0

Я думаю, что вы можете закончить для того, чтобы написать Монго с помощью: Sitecore.Analytics.Tracker.Current.EndVisit (ложь); Можете ли вы проверить, работает ли он? –

+0

Но как я узнаю, когда инициировать это событие? В этом суть моей проблемы. Я не считаю, что это хорошая идея, так как окончание сеанса очень неопределенное. – Liam

+1

Я также считаю, что финальная сессия не является хорошим выбором. –

ответ

2

Я думаю, что стратегия для построения данные в сеансе, а затем очистка данных до MongoDb для xDb.

xDb предназначен для большой громкости, поэтому имеет смысл собирать данные, а не постоянно записываться в таблицу базы данных. Так ДМС работал раньше и не очень хорошо масштабируется.

Сессия на мой взгляд довольно надежна, и Sitecore предоставляет вам различные возможности для сохранения сеанса (inproc, mongo, SQL server), MongoDb и SQL Server рекомендуется для производственных сред. Вы можете написать Контактные данные непосредственно в MongoDb с помощью Contact Repository api, но для прямого захвата данных вы должны использовать Tracker api. При использовании трекера api, насколько мне известно, единственный способ получить данные в MongoDb - это очистить сеанс.

Если вам нужно очистить данные до xDb для тестирования, то Session.Abandon() будет работать. У меня есть модуль, который вы можете использовать для создания контактов, а затем для очистки сеанса, поэтому вы можете видеть, насколько надежным остается сеанс, проверяя MongoDb.

https://marketplace.sitecore.net/en/Modules/X/xDB_Contact_Creator.aspx

+0

У вас есть информация, которая поможет подкрепить мнение, что она надежна? – Liam

+0

Кроме того, это не db, это экземпляр nosql, предназначенный для больших томов, поэтому и твиттер и т. Д. Используют его. На самом деле я хотел знать, была ли проверка сеанса надежной и почему, поэтому вы не ответили на мой вопрос. – Liam

+0

Я сам тестировал это и не имел проблем с флешем данных MongoDb, если у вас возникли проблемы, я предлагаю вам обратитесь в службу поддержки Sitecore. Есть ли у меня доказательства того, что он надежный? Нет, но я не думаю, что xDb будет существовать, если основная часть, которая собирает данные, была ошибочной. –

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