Многие разработчики никогда не рассматривают концепцию государства, прежде чем поставлять приложения в Интернет. Как упоминалось ранее, сеть является средой без сохранения состояния. Поэтому мы должны обсудить, что такое состояние, и понять методы, которые могут избежать проблем.
Точное определение статуса
В однопользовательской программе при создании исполняемого приложения, такого как использование VB для создания файла .exe, вы можете объявить глобальную (или общедоступную) переменную, а затем получить доступ к нему в любом месте в коде. Значение момента всегда является действительным и доступным в любое время, когда приложение работает.
Для традиционного решения клиента/сервера, такой как система, в которой клиентское приложение обращается к серверу, основанному на сервере, каждый клиент устанавливает соединение с сервером и приложением базы данных. Это соединение обычно устанавливается путем проверки пользователя.
Процесс проверки является типичным процессом идентификации пользователя, который доказывает, является ли он законным пользователем в сочетании имени пользователя и пароля.
После проверки подлинности устанавливается соединение между клиентом и серверным приложением, которое остается действительным на все время, которое пользователь использовал приложение. Это происходит, когда пользователь регистрируется на ферментированном сервере Windows 2000. Всякий раз, когда администратор использует утилиту пользователей Active Directory пользователей и компьютеров (щелкните элемент управления каталогами в опции «Административные инструменты» в меню «Пуск») для наблюдения за активными пользовательскими подключениями. Этот процесс одинаков во многих системах, таких как Microsoft SQL Server.
Это постоянное соединение означает, что когда пользователь отправляет инструкции или запросы на сервер, сервер легко идентифицирует каждого пользователя. Тот же ответ сервера или любая другая информация пользователя также может быть возвращена пользователю напрямую. Далее отмечается, что сервер может легче хранить значения и информацию, связанную с каждым клиентом, и предоставлять их соответствующему клиенту при необходимости. Конечно, серверные приложения могут иметь основные глобальные переменные для пользователей, чтобы получить доступ при необходимости.
Эта способность идентифицировать запросы от каждого клиента и сохранять значения соответствующего пользователя в памяти является состоянием. Состояние может рассматриваться как значение, среду и внутренние переменные приложения, и выполняет весь процесс приложения и подключения пользователя.
Важность статуса
Если вы собираетесь создать приложение на основе веб-сайта, которое взаимодействует с пользователем, а не веб-сайт, который отображает только независимые страницы, вы должны иметь возможность предоставить отдельный статус для каждого пользователя. Это может просто запомнить их имя, или это также может быть также хранить ссылки на объекты или различные записи для каждого пользователя. Если вы не можете этого сделать, веб -страница ASP не может сделать больше, потому что, когда страница выполняется, переменные и другая связанная информация на странице разрушаются. Когда пользователь запрашивает следующую страницу, вся информация, предоставленная этой страницей, будет потеряна.
Следовательно, необходимо найти способ сохранить статус каждого посетителя. Очень важно иметь возможность хранить глобальные ценности для всех пользователей. Например, доступ к веб-странице или счетчик клики, который не предоставляет каждому пользователю свой счетчик, и пользователи обычно хотят видеть общее количество посетителей, а не только количество посещений, которые они сами посещают. Количество посетителей должно храниться в состоянии уровня приложения, а не в состоянии пользовательского уровня.
Это не проблема, которая только что возникла. Таким образом, в Интернете есть много традиционных решений для хранения состояний. Администраторы веб -сайта хотят знать, посещали ли посетители их веб -сайт раньше, и если да, то сколько раз они посещали? Также регулярно посещайте другие сайты. Это станет лучше установить свои рекламные цели. Все это требует способ сохранить информацию о запросах веб -страницы, сгенерированных пользователем во время доступа или между каждым посещением.
Создать статус в Интернете
Общий способ обеспечить статус между запросами страниц и доступом к сайту - через файлы cookie. В предыдущих главах мы видели, как хранить соответствующие значения на компьютере клиента, которые отправляются вместе с каждым запросом страницы в домен, который действителен для этого файла cookie. Проверяя и обновляя файлы cookie с помощью ASP, можно в некоторой степени поддерживать состояние. Включенная информация может использоваться для идентификации пользователя, а затем подключить пользователя к набору хранимых соответствующих значений.
Например, можно обнаружить, содержит ли пользовательский запрос cookie, указанный на сайте. Если не включено, пользователю назначают определенный тип идентификации, указывая число и хранится в файле cookie с длительным периодом достоверности. Каждый раз, когда пользователь посещает этот сайт в будущем, он сможет обнаружить файлы cookie и обновлять информацию, содержащуюся в нем. Данные о количестве и продолжительности посещений также могут быть собраны и сохранены на сервере для будущего использования.
Но что произойдет, если пользователь передает на другой компьютер или удаляет cookie, или его браузер отказывается получать отправленные им cookie? В этом случае государство не может быть поддержано, потому что они не будут признаны в следующий раз. Если вы откроете Warn, прежде чем принять опцию Cookie в вашем браузере, а затем бродить по нескольким большим сайтам, вы поймете значение.
1 Анонимные посетители и уполномоченные посетители
Если вы думаете, что файлы cookie - это немного неряшливое решение, вы можете использовать более простой подход. Один из подходов, который использует многие сайты, - это вспять диалог входа в систему, когда посетитель нажимает на сайт, или когда страница, которая требует проверки идентификации. Посетители должны сначала зарегистрироваться и получить определенный тип комбинации имени пользователя/пароля, чтобы разрешить доступ к соответствующему сайту или странице.
Чтобы доказать, что посетитель является известным и законным пользователем, файл cookie, размещенный на компьютере посетителя, либо сохраняет подробные данные регистрации, либо ключ, указывающий на то, что личность была проверена. В то же время подробные данные посетителя постоянно сохраняются на сервере и готовы к использованию при снова. Если у посетителя есть такое печенье в его браузере, он может свободно получить доступ к веб -сайту, потому что он был проверен.
Если у печенья нет периода достоверности (истекает), значение cookie автоматически исчезнет, когда браузер закрыт и должно быть повторно зарегистрировано и снова проверено при следующем посещении. Конечно, если вы отказываетесь получать файлы cookie или удалять файлы cookie, вы можете получить только диалог регистрации. Таким образом, если это не признано, сайт не может быть доступен.
Заставляя пользователей зарегистрироваться на веб -сервере, как и регистрация в своей собственной сети, общая производительность безопасности Windows 2000 предоставляет IIS более сильные и более безопасные возможности проверки. Тем не менее, это может работать только с браузерами с Internet Explorer 3.0 и выше. IIS также может использовать базовую проверку, чтобы позволить не-микрософтовым браузерам регистрировать веб-сервер.
2 Больше нет анонимных посетителей
При использовании ASP на веб -сервере IIS пользователи могут отслеживать в текущем сеансе, если пользователь не покинет сайт на другой веб -сайт или не закрывает браузер. Позже в этой главе вы увидите, как эта функция используется для идентификации посетителя, хранения локальной информации пользователя и обеспечения статуса. Ниже приводится обсуждение того, как это работает по сравнению с уже обсуждаемыми решениями.
ASP и IIS совместно предложили концепцию пользовательских сеансов, взаимодействуя через объекты сеанса ASP. Когда каждый посетитель сначала обращается к веб -странице ASP на сервере, создайте для него новый и независимый объект сеанса, назначьте идентификационный номер сеанса и добавьте специальную зашифрованную версию идентификатора сеанса.
Путь cookie (см. Предыдущую главу для описания атрибутов cookie) установлен на корневой путь приложения ASP, работающего на сервере. Это, вероятно, будет в корневом каталоге веб -сайта по умолчанию (то есть /), но это также может быть еще одним значением (см. Позже). Срок действия истечения срока действия не предоставляется в файле cookie, поэтому, когда браузер закрыт, значение cookie исчезает.
Всякий раз, когда этот пользователь посещает эту веб -страницу ASP, ASP будет искать этот файл cookie. Назван ASPSessionIdxxxxxxxxx, где каждый x является алфавитным символом. Из коллекции ServerVariables, показанной на рисунке 2-7 в главе 2, вы можете увидеть его в заголовке HTTP.
Тем не менее, этот файл cookie не появляется в запросе. Cookies или Response.cookies Collection, которая скрывает ASP, но все еще сохраняется в браузере. Для каждого запроса веб -страницы ASP ASP должен просмотреть значение. Значение, содержащееся в этом cookie, указывает сеанс пользователя. Следовательно, содержание соответствующего объекта сеанса (который был обработан в памяти и всегда содержит все значения, которые работают в процессе предыдущего запроса страницы), может быть передано сценарию на веб -странице ASP.
Конечно, как упоминалось ранее, если клиентский браузер не получает или не поддерживает эти файлы cookie, эта обработка потерпит неудачу. В этом случае сеанс ASP не может быть создан, и статус этого посетителя не поддерживается автоматически.