состояние веб-службы - PullRequest
       14

состояние веб-службы

1 голос
/ 10 марта 2011

У меня есть две службы wcf с одинаковым интерфейсом, размещенные в IIS с использованием http-привязки. У обоих есть только три метода:

  1. OpenFile(userid), который создает или открывает файл userid.txt.

  2. Write(userid, X), который записывает X в файл

  3. Close(userid), который закрывает файл

InstanceContextMode =InstanceContextMode.PerSession используется для службы B.

Сервис А:

  • Является ли он без сохранения состояния (технически служба не требует запоминания идентификатора пользователя, он отслеживается клиентом) или с состоянием (операция службы похожа на конечный автомат. Клиент должен вызывать методы в определенном порядке)?

  • Если используется привязка HTTPS, является ли она состоящей из состояний?

Сервис B:

  • Является ли это без сохранения состояния, с сохранением состояния (поскольку используется сеанс IIS)?

Я предполагаю, что более общий вопрос заключается в том, зависит ли состояние веб-службы от того, как он спроектирован и реализован, или как он размещен? Есть ли какой-то «контрольный список», который я могу пройти, чтобы определить, относится ли моя веб-служба к категории без сохранения состояния или с состоянием?

Спасибо

1 Ответ

2 голосов
/ 10 марта 2011

По умолчанию все, что через HTTP, не имеет состояния.Когда вы используете PerSession, это все еще зависит от того, используют ли ваши реализации веб-сервисов Sessions.Но в любом случае ваш веб-сервер остается без состояния, то есть именно тогда, когда вы сохраняете состояние в специальном объекте (Кэш, Файл, База данных или Сеанс).

Даже сеанс не имеет состояния: если сервер не отправляет cookieв HTTP-запросе между запросами ничего не запоминается.

Это не изменится для HTTPS.Хотя это совершенно другой протокол, состояние не меняется.

О вашем контрольном списке: он будет коротким, так как он всегда без состояния с HTTP.Независимо от того, поддерживает ли реализация состояние, это не меняет этого.Это зависит от реализации, как обойти это ограничение и сохранить состояние, вы не можете «увидеть» это снаружи.

...