Использование сессии в wcf - PullRequest
2 голосов
/ 27 октября 2011

Если я установлю свой экземпляр обслуживания на сеанс или один, могу ли я отправлять некоторые данные между экземплярами служб в сеансе?Это должно быть сделано в сеансе Asp.net - HttpContext.Current.Session или wcf имеют собственный сеанс?

Ответы [ 2 ]

11 голосов
/ 27 октября 2011

Как я уже сказал - WCF не является ASP.NET, и его обработка сеанса сильно отличается.Хотя сеансы ASP.NET и WCF называются одинаково - они сильно различаются по своему назначению и полезности.

Прочтите страницу MSDN Использование сеансов в WCF для получения более подробной информации.

Одно предложение гласит: Нет общего хранилища данных, связанного с сеансом WCF. - поэтому ответ - нет - сеансы в WCF не предназначены для хранения данных,

Сеансы WCF просто "связывают" несколько сообщений в диалог.По умолчанию в модели «на вызов» каждый запрос службы WCF получит свой собственный экземпляр экземпляра класса обслуживания, который был недавно создан, для обработки запроса, и этот экземпляр класса службы будет освобожден после возврата ответа.Использование сессий избегает этого - экземпляр класса обслуживания, обрабатывающий первый вызов сеанса, останется живым на стороне сервера (и, следовательно, также займет память на сервере) и будет обрабатывать все последующие запросы в одном сеансе.

WCF и веб-сервисы в целом, однако, предпочтительно должны быть без состояния , поэтому сеансы представляют собой нечто странное в правильной среде SOA - и именно поэтому сеансы в WCF также не так полезны, как ASPСеансы .NET предназначены для веб-приложений.

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

5 голосов
/ 27 октября 2011

Если вы размещаете службы в IIS, вы можете включить режим совместимости ASP.Net. Это позволит вам использовать состояние сеанса ASP.Net, как в веб-приложении.

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