Система WWW построена на специальном протоколе передачи данных, который называется протоколом передачи гипертекста HTTP (читается "эйч-ти-ти-пи", HyperText Transfer Protocol). Всё содержимое системы WWW состоит из WWW-страниц.
WWW-cтраницы — гипермедийные документы системы World Wide Web. Создаются с помощью языка разметки гипертекста HTML (Hypertext markup language).
Язык HTML позволяет добавлять к текстовым документам специальные командные фрагменты — тэги (англ. tag — "этикетка, ярлык") таким образом, что становится возможным связывать с этими документами другие тексты, графику, звук и видео, задавать заголовки различных уровней, разделять текст на абзацы, строить таблицы и т. д. Например, заголовок документа может иметь такой вид:
<TITLE> Клуб любителей персиков </TITLE>
Одну WWW-страницу на самом деле обычно составляет набор гипермедийных документов, расположенных на одном сервере, переплетённых взаимными ссылками и связанных по смыслу (например, содержащих информацию об одном учебном заведении или об одном музее). Каждый документ страницы, в свою очередь, может содержать несколько экранных страниц текста и иллюстраций. Каждая WWW-страница имеет свой "титульный лист" (англ. "homepage") — гипермедийный документ, содержащий ссылки на главные составные части страницы. Адреса "титульных листов" распространяются в Интернет в качестве адресов страниц.
Личные страницы — такие WWW-страницы, которые принадлежат не фирмам и не организациям, а отдельным людям. Содержание и оформление такой страницы зависит только от её автора.
При работе с системой WWW пользователи имеют дело с программами-клиентами системы, называемыми браузерами.
Браузеры (англ. browse — листать, просматривать) — программы, с помощью которых пользователь организует диалог с системой WWW: просматривает WWW страницы, взаимодействует с WWW-cерверами и другими ресурсами в Интернет.
Существуют сотни программ-браузеров. Самые популярные браузеры: Netscape Navigator и Microsoft Internet Explorer. Браузеры WWW умеют взаимодействовать с любыми типами серверов, используя при этом их собственные протоколы. Информацию, полученную от любого сервера, браузер WWW выводит на экран в стандартной, удобной для восприятия форме. При этом переключения с одного протокола на другой для пользователя часто остаются незамеченными.
Протокол HTTP
В «сердце» web находится протокол передачи гипертекста (HTTP), являющийся протоколом прикладного уровня. Описание HTTP можно найти в RFC 1945 и RFC 2616. Протокол HTTP реализуется с помощью двух программ: клиента и сервера, которые, находясь на разных оконечных системах, обмениваются HTTP-сообщениями. Порядок обмена и содержание сообщений описаны в протоколе. Перед тем как углубиться в изучение HTTP, сначала освоим терминологию, используемую в контексте web.
Каждая web-страница, или документ, состоит из объектов. Объект представляет собой обычный файл в формате HTML, изображение в формате JPEG или GIF, Java-апплет, аудиоклип и т. п., то есть единицу, обладающую собственным универсальным указателем ресурса (Uniform Resource Locator, URL). Как правило, web-страницы состоят из базового HTML-файла и объектов, на которые он ссылается. Так, если web-страница включает базовый HTML-файл и пять изображений, то она состоит из шести объектов. Ссылки на объекты, относящиеся к web-странице, представляют собой URL-адреса, включенные в базовый HTML-файл. URL состоит из двух частей: имени хоста сервера, на котором находится объект, и пути к объекту. Так, например, для URL _www. someSchool. edu/someDepartment/picture. gif именем хоста является фрагмент _www. someSchool. edu, а путем к объекту — фрагмент someDepartment/picture. gif.
Браузером называется агент пользователя web; он отображает web-страницы, а также выполняет множество дополнительных служебных функций. Кроме того, браузеры представляют клиентскую сторону протокола HTTP. Таким образом, термины «браузер» и «клиент» в контексте web будут употребляться как эквивалентные. В число наиболее популярных браузеров входят Netscape Navigator и Microsoft Internet Explorer.
Web-сервер содержит объекты, каждый из которых идентифицируется своим URL-адресом. Кроме того, web-серверы представляют серверную сторону протокола HTTP. К наиболее популярными web-серверам следует отнести Apache и Microsoft Internet Information Server.
Протокол HTTP определяет, каким образом клиенты (например, браузеры) запрашивают web-страницы, а серверы осуществляют передачу этих страниц. Более подробный разговор о взаимодействии клиента и сервера мы проведем позднее, однако основную идею можно понять из рис. 2.4. Когда пользователь запрашивает web-страницу (например, совершает щелчок на гиперссылке), браузер посылает серверу HTTP-запрос объектов, составляющих web-страницу. Сервер получает запрос и высылает ответные сообщения, содержащие требуемые объекты. В 1997 году практически все web-браузеры и web-серверы стали поддерживать протокол HTTP версии 1.0, описанный в документе RFC 1945. В 1998 году начался переход к версии 1.1, которая была описана в документе RFC 2616. Версия 1.1 имеет обратную совместимость с версией 1.0, то есть любой сервер или браузер, использующий версию 1.1, может в полной мере взаимодействовать с браузером или сервером, поддерживающим версию 1.0.
Как HTTP 1.0, так и HTTP 1.1 используют TCP в качестве протокола транспортного уровня. HTTP-клиент сначала устанавливает ТСР-соединение с сервером, а после создания соединения клиент и сервер начинают взаимодействовать с протоколом TCP через интерфейс сокетов. Как было сказано ранее, сокеты представляют собой «двери» между процессами и протоколом транспортного уровня.
Клиент посылает запросы и принимает ответы через свой интерфейс сокетов, а сервер использует интерфейс сокетов для получения запросов и их выполнения. После того как web-запрос минует сокет клиента, он оказывается «в руках» протокола TCP. Вспомним, что одной из функций протокола TCP является обеспечение надежной передачи данных; это означает, что каждый запрос, посылаемый клиентом, и каждый ответ сервера доставляются в виде, точно соответствующем отправленному. Здесь проявляется одно из достоинств многоуровневой коммуникационной модели: протоколу HTTP не нужно контролировать надежность передачи и обеспечивать повторную передачу пакетов при искажениях. Вся «черновая» работа будет проделана протоколом TCP и протоколами более низких уровней.
Необходимо отметить, что после завершения обслуживания клиентов сервер не сохраняет о них никакой информации. Если, например, какой-либо клиент сделает два запроса одного и того же ресурса подряд, сервер выполнит их, не выдав клиенту никакого оповещения о дублирующем запросе. Говорят, что протокол HTTP является протоколом без запоминания состояния (stateless protocol) соединения.
31. Структурное программирование. Тестирование.
Структурное программирование.
Общепринятого точного определения структурного программирования нет. Как концепция оно привлекло внимание после того, как Корадо Бойман и Джузеппе Якопини в 1966г. было доказано, что программу для решения любой логической задачи можно составить только из трех структур: следование, ветвление и повторение (цикл). Далее было указано, что неограниченное использование оператора goto нарушает соответствие между текстом и логикой работы программы (то есть программа плохо читается).
Можно так определить структурное программирование: это программирование, ориентированное на общение с людьми, а не с машиной. Для этого программа должна удовлетворять следующим требованиям:
- текст программы должен быть композицией трех основных элементов: следование, ветвление и цикл;
- употребление goto следует избегать всюду, где это возможно. Наихудшее применение goto – переход на оператор, расположенный выше в тексте программы;
- при написании программы желательно придерживаться следующих рекомендаций: используйте осмысленные имена для объектов; избегайте схожих имен; избегайте использования промежуточных переменных; во избежание неоднозначности употребляйте скобки в выражениях; по возможности избегайте специфических особенностей языка; не игнорируйте предупреждающие сообщения компилятора; игнорируйте все предложения по повышению эффективности, пока программа не будет правильной; используйте комментарии для записи спецификаций в начале модуля; комментируйте объявления переменных (для чего они предназначены); помните особенности внутреннего представления данных в ЭВМ и диапазоны значений типов переменных;
- текст программы нужно структурировать, то есть писать так, чтобы можно было легко выделять блоки программы;
- каждый модуль должен иметь один вход и один выход.
Защитное программирование (защита от дурака) – это контроль входных данных с целью обнаружения ошибок в них. Оно используется для следующих целей:
- устойчивость программы в целом;
- худшее, что может сделать модуль, – это получить неверные входные данные и выдать неверный, но правдоподобный результат.
Защитное программирование требует разумного подхода, так как, доведенное до крайности, оно может чрезвычайно усложнить программу.
Тестирование программного обеспечения.
Тестирование – это процесс выполнения программы с намерением найти ошибки. Если цель – показать отсутствие ошибок, то их будет найдено немного, если цель – показать наличие ошибок, то их будет найдено значительно больше. Отладка – это процесс установления точной природы уже найденной ошибки и ее исправление. Результат тестирования является исходными данными для отладки. Фундаментальные принципы тестирования отражены в следующих аксиомах тестирования.
1. Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |



