TheRedEye Ответов: 1

Что же такое контекст?


Что именно подразумевается под словом "контекст" в MVC? Я знаю, что мы получаем databaseContext, filterContext и httpContext, чтобы назвать некоторые из них.
Является ли это синонимом "объекта"? Могли бы они так же легко быть названы databaseObject, filterObject и т. д.

Если я должен написать пользовательский класс с именем 'FooContext', что бы контексте суффикс '' будет мне рассказывать про 'Фу'?

Что я уже пробовал:

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

Это мне ни о чем не говорит. Абсолютно все, что хранится в классе, является коллекцией данных.

Peter_in_2780

Для меня большая подсказка - это "используется для поддержания состояния". Я не знаю MVC, но где-то еще я встречал этот термин, это то, что я понимаю.

Kornfeld Eliyahu Peter

Контекст-это способ группировки операций над разными частями одной и той же сущности (частями, представленными разными объектами)...
Название, вероятно, происходит от шаблона Unit of Work, который является одним из строительных блоков реализации EF (шаблон репозитория-это другой)...

1 Ответов

Рейтинг:
0

Zoltán Zörgő

В MVC действие вашего контроллера срабатывает всякий раз, когда http-вызов попадает на правильный маршрут. Контекст - это рабочая среда конкретного выполнения действия. Она может состоять из нескольких вещей, как вы уже заметили. Конечно, это объекты (как и все остальное). Различные контексты могут вести себя по-разному; некоторые из них являются своего рода статическими между запусками действий, некоторые будут отличаться каждый раз.
HttpContext, например, будет содержать информацию о вызове http, включая информацию от клиента, статическую и исполняемую информацию о веб-сервере, а также данные, добавляемые элементами конвейера обработки. Например, данные сеанса или аутентификационная информация. Элементы в конвейере будут использовать (в основном расширять, но также и читать) этот контекст (запущенная среда - если хотите). На самом деле, ваше действие - это один шаг в этом конвейере. Возможно, вы захотите использовать окружающую среду или нет. Например, вы можете получить доступ к необработанному телу или заголовку запроса.

Вы могли бы получить контекстные объекты в качестве параметров действия, но это было бы ненужной головной болью для вас.