Какого черта контекст? - PullRequest
       30

Какого черта контекст?

22 голосов
/ 17 декабря 2010

Я начинаю видеть контексты везде, куда бы я ни посмотрел.В ASP.NET MVC есть ControllerContexts, RequestContexts, HttpContexts, FormContexts.В Entity Framework у вас есть ObjectContexts и DbContexts.Ninject имеет Ninject.Activation.IContext.

Какого черта контекст?

Ответы [ 6 ]

7 голосов
/ 17 декабря 2010

Ну, это что-то вроде инъекции зависимости, которая позволяет людям говорить: «Вот среда, в которой вы будете работать». Как правило, они обеспечивают, что неудивительно, «контекст» для чего бы то ни было. Т.е. некое состояние. Возможно, URL, возможно, некоторые заголовки HTTP, что угодно.

Вы видите их много, потому что ASP.NET сфокусирован на тестировании и, следовательно, позволяет «обмениваться» этими элементами, так что вы можете предоставить свои собственные реализации контекста (т.е. определить свои состояние), чтобы вы могли запускать тесты надлежащим образом и успешно.

Если вам интересно, что такое состояние , то это просто различные биты данных, которые "передаются" средой. То есть сегодня в офисе холодно . Это часть состояния . Но, возможно, я хочу запустить свой тест, когда в офисе жарко , поэтому я смог бы создать подкласс OfficeContext и вернуть соответствующее состояние для соответствующего метода / и т. Д.

4 голосов
/ 17 декабря 2010

IMO, Контекст обозначает некоторое (возможно изменяемое) состояние около что-то . Обычно контекстом являются межсекторальные слои, и они часто переносят нейтральные к домену данные между слоями.

2 голосов
/ 17 декабря 2010

Контекст - это информация, выходящая за рамки того, что вы в данный момент делаете, но которая может иметь важное значение.

Представьте, если кто-то спросит вас, что означает английское слово "fly". Есть несколько определений: жужжание, слабый взгляд или продолжительный процесс скольжения по воздуху. Чтобы дать правильный ответ, вам нужен контекст , который говорит вам, какое определение они ищут - читают ли они книгу о Диптере или братьях Райт?

Что касается вычислений, скажем, вы реализуете обработчик HTTP. Возможно, он сможет сгенерировать ответ, ничего не зная (Hello, World!), Но, скорее всего, ему понадобится context информации HTTP-запроса - какие были параметры запроса, допустимые типы кодирования и т. Д Таким образом, он может дать значимый ответ пользовательскому агенту.

1 голос
/ 17 декабря 2010

Я думаю о них как о переменных вашего окружения и настройках профиля в сеансе telnet / ssh. Они связывают воедино различные параметры, чтобы позволить инструментам работать по-разному в зависимости от контекста (то есть среды), в которой они работают.

0 голосов
/ 07 июня 2012

Приведенные выше ответы в целом довольно хороши. Единственное, что я хотел бы добавить, - это то, что он наиболее часто используется в качестве «клея» для нижних уровней системы. Обычно рассматриваемая система является некой «контейнерной» системой, в которой ваш код выполняется внутри большой кодовой базы, которая скрывает от вас множество подробностей выполнения. Контекст - это абстрагированный интерфейс для этой более крупной системы.

0 голосов
/ 17 декабря 2010

ИМО, это просто еще один аргумент.По своему (ограниченному) опыту я видел, что это был вызывающий класс.Вы должны знать что вы делаете, чтобы делать то, что вы делаете хорошо .Контекст - это то, что вы делаете, что происходит / работает.

...