В чем разница между текущим, InstanceContext RequestContext на OperationContext?

#c# #wcf

#c# #wcf

Вопрос:

Я смотрю на систему.ServiceModel .OperationContext

http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontext (v = против 110).aspx

Я пытаюсь понять разницу между:

 OperationContext.Current
OperationContext.InstanceContext 
OperationContext.RequestContext
 

В моем тестировании они кажутся одинаковыми. Чего мне не хватает?

Комментарии:

1. Что вы делаете в своем тестировании? Т.Е. Что вы видите в своем тестировании, что заставляет вас поверить, что они одинаковы?

Ответ №1:

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

Просматривая документацию msdn, я выделил некоторые моменты из замечаний с некоторыми моими собственными мыслями относительно того, почему он имеет каждый из контекстов.

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

RequestContext: «объект RequestContext является связующим звеном между входящим запросом и исходящим ответом» этот объект действительно ориентирован на предоставление вам доступа и контроля над запросами и ответами в вашем сервисе.

InstanceContext: здесь нет замечаний msdn, но, глядя на это, это дает вам более глубокий контроль над состоянием инфраструктуры связи. т.е. Каналы связи, хосты и расширения.

Вот конкретные статьи MSDN, которые я просматривал для каждого

OperationContext : http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontext (v = против 110).aspx

RequestContext : http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.requestcontext (v = против 110).aspx

InstanceContext : http://msdn.microsoft.com/en-us/library/system.servicemodel.instancecontext (v = против 110).aspx