Допустим, вы идете к стоматологу, чтобы вытащить зуб.
Когда администратор спрашивает у вас ваше имя, это информация, которая им нужна, чтобы начать встречу. В этом примере ваше имя является контекстной информацией . Таким образом , в контексте посещения стоматолога, вам необходимо указать свое имя , чтобы получить ваш зуб тянул.
Теперь допустим, что вы идете в банк.
В банке вы просите снять 100 долларов. Кассир должен подтвердить свою личность, прежде чем давать вам деньги, поэтому вам, вероятно, придется предъявить им водительские права или провести пальцем по своей карте банкомата и ввести свой PIN-код. В любом случае, вы предоставляете контекст . Кассир использует эту информацию для продвижения транзакции. Затем они могут спросить вас, с какого аккаунта вы хотите снять деньги. Когда вы отвечаете «Мой сберегательный счет» , это еще более контекстно .
Чем больше контекста вы дадите, тем больше знаний у другой стороны, чтобы помочь обработать ваш запрос. Иногда контекст является необязательным (например, вводит все больше и больше слов в поиске Google, чтобы получить лучшие результаты), а иногда это требуется (например, ввод PIN-кода в банкомате). В любом случае, это информация, которая обычно помогает сделать вещи.
Теперь предположим, что вы берете свои 100 долларов и покупаете билет на самолет, чтобы летать куда-нибудь теплым, пока заживает рот.
Вы прибываете в хороший солнечный пункт назначения, но ваша сумка не делает это. Это потеряно где-то в системе аэропорта. Таким образом, вы берете свой «билет для получения багажа» (тот стикер со штрих-кодом на нем) в «Бюро пропавших багажа». Первое, что попросит человек за стойкой регистрации, - это билет с номером вашего багажа. Это пример некоторого необходимого контекста .
Но затем багажщик запрашивает у вас дополнительную информацию о вашей сумке, например, чтобы им было легче ее найти. Они спрашивают: « Какого оно цвета? Какой у него размер? Есть ли у него колеса? Твердые или мягкие? Хотя им не обязательно нужны эти фрагменты информации, это помогает сузить круг вопросов, если вы их предоставите. проблемная область. Это делает поиск намного быстрее. Это необязательный контекст .
Вот интересная часть: для многих программ и API требуемый контекст обычно заканчивается как фактические параметры в сигнатуре метода, а необязательный контекст уходит куда-то еще, например, гибкая карта значения ключа, которая может содержать что угодно (и может быть пустой). ) или в локальное хранилище, где к нему можно получить доступ при необходимости.
Приведенные выше примеры взяты из реальной жизни, но вы можете легко сопоставить их с областями информатики. Например, заголовки HTTP содержат контекстную информацию. Каждый заголовок относится к информации о выполняемом запросе. Или когда вы отправляете глобальный идентификатор транзакции как часть процесса двухфазного принятия , этот идентификатор транзакции является контекстом. Это помогает менеджеру транзакций координировать работу, потому что это информация об общей задаче.
Надеюсь, это поможет.