WCF и HttpSessionState, HttpApplicationState - PullRequest
3 голосов
/ 19 ноября 2009

Я мигрирую веб-сервис в WCF, чтобы использовать двоичное кодирование. Теперь я понимаю, что вызовы сеанса и вызовы состояния приложения не распознаются. Предполагается, что WCF лучше, чем веб-сервис, поэтому я предполагаю, что есть лучший способ сделать что-либо.

1) Как мне поддерживать сеанс и вызывать веб-сервис, который использует сеанс?

2) Как заменить объект приложения?

Ответы [ 3 ]

4 голосов
/ 17 мая 2011

Для тех из вас, кто переносит большой проект и не может позволить себе быть таким идеологическим, я нашел реальный ответ здесь:

http://megakemp.wordpress.com/2008/11/27/migrating-aspnet-web-services-to-wcf/

3 голосов
/ 19 ноября 2009

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

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

WCF также по умолчанию полностью независим от ASP.NET и IIS и, следовательно, не может использовать объекты HttpContext, HttpSessionState и т. Д., Поскольку он может быть размещен в консольном приложении, которое не знает IIS, контекста HTTP. и т.д.

Вопрос в том, что именно вы действительно используете из этих объектов HttpSessionState и HttpApplicationState? Каким-то образом вам нужно абстрагироваться от этого или решить его другим способом, например, пусть клиент отправит вам эту информацию (в качестве параметра при вызове метода веб-службы или в качестве заголовка в сообщении), или же клиент отправит вам своего рода «токен», который позволяет вам получить соответствующую информацию, например, из. таблица базы данных.

1 голос
/ 17 мая 2011

Глава 4 в превосходном программировании служб WCF Ювала Лоуи ( ссылка ) - это все об управлении экземплярами. Существуют разделы, посвященные сервисам Per-Session и Durable services, каждый из которых может быть тем, что вы ищете.

Однако точка зрения Марка очень верна. Есть много минусов в использовании сессии со службами WCF, но это возможно. Лоуи обсуждает многое из этого в некоторых деталях.

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