Конспект_лекций_Программное_обеспечение компьютерных сетей
методическая разработка по информатике и икт на тему
Конспект_лекций_Программное_обеспечение компьютерных сетей
Скачать:
Вложение | Размер |
---|---|
lektsii_programmnoe_obespechenie_kompyuternykh_setey.doc | 907.5 КБ |
Предварительный просмотр:
Курс лекций по дисциплине «Программное обеспечение компьютерных сетей»
для специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»
Раздел I. Основы технологии «клиент-сервер»
Основные принципы технологии «клиент-сервер»
Основные принципы технологии «клиент--сервер»
Основные положения лекции
- Введение
- Основные понятия
- История вопроса
- Опорная модель OSI
- Клиент-серверная модель и распределенные вычисления
- Введение
История объединения компьютеров между собой почти столь же стара, как и история создания собственно компьютеров. Еще на заре компьютерной эры пользователи ЭВМ поняли, что намного проще обмениваться данными между машинами по кабелю (использовались поддерживаемые со времен Norton Commander’а для DOS параллельный или последовательный интерфейсы), чем применять перенос данных с помощью гибкого диска. Однако такая скорость передачи данных по мере роста объема памяти и быстродействия ЭВМ быстро оказалась слишком малой для практического применения, и десятки фирм включились в гонку создания специального аппаратного (сетевых плат) и программного обеспечения, причем скорость передачи данных достигла десятков/сотен мегабит в секунду. Каждая фирма предлагала свой стандарт передачи данных и собственное программное обеспечение, через несколько лет были выработаны общеупотребительные стандарты на сетевые протоколы (наборы правил и соглашений, в соответствие с которыми производится обмен данными по сети) передачи данных.
- Основные понятия
Сеть ЭВМ - комплекс аппаратного и программного обеспечения, поддерживающий функции обмена информацией между отдельно расположенными (на расстояниях от нескольких метров до тысяч километров) компьютерами. Сеть с централизованным управлением содержат одну или более выделенных ЭВМ (серверов), управляющих обменом по сети (остальные ЭВМ в этом случае называются рабочими станциями), одноранговая сеть не содержит выделенных машин (функции управления сетью осуществляются рабочими станциями поочередно).
Соответственно программное обеспечение компьютерных сетей - комплекс программ, поддерживающий функции обмена информацией между отдельно расположенными ЭВМ. В настоящее время программное обеспечение компьютерных сетей обычно является (иногда опционально устанавливаемой) составной часть операционных систем.
Локальная вычислительная сеть (ЛВС) - система связи отдельно расположенных ЭВМ на относительно небольшом расстоянии (обычно в пределах помещении и/или этажа здания); обычно объединяет до нескольких десятков (чаще однотипных) компьютеров, физическая линия связи - двухпроводной кабель или коаксиальный кабель .
Корпоративная вычислительная сеть - сеть, работающая по протоколу TCP/IP и не обязательно подключенная к InterNet, но использующая коммуникационные стандарты InterNet’а и сервисные приложения, обеспечивающие доставку данных пользователям сети; эксплуатируется в пределах (крупной) организации.
Глобальная вычислительная сеть объединяет множество локальных сетей и сотни тысяч - миллионы разнотипных ЭВМ по всему миру, физическая линия связи - оптокабель или космическая радиолиния связи.
Рабочая группа (workgroup) - набор компьютеров, объединенных для удобства при просмотре сетевых ресурсов одним именем.
Домен (domain) - определенная администратором сети совокупность компьютеров, использующих в операционной системе WINDOWS NT Server общую базу данных и систему защиты; каждый домен имеет уникальное имя.
Узел (host) - подключенное к сети устройство (обычно компьютер), идентифицируемое собственным адресом.
Скорость передачи данных по компьютерной сети измеряется в битах в секунду (bps - bit per second) или бодах (boud).
Трафик (traffic) - поток сообщений в разделяемой среде передачи данных, часто используется для грубой оценки уровня использования передающей среды (тяжелый, средний, легкий трафик).
Серверная ЭВМ - компьютер (обычно обладающий высоким быстродействием и значительным объемом оперативной и дисковой памяти) и выполняющий запросы, поступающие с клиентских ЭВМ.
Файл-сервер - выделенная ЭВМ, выполняющая функции хранения данных и программ, используемых пользователями на клиентских ЭВМ.
Серверное приложение - выполняющееся ЭВМ приложение, могущее выполнять запросы, генерируемые другим (выполняющемся на данной или удаленной ЭВМ) приложением-клиентом.
Клиентская ЭВМ - пользовательский компьютер (обычно обладающий ограниченными ресурсами), выдающий запросы для исполнения серверу.
Клиентское приложение - приложение, обращающееся (с целью выполнения отдельных функций) к другому приложению-серверу (и обычно инициирующее начало его выполнения и завершение).
Протокол (коммуникационный) - набор правил и соглашений, согласно которому взаимодействуют два (или более) компьютеров.
- История вопроса
Пожалуй, лишь первые несколько месяцев после начала производства ЭВМ требование объединения компьютеров между собой не стояло остро. Однако даже первые ПЭВМ были оснащены аппаратурой, пригодной для создания (примитивной) сети (порты для последовательного обмена данными со скорость до 9600 бод). С развитием технических средств (сетевые платы, линии связи со значительной пропускной способностью) и соответствующего сетевого ПО процесс объединения ЭВМ в сети принял лавинный характер .
Однако до сих пор серьезной проблемой развития компьютерных сетей является далеко недостаточная совместимость различных операционных систем и программного обеспечения, используемых в ЭВМ различных мировых фирм-производителей (проблема остаются даже после выработки стандартов на сетевые платы и протоколы).
- Опорная модель osi
Для помощи производителям в стандартизации и интегрировании производимого сетевого ПО, Международная организация по стандартизации (ISO, International Standart Organization) в 1984 году определила программную модель пересылки сообщений между компьютерами. Эта модель получила название опорной модели соединения открытых систем - Open Systems Interconnection (OSI) reference model . В модели OSI определены семь уровней программного обеспечения.
Опорная модель OSI - идеальная схема, точно реализованная на очень немногих системах, однако она часто используется при обсуждении основных принципов работы сетей. Каждый уровень одной из машин ‘считает’, что он ‘разговаривает’ на одном и том же языке (или протоколе) с соответствующем уровнем другой ЭВМ. Однако в действительности сетевой запрос должен ‘спуститься’ до самого нижнего (физического) уровня (на котором обе ЭВМ в реальности обмениваются данными), затем он передается по физическому носителю и вновь ‘поднимается’ до уровня, который его ‘поймет’ и обработает. Набор протоколов, в соответствие с которым запрос проходит вниз по уровням сети и обратно, называется стеком протоколов (protocol stack). Каждый уровень несет ответственность за выполнение ограниченного набора функций и может взаимодействовать только с двумя непосредственно прилежащими уровнями.
Задача каждого уровня состоит в предоставлении обслуживания верхним уровням, абстрагируясь от того, каким образом реализовано это обслуживание.
- Клиент-серверная модель и распределенные вычисления
Компоненты сетевого ПО являют собой типичный пример клиент-серверных приложений - в каждый момент времени один из процессов (выступающий при этом в роли клиента) запрашивает некоторые сервисные функции (например, требование связаться по сети с удаленной ЭВМ) у другого, последний же предоставляет требуемый сервис (является сервером); во многих случаях в зависимости от ситуации процессы могут меняться функциями.
Функции клиента:
- Предоставление пользовательского интерфейса, ориентированного на определенные производственные обязанности и полномочия пользователя.
- Формирование запросов к серверу, причем не обязательно информируя об этом пользователя, в идеале пользователь вообще не вникает в технологию общения ЭВМ, за которой он работает с сервером.
- Анализ ответов сервера на запросы предъявление их серверу
Функция сервера: Выполнение специфических действий по запросам клиента. Если сервер не решает задачу, он обращается к другому серверу, более мощному
Вопросы для самоконтроля:
- Дайте определения следующим понятиям: компьютерная сеть, программное обеспечение компьютерных сетей.
- Основная идея клиент-серверной модели.
- Перечислите функции клиента.
- Что такое сервер? Его функции.
- Могут ли клиент и сервер располагаться на одном компьютере?
Раздел I. Основы технологии «клиент-сервер»
1.2 Серверы приложений.
Серверы приложений. Web-серверы
Основные положения лекции
- Типы серверов
- Web-серверы
- Типы серверов
В серверных сетях осуществляется четкое разделение функций между компьютерами: одни их них постоянно являются клиентами, а другие — серверами.
С точки зрения аппаратных средств сервер — это компьютер, который способен оказывать некоторые услуги другим, подсоединенным к нему компьютерам. Подразумевается, что компьютеры каким-то образом связаны с сервером и друг с другом.
Серверы можно классифицировать, например, как по классу решаемых задач, так и по количеству обслуживаемых клиентов. В соответствии со вторым подходом различают серверы масштаба рабочей группы (workgroup); отдела (department); средних организаций (midrange); предприятия (enterprise).
Ниже описываются некоторые распространенные типы серверов, классифицируемых по классу решаемых задач.
- Универсальный сервер, предназначенный для выполнения несложного набора различных задач обработки данных в локальной сети.
- Сервер базы данных, выполняющий обработку запросов, направляемых базе данных. Серверы баз данных используются для обработки бизнес-транзакций и пользовательских запросов. По мере расширения электронного бизнеса используемые базы данных усложняются и увеличиваются в объеме. Ключевая характеристика сервера баз данных — его способность быстро извлекать и форматировать данные.
- Proxy сервер, подключающий локальную сеть к сети Internet. Две основные функции этого компьютера заключаются в следующем. Во-первых, он действует как посредник, помогая пользователям получить информацию из Интернета и при этом обеспечивая защиту сети. Во-вторых, прокси-сервер может сохранять часто запрашиваемую информацию в кэш-памяти на локальном диске, быстро доставляя ее пользователям без повторного обращения к Интернету.
- Брандмауэры. Прокси-серверы можно сконфигурировать так, что они будут принимать или отвергать определенные типы сетевых запросов, поступающие как из локальной сети, так и из Интернета. В такой конфигурации прокси-сервер становится межсетевым экраном — брандмауэром.
- Почтовый сервер. Подобно прокси-серверу, почтовый сервер (иногда называемый сервером сообщений) должен заниматься как входящими, так и исходящими запросами. Одна из задач почтового сервера — чтение адресов входящих сообщений и доставка корреспонденции в соответствующие почтовые ящики в пределах интрасети.
- Сервер приложений, предназначенный для выполнения прикладных процессов. С одной стороны, взаимодействует с клиентами, получая задания, а с другой стороны, работает с базами данных, подбирая данные, необходимые для обработки. Для сервера приложений характерны расширенные возможности обработки информации, а взаимодействие с клиентом становится подобным работе приложения.
- Сервер удаленного доступа, обеспечивающий сотрудникам, работающим дома торговым агентам, служащим филиалов, лицам, находящимся в командировках, возможность работы с данными сети. Эти системы позволяют связываться с офисной сетью по телефонным линиям.
- Телефонный сервер, предназначенный для организации в локальной сети службы телефонии. Этот сервер выполняет функции речевой почты, автоматического распределения вызовов, учет стоимости телефонных разговоров, интерфейса с внешней телефонной сетью. Наряду с телефонией сервер может также передавать изображения и сообщения факсимильной связи.
- Серверы FTP. Подобные серверы, работающие на основе протокола File Transfer Protocol, уже много десятилетий назад стали стандартом де-факто при перемещении файлов в Интернете. FTP-серверы поддерживают работу простых файловых менеджеров — клиентов.
- Терминальный сервер, объединяющий группу терминалов, упрощающий переключения при их перемещении.
- Коммуникационный сервер, выполняющий функции терминального сервера, но осуществляющий также маршрутизацию данных.
- Видеосервер, который в наибольшей степени приспособлен к обработке изображений, снабжает пользователей видеоматериалами, обучающими программами, видеоиграми, обеспечивает электронный маркетинг. Имеет высокую производительность и большую память.
- Факс–сервер, обеспечивающий передачу и прием сообщений в стандартах факсимильной связи. В известном смысле факс-серверы служат мостом между старым и новым способами ведения бизнеса. Во многих отношениях факс-сервер подобен упоминавшемуся ранее почтовому серверу.
- Сервер защиты данных, оснащенный широким набором средств обеспечения безопасности данных и, в первую очередь, идентификации паролей.
- Сервер печати (принт-сервер) представляет собой печатающее устройство, которое с помощью сетевого адаптера подключается к передающей среде. Сервер печати обслуживает заявки на печать от всех серверов и рабочих станций. Кроме того, принимая на себя все заботы о выводе документов на печать, принт-сервер освобождает компьютеры для другой работы.
- Сетевой сервер представляет собой специализированный компьютер, ориентированный на выполнение основного объема вычислительных работ и функций по управлению компьютерной сетью. Этот сервер содержит ядро сетевой операционной системы, под управлением которой осуществляется работа всей локальной сети. Сетевой сервер обладает достаточно высоким быстродействием и большим объемом памяти.
- «Беспроводной» сервер. В своей простейшей интерпретации такой компьютер может представлять собой типичный Web-сервер или сервер приложений, который просто знает, как передавать документы, составленные на стандартном для беспроводных устройств языке.
- Файловый сервер, обеспечивающий функционирование распределенных ресурсов, включая файлы, программное обеспечение. Файл-сервер хранит данные пользователей сети и обеспечивает им доступ к этим данным. Это компьютер с большой емкостью оперативной памяти, жесткими дисками большой емкости и дополнительными накопителями на магнитной ленте (стриммерами).
- Web–сервер, предназначенный для работы с web–информацией. Web-сервер похож на роботизированный буфет. Клиент запрашивает у него нечто — в нашем случае файл, — а Web-сервер получает этот файл и пересылает его клиенту. В большинстве случаев оригинальный Web-сервер ничего с этим файлом не делает, просто отпасовывая его клиенту.
Web-серверы
IIS – Internet Information Services.
Информационные службы интернета (Internet Information Services, IIS) представляют собой пакет приложений для интернета, выпускаемый компанией Microsoft. Входит в поставку некоторых версий Windows. Как и все продукты от Microsoft, легок в установке и управлении.Информационные службы интернета - это не просто веб-сервер. Они обеспечивают поддержку всемирной сети, протоколов передачи файлов (FTP), протоколов передачи новостей интернета (NNTP) и простых сообщений электронной почты (SMTP). IIS полностью интегрированы в операционную систему, совместимы с приложениями Microsoft.Net и позволяют организациям реализовывать интернет-возможности, дополняющие их инфраструктуру.
По мере того как интернет занимает все большую часть современной жизни, его инфраструктура становится более сложной, и для поддержки этой инфраструктуры требуются все более обширные знания.
Apache
Сервер apache берет свое начало от срвера httpd, созданного Робом Макколом в национальном центре по применению суперкомпьютеров (National Center for Supercomputing Applications - NCSA).
Является одним из самых популярных серверов во всем интернете. Изначально разрабатывался для ОС UNIX, но уже сейчас он является кросс-платформенным, т.е. его можно легко переносить на разные платформы. Для этого необходимо только немного поправить конфигурационные файлы. Apache довольно защищенный и безопасный сервер. Стоит так же заметить, что сервер apache абсолютно бесплатный, что, наверное, и делает его очень популярным.
Вопросы для самоконтроля:
- По каким критериям классифицируются серверы?
- Перечислите наиболее популярные типы серверов.
- Назовите сервер, который снабжает пользователей видеоматериалами, обучающими программами.
- Для чего предназначен Web-сервер?
- Приведите сравнительную характеристику двух популярных Web-серверов.
Раздел I. Основы технологии «клиент-сервер»
1.2 Серверы приложений.
Основы Web-программирования
Основные положения лекции
- Происхождение слова "дизайн"
- Web-дизайн
- Web-программирование
- Происхождение слова "дизайн"
Слово дизайн в русском языке появилось относительно недавно. Пришло оно из итальянского языка и в переводе имеет множество значений. “Disegno” - это замысел, план, намерение, цель, чертеж, эскиз, набросок, рисунок, узор, модель, шаблон, лежащая в основе схема, композиция. Для Интернет понимание дизайна носит особый характер. В связи с бурным развитием современных технологий, понятие дизайна приобрело новый, более широкий смысл и теперь обозначает не только какой-то отдельный предмет, а является целым направлением, применимым ко всем областям современной деятельности человека.
Предпосылками дизайнерского искусства являются:
- прежде всего, естественное человеческое стремление к прекрасному, а также желание воплощения новых и все более совершенных образов
- экономическая выгода, являющаяся огромным мотивом для развития дизайна
В последнее время весьма распространенным видом дизайна является Web-дизайн. И это неудивительно, ведь развитие продуктов Интернет-бизнеса является весьма удобным как для реализации экономических интересов различных компаний, так и для реализации художественных замыслов самого дизайнера.
Web-дизайн
Дизайн — это конструирование предметов потребления (вещей, машин, интерьеров...), основанное на сочетании удобства, экономичности и красоты.
Дизайн - величайшее современное искусство. Плоды работы дизайнера, должны доставлять удовольствие тем, кто ими пользуется.
Первый способ доставить удовольствие — это сделать вещь удобной. (Смотрим определение дизайна.) Это может быть, как просто ненавязчивый дизайн, не мешающий использованию изделия, так и помогающий им пользоваться.
Увлечение эстетической частью дизайна приводит часто к отсутствию удобства в использовании.
Итак, как говорилось выше, Web-дизайн является одним из наиболее современных видов дизайнерского искусства и при этом старается отвечать всем условиям практичного использования.
Наиболее распространенным видом деятельности современного дизайнера является создание макета для сайтов. Или Web-дизайн по-другому.
В основе web-дизайна лежат все те же основные принципы, что и в основе других разновидностей дизайна:
- принцип функционализма: “что функционально, то красиво”
- принцип конструктивизма, который заключается не в цели составления композиции, а в цели создания ее конструкции
Кроме того, сайт, продуманный в техническом смысле, должен быть проникнут духовной идеей, и, лишь тогда он сможет претендовать на конкурирование с другими работами подобного направления.
Web-дизайн ставит перед собой различные цели:
- формирование у пользователя положительного восприятия образа объекта рекламного продукта
- простоту и четкость структуры сайта
- интуитивно понятного пользовательского интерфейса
- удобство навигационной системы
А их достижение позволяет реализовать экономическую цель компаний, так и проблемы современной культуры требуют своего решения. В связи с этим создание сайтов приобрело новый смысл. Иногда дизайнеры поражают до глубины души своим мастерством и умением воплотить задуманное в реальную жизнь, а созданные ими работы, поистине заслуживают отнесения к современному виду искусства. Наряду с выставками дизайна интерьера, стали появляться выставки Web-мастеров. Новые технологии способствуют упрощению реализации образов Web-художником, но с другой стороны требуют немалого запаса знаний в разнообразных науках и культурах, а также достаточно хороших навыков в компьютерных технологиях. В общем, он должен иметь ассоциативное мышление, быть интеллектуально развитым и владеть элементарными техническими навыками. Ведь конструирование вещей основано на принципах сочетания удобства, экономичности и красоты. Web - дизайн является весьма перспективным видом творчества, а человек, занимающийся подобной работой, по-настоящему заслуживает уважения.
Web дизайн сегодня превратился в самостоятельное явление просто потому, что для занятия дизайном в Интернет недостаточно одного знания программ, предназначенных для работы с графикой и художественных способностей. Большинство вопросов сайта занимаются профессиональные программисты. Однако и работа дизайнера невозможна без чёткого представления технологий Интернет. Дизайнер должен чётко представлять языки программирования, некоторых тонкостях серверных технологий, и конечно же все что касается дальнейшей верстки. Он должен представлять себе, каким образом осуществляется передача данных в сети, как и в каком виде его разработки достигнут своего конечного пользователя – посетителя разрабатываемого сайта.
- Web-программирование
Основой всего веб-дизайна является Hyper Text Markup Language (HTML) – язык разметки гипертекста. Именно он используется для верстки веб-страниц, размещаемых в Интернете. В отличие от обычного («линейного») текста гипертекст является системой связанных между собой страниц. Всю Всемирную паутину можно представить в виде одного гипертекстового документа.
HTML создавался для логической (смысловой) разметки документа и не предназначен для управления отображением содержимого на экране пользователя или при выводе на печатающее устройство. Тем не менее в течение длительного времени его неправомерно использовали для управления визуализацией. Ситуация изменилась, когда были созданы каскадные таблицы стилей (CSS). Именно они служат для указания браузеру способа отображения содержимого веб-страницы.
Таким образом, при создании веб-страниц необходимо использовать HTML-теги лишь для логического форматирования. Способ же отображения содержимого веб-страницы следует задавать при помощи каскадных таблиц стилей CSS.
Для реализации обработки пересылаемых на сервер данных форм HTML был разработан специальный протокол CGI (Common Gateway Interface). Написать программу, использующую этот протокол, можно на любом языке программирования, обеспечивающем доступ к системным переменным окружения. Наиболее популярным для разработки подобных программ стал язык Perl, а серверные Perl-программы стали называться CGI-сценариями. Разработку и реализацию выполняемых на сервере по запросу клиента программ на основе технологии CGI можно считать одной из первых технологий программирования в Интернете, если исключить из рассмотрения технологию разметки гипер-документов с помощью языка HTML. (В дальнейшем были разработаны и другие технологии динамического формирования страниц HTML на основе данных форм - ASP (Active Server Pages), JSP (Java Server Pages) и ColdFusion.) В настоящее время программирование на базе одной из упомянутых технологий обычно называется серверным Web-программированием.
Многое из того, что делает серверный сценарий можно осуществлять непосредственно на клиенте, если дополнить документ HTML встроенным в него программным сценарием, код которого обрабатывался бы непосредственно на компьютере клиента. Подобный язык под названием LiveScript был разработан специалистами компании Netscape и реализован в ее программе просмотра Интернета Netscape Navigator. Впоследствии из-за маркетинговых соображений он получил название JavaScript. Первые версии языка позволяли до отправки данных формы на сервер проверить их достоверность и полноту, а также в фоновом режиме загружать на компьютер клиента необходимые графические файлы.
В настоящее время существует стандарт ECMA языка JavaScript. Дополненный в дальнейшем возможностью работы с объектной моделью документа (DOM - Document Object Model), предложенной консорциумом W3С, и каскадными таблицами стилей (CSS - Cascading Style Sheet), позволяющими осуществить достаточно тонкое форматирование внешнего вида документа HTML, этот язык стал основным языком клиентского программирования в сети Интернет для создания динамических страниц HTML. Технология динамического изменения содержимого страниц HTML на компьютере клиента без обращения к серверу на базе DOM, CSS и языка сценариев JavaScript (или подобного ему VBScript или PerlScript) получила название технологии Dynamic HTML (DHTML).
Вопросы для самоконтроля:
- Что такое дизайн?
- Назовите предпосылки развития дизайна.
- Какие принципы положены в основе Web-дизайна?
- Назовите цели Web-дизайна.
- Перечислите основные технологии, используемые в Web-программировании.
Раздел I. Основы технологии «клиент-сервер»
1.3. Web-сервис.
Протоколы прикладного уровня
Основные положения лекции
- Протокол TELNET
- Электронные доски объявлений (BBS).
- Протокол FTP
- Протокол SMTP
- NFS
- Протокол SNMP
- HyperText Transfer Protocol (HTTP)
Telnet обеспечивает взаимодействие с удаленным компьютером. Установив такую связь через Telnet, пользователь получает возможность работать с удаленным компьютером, как со "своим", т.е. теоретически получить в свое распоряжение все ресурсы, если к ним разрешен доступ. Реально Telnet предоставляет открытый доступ, но организация взаимодействия полностью определяется удаленным компьютером. Два вида услуг Internet требуют подключения к серверам через Telnet: библиотечные каталоги и электронные доски объявлений (BBS).
Программа Telnet в использовании очень проста. Для установки с ее помощью связи с каким-либо компьютером, подключенным к сети, необходимо знать его полный адрес в Internet, При установлении соединения с нужным компьютером следует указать в команде его адрес, В процессе соединения хост-компьютер запрашивает имя пользователя. Для работы в удаленной системе пользователь должен иметь там права доступа. После успешного подключения к хост-компьютеру пользователь должен указать тип используемого терминала. Для удобства работы пользователя хост-компьютер обычно указывает ему способ вызова справочной информации.
Работа с удаленной системой может вестись в "прозрачном" режиме, когда программы на сервере и у клиента только обеспечивают протокол соединения, и в командном, когда клиент получает в свое распоряжение набор команд сервера.
Электронные доски объявлений (BBS). Независимо от Internet существуют маленькие диалоговые службы, предоставляющие доступ к BBS (Bulletin Board System - система электронных досок объявлений).
Это компьютеры, к которым можно подсоединиться с помощью модемов через телефонную сеть. BBS содержат файлы, которые можно переписывать, позволяют проводить дискуссии, участвовать в различных играх и имеют свою систему электронной почты.
Самой крупной и известной системой электронных досок объявлений является система CompuServe. Она насчитывает около двух миллионов пользователей. Для расширения своих возможностей CompuServe подключается к Internet и предоставляет своим пользователям право доступа к службам Internet.
Протокол FTP
Протокол FTP (File Transfer Protocol - протокол передачи файлов) распространен также широко как TELNET. Он является одним из старейших протоколов семейства TCP/IP. Также как TELNET он пользуется транспортными услугами TCP.
Для того чтобы обеспечить перемещение данных между различными операционными системами, которые могут встретиться в Internet, используется протокол FTP (File Transfer Protocol), работающий независимо от применяемого оборудования. Протокол обеспечивает способ перемещения файлов между двумя компьютерами и позволяет абоненту сети Internet получить в свое распоряжение множество файлов. Пользователь получает доступ к различным файлам и программам, хранящимся на компьютерах, подключенных к сети. Пользователь FTP может вызывать несколько команд, которые позволяют ему посмотреть каталог удаленной машины, перейти из одного каталога в другой, а также скопировать один или несколько файлов.
Программа, реализующая этот протокол, позволяет установить связь с одним из множества FTP-серверов в Internet.
FTP-сервер - компьютер, на котором содержатся файлы, предназначенные для открытого доступа.
Программа FTP-клиент не только реализует протокол передачи данных, но и поддерживает набор команд, которые используются для просмотра каталога FTP-сервера, поиска файлов и управления перемещением данных.
Для установки связи с FTP-сервером пользователь при работе в Unix или MS DOC должен ввести команду ftp, а затем адрес или доменное имя его.
Если связь установлена, появится приглашение ввести имя пользователя. Пользователь, не зарегистрированный на сервере, может представиться именем "anonymus" и получит доступ к определенным файлам и программам. Если будет запрошен пароль, можно ввести свой адрес электронной почты. Поступившее после выполнения этих процедур приглашение позволяет работать с FTP-сервером.
Еще один способ работы основан на использовании приложений - навигаторов WWW, таких, как Microsoft Interact Explorer, Netscape Navigator.
Протокол SMTP
Протокол SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты) поддерживает передачу сообщений (электронной почты) между произвольными узлами сети internet. Имея механизмы промежуточного хранения почты и механизмы повышения надежности доставки, протокол SMTP допускает использование различных транспотных служб. Он может работать даже в сетях, не использующих протоколы семейства TCP/IP. Протокол SMTP обеспечивает как группирование сообщений в адрес одного получателя, так и размножение нескольких копий сообщения для передачи в разные адреса. Над модулем SMTP располагается почтовая служба конкретных вычислительных систем.
NFS
Сетевая файловая система NFS (Network File System) впервые была разработана компанией Sun Microsystems Inc. NFS использует транспортные услуги UDP и позволяет монтировать в единое целое файловые системы нескольких машин с ОС UNIX. Бездисковые рабочие станции получают доступ к дискам файл-сервера так, как-будто это их локальные диски.
NFS значительно увеличивает нагрузку на сеть. Если в сети используются медленные линии связи, то от NFS мало толку. Однако, если пропускная способность сети позволяет NFS нормально работать, то пользователи получают большие преимущества. Поскольку сервер и клиент NFS реализуются в ядре ОС, все обычные несетевые программы получают возможность работать с удаленными файлами, расположенными на подмонтированных NFS-дисках, точно также как с локальными файлами.
Протокол SNMP
Протокол SNMP (Simple Network Management Protocol - простой протокол управления сетью) работает на базе UDP и предназначен для использования сетевыми управляющими станциями. Он позволяет управляющим станциям собирать информацию о положении дел в сети internet. Протокол определяет формат данных, их обработка и интерпретация остаются на усмотрение управляющих станций или менеджера сети.
HyperText Transfer Protocol (HTTP)
HTTP - это новый Internet протокол, который спроектирован специально для быстрого манипулирования с гипертекстовыми документами. Подобно другим Internet инструментариям, таким как FTP, WAIS и Gopher, HTTP - это клиент-сервер протокол. В модели клиент-сервер программа клиент, которая исполняется на компьютере пользователя, посылает запрос к программе сервера, которая исполняется на другом компьютере в сети Internet. Ответ на запрос сервер отсылает снова клиенту. В поцессе обмена этими сообщениями, клиент и сервер используют протокол (совокупность правил, согласно которым компьютеры взаимодействуют между собой). FTP, WAIS и Gopher - другие примеры протоколов клиент-сервер сети Internet, каждый из которых также доступен через WWW броузер. Однако HTTP был сконструирован специально для работы с гипертекстовыми документами.
На самом простом уровне HTTP серверы действуют подобно анонимным FTP серверам, поставляя файлы по запросам клиентов. Однако HTTP cервера поддерживают еще ряд важных дополнительных функций:
- возможность отсылать клиенту не только файлы, но также и дополнительную информацию, которая генеруется программами, которые исполняются на сервере;
- возможность брать данные, посланные клиентом и передать эту информацию другим программам, которые находятся на сервере, для дальнейшей обработки.
Специальные программы, которые находятся на сервере и исполняют эти функции, называются программами gateway (шлюз), поскольку они действительно действуют как шлюз между HTTP сервером и другими локальными ресурсами, такими как, например, базы данных.
Вопросы для самоконтроля:
- Что такое протокол? Перечислите протоколы прикладного уровня.
- Какой протокол позволяет работать с удаленным компьютером как со своим?
- Какой протокол предназначен для передачи гипертекстовых документов?
Раздел I. Основы технологии «клиент-сервер»
1.3. Web-сервис
Web-сервис
- Основные понятия web-сервиса
- Что такое web-служба
- Для чего нужны web-службы
- Базовые технологии
- Как это все работает
- Разработка сервиса
- Основные понятия web-сервиса
Идея веб-сервисов была разработана такими гигантами компьютерной индустрии как Sun, Oracle, HP, Microsoft и IBM. В этой идее нет ничего нового, но это большой шаг вперед к упрощенному доступу к программам через сеть. Основываясь на стандартных форматах связи, веб-сервисы могут вообще поменять наше представление о том, как мы должны делать веб-сайты.
Благодаря веб-сервисам функции любой программы могут стать доступными через Интернет. Таким образом, такие программы как PHP, ASP, JSP скрипты, JavaBeans, COM-объекты и все остальные наши любимые средства программирования могут теперь обращаться к какой-нибудь программе, работающей на другом сервере (т.е. к веб-свервису), и использовать ответ, полученный от нее на своем веб-сайте, или приложении.
- Что такое web-служба
Web-службы — это технология предоставления совместно используемых функций, не зависящих от устройств, сетей, операционных систем и языков программирования.
Web-служба (Web Service) — это приложение или блок находящегося на web-сервере выполняемого кода, функционирование которого основано на применении стандартных форматов XML. Поиск этого кода, его извлечение и получение посредством него требуемого результата выполняется в среде .NET Framework. Вызывается web-служба .NET так же просто, как и локальная функция.
Принципы, лежащие в основе веб-сервисов, удивительно просты. И они ничего не добавляют нового в мир распределенных вычислений и Интернета:
- лицо, ответственное за веб-сервис, определяет формат запросов к своему веб-сервису и его ответов
- любой компьютер в сети делает запрос к веб-сервису
- веб-сервис обрабатывает запрос, выполняет какое-либо действие, а затем отправляет ответ
Этим действием может быть например вывод котировки акций, вывод цены на определенный продукт, сохранение записи в календаре встреч, перевод текста с одного языка на другой, или проверка номера кредитной карточки
- Для чего нужны web-службы
Web-службы предоставляют способ совместного использования программных функций. Их даже можно назвать «СОМ для Web», хотя в основе работы этих систем лежит совсем другая технология.
Web-служба не является продуктом для конечного пользователя. Она представляет собой основанное на компонентах приложение, позволяя многократно использовать свою функциональность в различных средах и на клиентах разных типов. Пользователем web-службы всегда является другое приложение.
Web-службы могут использоваться для решения следующих задач:
• С целью осуществления В2В-транзакций или соединения внутренних систем отдельных компаний
• В качестве готовых модулей для разработчиков
• Для придания дополнительных товарных качеств клиентским приложениям
• В качестве компонентных библиотек DLL для многократного использования кода
• В качестве инструментов, обеспечивающих взаимодействие различных программ в рамках одной компании
- Базовые технологии
Работа web-служб построена на использовании различных открытых стандартов, которые описаны в таблице.
Технология | Назначение |
WSDL | Основанный на XML формат описания web-службы, ее методов, типов данных параметров и возвращаемого значения, а также поддерживаемых методов коммуникации |
HTTP | Коммуникационный протокол, служащий для отправки запросов web-службе через Интернет. (Кроме того, это распространенный стандарт, применяемый для передачи web-страниц web-браузеру) |
SOAP | Основанный на XML формат кодирования информации в запросе, посылаемом web-службе, и ответном сообщении для отправки таковых через Интернет. Например, SOAP определяет способы представления величин различных типов данных |
DISCO | Необязательная спецификация Microsoft, позволяющая клиентам находить требуемые web-службы. DISCO-файл является, по сути, несистематизированным списком связей с web-службами. В настоящее время вытесняется стандартом WS-Inspection. |
UDDI | Каталог, который позволяет клиентам находить web-службы, предоставляемые конкретной компанией. UDDI является самым молодым среди стандартов web-служб |
Так как же найти нужный веб-сервис?
Представим себе, что я - разработчик сайта, и мой клиент попросил меня добавить к сайту новую функцию: необходимо добавить проверку правильности почтового индекса в регистрационной форме.
Для осуществления этой проверки мне понадобилось бы создавать базу данных всех почтовых индексов всех 30 стран, где наша компания ведет бизнес, а потом проверять при регистрации соответствие почтового индекса указанному в регистрации городу. Но у меня этих данных нет, и я думаю, что на сбор подобных данных придется потратить ощутимую сумму денег.
Вместо того, чтобы раскошеливаться на покупку базы данных, писать самому код, следить за целостностью и правильностью всех данных и отлаживать работу скриптов, я просто иду в каталог UDDI и ищу, нет ли там веб-сервиса, который мог бы сделать эту работу за меня. Придя на сайт http://www.uddi.org/, я запускаю поиск и нахожу прекрасный сервис от компании XYZ Corp.
Я внимательно рассматриваю определение формата веб-сервиса (определение записано на языке WSDL (Web Services Description Language), убеждаюсь, что сервис делает именно то, что мне нужно. Затем справляюсь у своих коллег о репутации компании XYZ Corp., узнаю, что она солидная, и затем обращаюсь к компании XYZ с вопросом о цене. Если цена на доступ к сервису доступна для моего бюджета, я пишу простую JSP-страницу для своего сайта, который вызывает веб-сервис компании XYZ Corp, и на сайте появляется моментальная проверка почтового индекса.
Минусы
К сожалению, за великий потенциал веб-сервисов приходится платить определенную цену:
- Использование XML в качестве формата передачи данных приводит к тому, что ваши сообщения будут очень большими по размеру: сами теги XML занимают много места, а это накладывает на нас определенную нагрузку по созданию, передаче и интерпретации сообщений.
- Так как мы используем удаленные компьютеры для выполнения определенных функций, мы полностью полагаемся на Интернет, что создает слишком много ненадежных звеньев в цепи между нашим веб-сервером и веб-сервисом.
- Сейчас лишь немногие компании создают веб-сервисы, и немногие компании ими пользуются. На отладку и улучшение системы веб-сервисов еще требуется длительное время.
- Система лицензирования и взимания платежей за пользование веб-сервисами еще должна быть принята разработчиками.
- Разработка сервиса
Выбор инструментов для разработки веб-сервисов обширен. В него входят инструментарии таких компании как Sun (Open Net), Microsoft (.NET), HP (e-services), и IBM (Web Services). Существуют также инструментарии с открытыми исходными кодами (open source frameworks).
Вопросы для самоконтроля:
- Дайте определение понятия веб-сервиса.
- Какие принципы лежат в основе веб-сервисов?
- Для решения каких задач, можно использовать веб-сервисы?
- Перечислите и охарактеризуйте стандарты, на основе которых работают веб-службы.
- Назовите недостатки веб-сервисов.
Раздел I. Основы технологии «клиент-сервер»
1.3. Web-сервис.
Web-сервис. Протокол SOAP
Основные положения лекции
- Веб-сервисы Microsoft .Net
- Достоинства web-служб .NET
- Протокол SOAP
- Web-службы конкурирующих фирм-производителей
- Веб-сервисы Microsoft .Net
В последнее время Веб-сервисы получили достаточно широкое распространение, и применяются в самых разных качествах: от простого предоставления справочных данных в Сеть, например, данных о прилете самолетов (Веб-сервис аэропорта Шереметьево), курсов валют и драгоценных металлов (Центральный Банк России) до работы с кредитными карточками (процессинговый центр Assist) и онлайновых переводов текста (Веб-сервис компании Prompt). Еще больше существует корпоративных Веб-сервисов, которые решают самые разные корпоративные задачи.
Такому широкому распространению Веб-сервисов немало способствовала технология Microsoft .Net. Дело в том, что создать Веб-сервис в той же Microsoft Visual Studio .Net 2003 невероятно просто. Грубо говоря, достаточно написать свой класс, унаследованный от класса System.Web.Services.WebService и объявить его методы как Веб-методы. И все! Компилируйте, переносите на рабочий сервер и ваш новый Веб-сервис готов к работе!
Так же просто написать и клиента для любого Веб-сервиса. В состав средств разработки Microsoft входит утилита wsdl.exe. Достаточно ей указать адрес WSDL документа, желаемый язык разработки (C#, VB.Net) и она сгенерирует вам код класса, который является прокси-классом для указанного Веб-сервиса, то есть его клиентом. То есть вы получаете готовый к использованию класс с тем же набором методов, что и Веб-сервис. Любое обращение к этим методам автоматически транслируется Веб-сервису и ответ Веб-сервиса возвращается как результат. Приложение даже не знает, что оно работает с Веб-сервисом, для приложения это просто обращение к локальному классу.
Все это очень значительно упрощает разработку и поэтому большинство Веб-сервисов, по крайней мере, в России, написаны именно на каком-нибудь языке .Net и работают именно на платформе .Net.
Узнать Веб-сервис .Net достаточно просто. Во-первых, файл, к которому происходит обращение, имеет расширение asmx, а во-вторых, при простом обращении к этому файлу (метод GET), Веб-сервис .Net генерирует HTML страничку с описанием своих методов, что тоже достаточно удобно. К тому же, Веб-сервисы .Net могут отвечать не только на запросы SOAP, но и на обычные запросы POST и GET. Но это больше дополнительные возможности, «фичи», которые к тому же, могут быть отключены разработчиком, и нами здесь не рассматриваются.
- Достоинства web-служб .NET
Web-службы были разработаны с целью преодоления ограничений описанных выше технологий. С помощью .NET компания Microsoft надеется построить более совершенную структуру программирования для создания и предоставления web-услуг.
Web-службы .NET отличаются от существующих технологий создания распределенных приложений следующими характеристиками.
• Открытость стандартов
• Межплатформенность
• Простота
• Поддержка сообщений на понятном человеку языке
Архитектура web-служб .NET
Реализация web-служб .NET осуществляется так же просто, как и активизация удаленной web-службы или вызов метода локального класса. Это достигается за счет применения инструментов, предоставляемых системой .NET Framework, которые позволяют создать полноценную web-службу, не вникая в детали работы таких стандартов, как SOAP и WSDL.
При работе web-служб .NET используется технология ASP .NET, являющаяся частью системы .NET Framework. Она также требует поддержки со стороны сервера Microsoft IIS (Internet Information Server). Среда Visual Studio .NET обеспечивает большое количество инструментов, которые помогают облегчить решение задач, связанных с получением и выполнением web-службы.
- Протокол SOAP
Связь между web-службами и их клиентами осуществляется посредством сообщений в формате XML. SOAP (Simple Object Access Protocol - простой протокол доступа к объектам) представляет собой протокол сообщений для выбора web-служб. Использование слова Object в названии данного протокола является не совсем корректным, поскольку сообщения SOAP не направляются объектам. Основная идея стандарта SOAP заключается в том, что сообщения должны быть закодированы в стандартизированном XML-формате. Можно сказать, что формат SOAP идеально подходит для технологии RPC (Remote Procedure Call - вызов удаленной процедуры), так как SOAP-сообщение содержит направляемые клиентом параметры или отсылаемую службой возвращаемую величину. Нет ничего удивительного в том, что другие программные продукты (скажем, сервер BizTalk компании Microsoft) применяют протокол SOAP для передачи иных типов информации. Аналогично, SOAP-сообщения могут использоваться не только при передаче по протоколу HTTP, но также при пересылке через сокеты, именованные каналы и даже по протоколу SMTP электронной почты.
Давайте рассмотрим преимущества применения формата SOAP.
- Более гибкие типы данных
- Кодировать в XML структуры данных и наборы DataSet с использованием SOAP так же легко, как и данные простых типов (скажем, целого или строкового).
- Поддержка заголовков и расширений
- При использовании SOAP-сообщений предоставляются дополнительные инструменты, позволяющие легко добавлять, например, функции обеспечения безопасности или трассировки.
- Истинная межплатформенность
Протокол SOAP лучше всего подходит для получения .NET-услуги на обычном клиенте. Имеются наборы инструментов SOAP для различных языков программирования (и даже для предыдущих версий Microsoft C++ и Visual Basic). Чтобы обеспечить связь с web-службой посредством методов GET и POST протокола HTTP, придется, очевидно, вручную сконструировать строку запроса, а затем вручную провести синтаксический разбор ответа, что, согласитесь, является не самым элегантным решением.
Сообщения между веб-сервисом и его пользователем пакуются в SOAP-конверты (SOAP envelopes). Сообщения содержат либо запрос на осуществление какого-либо действия, либо ответ - результат выполнения этого действия. Конверт и его содержимое закодировано языком XML, и его достаточно просто понять.
- Web-службы конкурирующих фирм-производителей
Microsoft — не единственный разработчик инструментов реализации web-служб. В настоящее время существуют инструменты создания web-служб для разнообразных языков и платформ. Некоторые из них перечислены ниже.
- Компания IBM предоставляет набор средств разработки Web Service Developinent Kit, содержащий среду выполнения и многочисленные примеры.
- Компания Oracle предлагает специальный язык для разработки web-служб Web Integration Development Language, а также собственные web-службы.
- Компания Sun Microsystems предоставляет среду Sun ONE (Open Net Environment), поддерживающую web-службы, написанные на языке Java.
- Набор SOAP Toolkit от Microsoft позволяет вызывать web-службы из программных продуктов, созданных в предыдущих версиях Microsoft Visual Studio (и написанных на таких языках, как Visual Basic и C++).
- Программа Internet Explorer версии 5 и более поздних дает возможность вызывать web-службы с web-страниц посредством простого сценарного кода. Эта технология носит название WebService Behavior.
- Язык Perl включает набор инструментов SOAP::Lite для работы с базовыми функциями SOAP.
Вопросы для самоконтроля:
- Приведите примеры веб-сервисов.
- Какими характеристиками отличаются веб-службы от других технолгий создания распределенных приложений?
- Назначение протокола SOAP? Преимущества применения формата SOAP.
- Какие инструменты создания web-служб для разнообразных языков и платформ вам ивестны?
Раздел II. Языки гипертекстовой разметки
2.1 Развитие языков разметки гипертекста
Развитие языков разметки гипертекста
Основные положения лекции
- История гипертекста и язык разметки HTML
- Языки разметки документов SGML, HTML, XML
- Структура HTML-документа
- HTML редакторы
- История гипертекста и язык разметки HTML
В 1986 г. Международная организация по стандартизации ISO одобрила стандарт SGML ISO-8879.
1989 г. известен появлением идеи Всемирной Сети. Она была предложена (а реализована через два года) Тимом Бернсом Ли, программистом Европейского центра ядерных исследований CERN, расположенного в Женеве. Тогда же он создал и новое SGML-приложение, известное сегодня как язык разметки HTML.
В 1992 г. Том Брюс распространил первый браузер Cello для компьютеров класса IBM PC, после чего множество компаний начали выпускать собственные Интернет-навигаторы. Это привело к массовой нестыковке, потому что каждый производитель браузеров старался дополнить тогда еще крайне ограниченный HTML своим набором тегов.
В феврале 1993 г. в Национальном центре суперкомпьютерных приложений США под руководством Марка Андриссена был создан браузер Mosaic для Unix, знаменитый первым графическим интерфейсом среди себе подобных. Летом Марк подготовил версии для Мака и Windows. А на следующий год группа разработчиков Mosaic, возглавляемая Джеймсом Кларком, создала собственную корпорацию Netscape Communications (которая вскоре потрясла Уолл-стрит самыми быстрыми в мире темпами роста) и затем выпустила коммерческий браузер Netscape.
Ведущие информационные корпорации, недовольные неразберихой тегов HTML, сформировали в декабре 1994 г. консорциум WWW (W3C), быстро взявший под свой контроль работу практически над всеми стандартами важнейших технологий Сети.
Тем временем была утверждена версия HTML 2.0 — такую ответственность взяла на себя Международная комиссия по стандартам в Интернете (Internet Engineering Task Force), разрабатывавшая сетевые протоколы.
В феврале 1996 г. Билл Гейтс провозгласил: “HTML стал нашим типом данных”. Это было объявлением войны новому конкуренту, Netscape. Интересно, что всего пару лет назад эксперты Microsoft предлагали руководству обратить серьезное внимание на Интернет, но тогда амбициозные менеджеры корпорации их не послушали. Теперь пришла пора наверстывать упущенное. Впрочем, ошибки допустили и конкуренты Microsoft. Джеймс Кларк не догадался выкупить исключительные права на браузер Mosaic, и его исходные тексты через фирму Spyglass приобрела Microsoft. В результате появившиеся летом обновленные браузеры Netscape Navigator 3.0 и Internet Explorer 3.0 оказались основанными на одном ядре, причем в последнем пакете была реализована поддержка всех тегов конкурента. С этого момента чаша весов стала неуклонно склоняться в его пользу. Вдобавок Microsoft решила распространять Internet Explorer бесплатно, и рыночная доля Netscape Navigator стремительно пошла вниз.
Между тем Дэйв Рэггетт, специалист W3C, трудился над третьей версией HTML 3.0 (известной также как HTML+). В результате была достигнута договоренность о выпуске в январе 1997-го стандарта HTML 3.2, объединившего наборы тегов, поддерживаемые и Netscape Navigator, и Internet Explorer. На скорейшем выходе HTML 3.2 настаивали также IBM, Novell и Sun.
Не выдержав давления софтверной империи Билла Гейтса, Netscape стала допускать новые ошибки. Все еще веря в собственное влияние на рынок, она не отнеслась с должным вниманием к новой технологии Cascading Style Sheets (CSS, аналог таблиц стилей DSSSL, только для HTML. Microsoft же, наоборот, выделила возможность создания сценариев в HTML-документах, предложив пользователям сразу два скрипт-языка — JScript и VBScript. Эта корпорация также начала финансировать подразделение W3C, ответственное за разработку новых рекомендаций HTML, фактически взяв под свой контроль процесс стандартизации браузеров.
Симпатии пользователей окончательно переместились к браузеру Internet Explorer.
Продолжалась подготовка нового стандарта HTML 4.0. Его рабочая версия стала доступной 8 июня 1997 г., а в декабре появилась и официальная рекомендация W3C.
В конце 90-х годов быстро набрал популярность новый язык разметки — XML. Он представляет собой упрощенный вариант SGML и также позволяет создавать пользовательские XML-приложения.
26 января 2000 г. вышла спецификация нового языка разметки XHTML 1.0, в которую консорциум W3C предложил переносить существующие HTML-материалы. Она была названа “переформулировкой HTML 4.0 в виде приложения XML 1.0”.
- Языки разметки документов SGLM, HTML, XML
Под разметкой документа принято понимать добавление в текст дополнительной информации, которая описывает скрытые свойства текста, такие как структура, форматирование, гипертекстовые связи и другие.
Общие принципы разметки документов представлены в SGML.
Подмножеством SGML является XML или Расширяемый язык разметки, представляющий собой стандартный язык разметки, предназначенный для описания и обмена структурированными данными в простом текстовом формате, независимом от программ и компьютерных платформ. XML представляет собой подмножество SGML, оптимизированное для обмена данными в Интернет. Главные особенности XML в отличие от HTML: расширяемый набор тегов и самоописываемый формат документа, а также четкое отделение содержания документа от его оформления. Структура документа может описываться при помощи DTD или схемы. Оформление документа описывается при помощи языков CSS, XSL или DSSSL.
Конкретным языком разметки, основанным на SGML, является HTML или Язык гипертекстовой разметки документов для публикации в Интернет. HTML определяет набор элементов и атрибутов для представления содержания и оформления документа, а также гиперссылок между документами и их фрагментами.
Язык разметки гипертекста, более известный как HTML, играет роль клея, связывающего Web в единое целое.
SGML – это глобальный стандарт для описания языков (таких, как HTML). Документы SGML являются программно- и аппаратно-независимыми, они не привязаны к какой-либо конкретной программе, компьютеру или устройству вывода.
Термин HTML используется для обозначения как типа документа, так и языка разметки для кодировки документов данного типа.
Язык разметки гипертекста определяет формальный набор правил и процедур для электронной интерпретации и представления подготовительного текста. За основу модели разметки документов в HTML принята теговая модель.
Теговая модель описывает документ как совокупность контейнеров, каждый из которых начинается и заканчивается тегами.
- Структура HTML-документа
Все HTML-документы состоят из заголовочной части (head) и тела документа (body). В заголовочной части помещается метаинформация, являющаяся описанием документа. В теле документа расположено непосредственно содержимое, которое выводится в окне браузера или на печатающее устройство. Вся веб-страница должна быть заключена в теги … .
- HTML редакторы
Вообще говоря, чтобы написать HTML-файл, достаточно иметь любой текстовый редактор, лишь бы он умел не добавлять в текст свои специальные символы. Самый простой вариант — это редактор Notepad (Блокнот), входящий в стандартную поставку Windows.
Однако в очень простых текстовых редакторах типа Блокнота весь HTML-текст приходится писать вручную, а многим хотелось бы какую-то часть работы автоматизировать.
Веб-редакторы типа WYSIWYG
Мы рассмотрели программы, в которых основной упор при создании веб-страниц сделан на написание HTML-коца. вручную. Однако существуют программы, позволяющие редактировать веб-страницы как бы в режиме WYSIWYG.
Эффективно управлять оформлением страницы таким способом тоже не удается.
Вообще говоря, для редактирования HTML-текста в режиме WYSIWYG можно использовать даже такой текстовый процессор, как Microsoft Word. Начиная с версии MS Word 97 он позволяет набрать некоторый текст, отформатировать его и сохранить в формате HTML. Если будете это делать, не забудьте удалить комментарии...
Основным недостатком MS FrontPage является то, что он генерирует очень большой HTML-код (слишком много лишнего), поэтому страницы получаются большими, что сказывается на скорости загрузки.
DreamWeaver 8.0
DreamWeaver на несколько шагов опережает другие редакторы, использующие технологию WYSIWYG, в первую очередь тем, что генерирует очень чистый HTML-код.
HomeSite 5.0
Следующий редактор - HomeSite 5 - для создания страниц вручную, т. е. для знатоков HTML. HomeSite содержит два основных режима: Edit и Design. Режим Design - это подобие WYSIWYG-редактора, выдающее HTML-код, причем, если вы загрузите чужой HTML-код, то HomeSite все перепишет по-своему. Режим Edit позволяет получить полный контроль над страничкой.
TextPad
Тем, кто предпочитает набирать код HTML вручную, но кому не хватает функциональности Блокнота и подобных ему программ, можно посоветовать программу под названием TextPad, которую можно загрузить, обратившись по адресу www.textpad.com.
Arachnophilia
Как и в предыдущем случае, программа автоматически подсвечивает, синим цветом теги и атрибуты, а значения атрибутов — зеленым, что улучшает зрительное восприятие, хотя проверка правильности тегов и отсутствует. В программе Arachnophilia предусмотрена автоматизация ввода тегов HTML.
Вопросы для самоконтроля:
- Опишите основные этапы развития языков разметки гипертекста.
- В каком языке представлены общие принципы разметки документов?
- В чем отличие языка XML от HTML?
- Опишите структуру HTML-документа.
- Какие особенности веб-редакторов типа WYSIWYG вы знаете?
- Перечислите все известные вам веб-редакторы.
Раздел II. Языки гипертекстовой разметки
2.2 Язык гипертекстовой разметки HTML
Описание HTML. Теги языка, их свойства.
Основные положения лекции
- Описание HTML
- Мета-теги
- Тэги тела документа
- Тэги списков
- Гипертекстовые ссылки
- Графика внутри HTML-документа
- Таблицы
- Специальные тэги HTML
- Описание HTML
HyperText Markup Language (HTML) является стандартным языком, предназначенным для создания гипертекстовых документов в среде WEB. HTML-документы могут просматриваться различными типами WEB-броузеров.
Большинство документов имеют стандартные элементы, такие, как заголовок, параграфы или списки. Используя тэги HTML вы можете обозначать данные элементы, обеспечивая WEB-броузеры минимальной информацией для отображения данных элементов, сохраняя вцелом общую структуру и информационную полноту документов. Все что необходимо, чтобы прочитать HTML-документ - это WEB-броузер, который интерпретирует тэги HTML и воспроизводит на экране документ в виде, который ему придает автор.
В большинстве случаев автор документа строго определяет внешний вид документа.
HTML-тэги могут быть условно разделены на две категории:
- тэги, определяющие, как будет отображаться WEB-броузером тело документа в целом
- тэги, описывающие общие свойства документа, такие как заголовок или автор документа
Все тэги HTML начинаются с "<" (левой угловой скобки) и заканчиваются символом ">" (правой угловой скобки). Как правило, существует стартовый тэг и завершающий тэг
Завершающий тэг выглядит также, как стартовый, и отличается от него прямым слэшем перед текстом внутри угловых скобок. В данном примере тэг
- Мета-теги
Мета-теги - информация для Обозревателя и поисковых машин. В HTML документе всегда размещаются между тегами . Большинство мета-тегов являются не обязательными, поэтому решайте сами какие использовать. Приведены самые полезные.
Кодировка. (обязательный мета тег) Указав его, Обозреватель будет правильно отображать текст страницы.
Показ дополнительного файла перед основным.
Ключевые слова для поисковиков.
- Тэги тела документа
Тело документа должно находиться между тэгами и . Это та часть документа, которая отображается как текстовая и графическая (смысловая) информация вашего документа.
Уровни заголовков
Первый уровень заголовков (самый большой) обозначается цифрой 1, следующий - 2, и т.д. Синтакс заголовка
где x - цифра от 1 до 6, определяющая уровень заголовка.
Тэг абзаца
Дополнительные параметры тэга :
позволяют выравнивать абзац по левому краю, центру и правому краю соответственно.
Центрирование элементов документа
Вы можете центрировать все элементы документа в окне броузера. Для этого можно использовать тэг
Тэг преформатирования
Тэг преформатирования, , позволяет представлять текст со специфическим форматированием на экране.
Разрыв строки
Тэг
извещает броузер о разрыве строки.
Дополнительный параметр позволяет расширить вохможности тэга
.
- Тэги списков
Существует три основных вида списков в HTML-документе:
- нуменрованный
- маркированный
- список определений
Нумерованные списки
Пронумерованный список начинается стартовым тэгом и завершается тэгом
. Каждый элемент списка начинается с тэга
Тэг может иметь параметры:
где:
TYPE
Вид счетчика:
- A - большие латинские буквы (A,B,C...)
- a - маленькие латинские буквы (a,b,c...)
- I - большие римские цифры (I,II,III...)
- i - маленькие римские цифры (i,ii,iii...)
- 1 - обычные цифры (1,2,3...)
START=n
Число, с которого начинается отсчет
Маркированные списки.
- Пронумерованный список начинается стартовым тэгом
- и завершается тэгом
- .
Тэг может иметь параметр:
<UL TYPE=disc|circle|square>
- Тип тэга
- определяет внешний вид маркера как вид по умолчанию (disc), круглый (circle) или квадратный (square).
Список определений
Список определений начинается с тэга и завершается тэгом
. Данный список служит для создание списков типа "термин"-"описание". Каждый термин начинается тэгом
- Гипертекстовые ссылки
URL"> текст-который-будет-подсвечен-как-ссылка
Тэг URL">открывает описание ссылки, а тэг - закрывает его. Любой текст, находящийся между данными двумя тэгами подсвечивается специальным образом Web-броузером.
Вы можете делать ссылки на различные участки или разделы одного и того же документа, используя специальных скрытый маркер для этих разделов. Это позволяет быстро переходить от раздела к разделу внутри документа, не используя скроллирование экрана.
Для создания такой ссылки необходимо выполнить следующие шаги:
1. Создайте маркер раздела. Синтаксис данного маркера следующий:
Текст-который-отобразится-в-первой-строке-броузера
2. Создайте ссылку на данный маркер:
- Графика внутри HTML-документа
Одна из наиболее привлекательных черт Web - возможность включения ссылок на графические и иные типы данных в HTML-документ. Делается это при помощи тэга
Синтаксис тэга:
URL" ALT="text" HEIGHT=n1 WIDTH=n2 ALIGN=top|middle|bottom|texttop ISMAP>
Опишем элементы синтаксиса тэга:
URL. Обязательный параметр, имеющий такой же синтаксис, как и стандартный URL. Данный URL указывает броузеру где находится рисунок.
ALT="text". Данный необязательный элемент задает текст, который будет отображен броузером, не поддерживающим отображение графики или с отключенной подкачкой изображений.
HEIGTH=n1. Данный необязательный параметр используется для указания высоты рисунка в пикселах. Если данный параметр не указан, то используется оригинальная высота рисунка.
WIDTH=n2. Параметр также необязателен, как и предыдущий. Позволяет задать абсолютную ширину рисунка в пикселах.
ALIGN - Данный параметр используется, чтобы сообщить броузеру, куда поместить следующий блок текста.
ISMAP - Этот параметр сообщает броузеру, что данное изображение позволяет пользователю выполнять какие-либо действия, щелкая мышью на определенном месте изображения.
BORDER - Данный параметр позволяет автору определить ширину рамки вокруг рисунка.
VSPACE - Позволяет установить размер в пикселах пустого пространства над и под рисунком, чтобы текст не наезжал на рисунок.
HSPACE - То же самое, что и VSPACE, но только по горизантали.
Фоновые рисунки
Описание фонового рисунка включается в тэг BODY и выглядит следующим образом:
picture.gif">
Задание стандартных цветов
где каждый из параметров определяет цвет того или иного элемента. Опишем эти параметры:
BGCOLOR - Цвет фона документа
TEXT - Цвет простого текста документа
LINK - Цвет ссылки
Цвет задается шестизначным числом в шестнадцатиричном формате по схеме RGB (Red, Green, Blue). Цвет #000000 соответствует черному, а цвет #FFFFFF - белому. Например:
Данная строка определяет белый цвет фона документа, черный текст и серебристые ссылки.
Горизонтальная линия
Используя тэг
вы можете разделить текст горизонтальной чертой.
Формат тега:
number|percent ALIGN=left|right|center NOSHADE>
Параметры тега:
SIZE -Толщина линии в пикселах.
WIDTH -Ширина линии в пикселах или процентах от ширина окна броузера.
ALIGN - Расположение на экране (слева | по центру | справа).
NOSHADE - По умолчанию линия представлена в 3D виде с тенью. NOSHADE позволяет представить линию просто однотонной темной полоской.
- Таблицы
Таблица начинается открывающимся тегом и завершается закрывающимся
.
Тег WIDTH="n" Определяет ширину таблицы в пикселях или процентах, по умолчанию ширина таблицы определяется содержимым ячеек. BORDER="n" Устанавливает толщину рамки. По умолчанию n=0 - таблица рисуется без рамки. BORDERCOLOR="#FFFFFF" Устанавливает цвет окантовки, где #FFFFFF (белый) - шестнадцатиричное значение цвета. BGCOLOR="#FFFFFF" Устанавливает цвет фона для всей таблицы, где #FFFFFF - шестнадцатиричное число. BACKGROUND="image.gif" Заполняет фон таблицы изображением. CELLSPACING="n" Определяет расстояние между рамками ячеек таблицы в пикселях. CELLPADDING="n" Определяет расстояние в пикселях между рамкой ячейки и текстом. ALIGN=LEFT Определяет расположение таблицы в документе. По умолчанию таблица прижата к левому краю страницы. Допустимые значения аттрибута: LEFT (слева), CENTER (по центру страницы) и RIGHT (справа). FRAME="значение" Управляет внешней окантовкой таблицы, может принимать следующие значения: RULES="n" Управляет линиями, разделяющими ячейки таблицы. Возможные значения (n): Теперь о строках и ячейках таблицы. Строки таблицы начинаются открывающимся тэгом Следующие атрибуты могут применятся для строк и ячейек. ALIGN=LEFT Устанавливает горизонтальное выравнивание текста в ячейках строки. Может принимать значение LEFT (выравнивание влево), CENTER (выравнивание по центру) и RIGHT (вправо). VALIGN=CENTER Устанавливает вертикальное выравнивание текста в ячейках строки. Допустимые значения: TOP (выравнивание по верхнему краю), CENTER (выравнивание по центру - это значение принимается по умолчанию), BOTTOM (по нижнему краю). BGCOLOR="#FFFFFF" Устанавливает цвет фона строки или ячейки. BACKGROUND="image.gif" Заполняет фон строки или ячейки изображением. Следующие атрибуты могут применятся только для ячейек. WIDTH="n" Определяет ширину ячейки в n пикселях. HEIGHT="n" Определяет высоту ячейки в n пикселях. COLSPAN="n" Растягивание ячейки по горизонтали. Например, ROWSPAN="n" Растягивание ячейки по строке. Например, NOWRAP Присутствие этого аттрибута показывает, что текст должен размещаться в одну строку BACKGROUND="image.gif" Заполняет фон ячейки изображением. Кроме этого, любая ячейка таблицы может быть определена не тегами 6. Специальные тэги HTML Чтобы использовать данные символы в документе, необходимо заменить их escape-последовательностями: < < > > & & " " Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.2 Язык гипертекстовой разметки HTML Фреймы. Формы Основные положения лекции 1.1 Свойства фреймов Испольльзуя фреймы, позволяющие разбивать Web-страницы на множественные скроллируемые подокна, вы можете значительно улучшить внешний вид и функциональность информационных систем и Web-приложений. Каждое подокно, или фрэйм, может иметь следующие свойства: 1.2 Синтаксис фрэймов Формат документа, использующего фрэймы, внешне очень напоминает формат обычного документа, только вместо тэга BODY используется контейнер FRAMESET, содержащий описание внутренних HTML-документов, содержащий собственно информацию, размещаемую во фрэймах. Однако, фрэйм-документ является специфичным видом HTML-документа, поскольку не содержит элемента BODY и какой-либо информационной нагрузки соответственно. Представим общий синтаксис фрэймов: ... Общий контэйнер FRAMESET описывает все фрэймы, на которые делится экран. Вы можете разделить экран на несколько вертикальных или несколько горизонтальных фрэймов. Тэг FRAME описывает каждый фрэйм в отдельности. Рассмотрим более детально каждый компонент. 1.3 Атрибуты и их значения FRAMESET ROWS="список-определений-горизонтальных-подокон" Данный тэг содержит описания некоторого количества подокон, разделенные запятыми. Каждое описание представляет собой числовое значение размера подокна в пикселах, процентах от всего размера окна или связанное масштабное значение. Количество подокон определяется количеством значений в списке. Общая сумма высот подокон должна составлять высоту всего окна (в любых измеряемых величинах). Отсутствие атрибута ROWS определяет один фрэйм, величиной во все окно броузера. COLS="список-определений-горизонтальных-подокон" То же самое, что и ROWS, но делит окно по вертикали, а не по горизонтали. Примеры: FRAME url" [NAME="frame_name"] [MARGINWIDTH="nw"] [MARGINHEIGHT="nh"] [SCROLLING=yes|no|auto] [NORESIZE]> Данный тэг определяет фрэйм внутри контейнера FRAMESET. SRC="url". Описывает URL документа, который будет отображен внутри ланного фрэйма. Если он отсутствует, то будет отображен пустой фрэйм. NAME="frame_name". Данный параметр описывает имя фрэйма. Имя фрэйма может быть использовано для определения действия с данным фрэймом из другого HTML-документа или фрэйма (как правило, из соседнего фрэйма этого же документа). MARGINWIDTH="value". Это атрибут может быть использован, если автор документа хочет указать величину разделительных полос между фрэймами сбоку. Значение value указывается в пикселах и не может быть меньше единицы. По умолчанию данное значение зависит от реализации поддержки фрэймов используемым клиентом броузером. MARGINHEIGHT="value". То же самое, что и MARGINWIDTH, но для верхних и нижних величин разделительных полос. SCROLLING="yes | no | auto" . Этот атрибут позволяет задавать наличие полос прокрутки у фрэйма. Параметр yes указывает, что полосы прокрутки будут в любом случае присутствовать у фрэйма, параметр no наоборот, что полос прокрутки не будет. Auto определяет наличие полос прокрутки только при их необходимости (значение по умолчанию). NORESIZE. Данный атрибут позволяет создавать фрэймы без возможности изменения размеров. По умолчанию, размер фрэйма можно изменить при помощи мыши так же просто, как и размер окна Windows. NORESIZE отменяет данную возможность. С появлением фрэймов сразу возникает вопрос: "А как сделать так, чтобы нажимая на ссылку в одном фрэйме инициировать появление информации в другом?" Ответом на данный вопрос является планирование взаимодействия фрэймов (далее - планирование). Каждый фрэйм может иметь собственное имя, определяемое параметром NAME при описании данного фрэйма. Существует, также, специальный атрибут - TARGET, позволяющий определять, к какому фрэйму относится та или иная операция. Формат данного атрибута следующий: TARGET="windows_name" Данный атрибут может встречаться внутри различных тэгов: TARGET в тэге A Это самое прямое использование TARGET. Обычно, при активизации пользователем ссылки соответствующий документ появляется в том же окне (или фрэйме), что и исходный, в котором была ссылка. Добавление атрибута TARGET позволяет произвести вывод документа в другой фрэйм. Например: TARGET в тэге BASE Размещение TARGET в тэге BASE позволит вам не указывать при описании каждой ссылки фрэйм-приемник документов, вызываемых по ссылкам. Это очень удобно, если в одном фрэйме у вас находится меню, а в другой - выводится информация. Таже можно включать тэг TARGET в описание ссылки при создании карты изображения. Например: TARGET в тэге FORM То же относится и к определению формы. В данном случае, после обработки переданных параметров формы результирующий документ появится в указанном фрэйме. Зарезервированные имена фрэймов Зарезервированные имена фрэймов служат для разрешения специальных ситуаций. Все они начинаются со знака подчеруивания. Любые другие имена фрэймов, начинающиеся с подчеркивания будут игнорироваться броузером. TARGET="_blank" Данное значение определяет, что документ, полученный по ссылке будет отображаться в новом окне броузера. TARGET="_self" Данное значение определяет, что документ, полученный по ссылке будет отображаться в том же фрэйме, в котором находится ссылка. Это имя удобно для переопределения окна назначения, указанного ранее в тэге BASE. TARGET="_parent" Данное значение определяет, что документ, полученный по ссылке будет отображаться в родительском окне, вне зависимости от параметров FRAMESET. Если родительского окна нет, то данное имя аналогично "_self". TARGET="_top" Данное значение определяет, что документ, полученный по ссылке будет отображаться на всей поверхности окна, вне зависимости от наличия фрэймов. Использование данного параметра удобно в случае вложенных фрэймов. 2. HTML формы Некоторые WWW browser позволяют пользователю, заполнив специальную форму, возвращающую полученное значение, выполнять некоторые действия на вашем WWW-сервере. Когда форма интерпретируется WEB-броузером, создается специальные экранные элементы GUI, такие, как поля ввода, checkboxes, radiobuttons, выпадающие меню, скроллируемые списки, кнопки и т.д. Когда пользователь заполняет форму и нажимает кнопку "Подтверждение" информация, введенна пользователем в форму, посылается HTTP-серверу для обработки и передаче другим программам, работающим под сервером, в соответствии с CGI (Common Gateway Interface) интерфейсом. 2.1 Синтаксис Все формы начинаются тэгом . METHOD. Метод посылки сообщения с данными из формы. В зависимости от используемого метода вы можете посылать результаты ввода данных в форму двумя путями: ACTION. ACTION описывает URL, который будет вызываться для обработки формы. Данный URL почти всегда указывает на CGI-программу, обрабатывающую данную форму. 2.2 Тэги Формы TEXTAREA Тэг Атрибуты, используемые внутри тэга INPUT Тэг используется для ввода одной строки текста или одного слова. Атрибуты тэга: CHECKBOX. Используется для простых логических (BOOLEAN) значений. Значение, ассоциированное с именем данного поля, которое будет передаваться в вызываемую CGI-программу, может принимать значение ON или OFF. HIDDEN. Поля данного типа не отображаются броузером и не дают пользователю изменять присвоенные данному полю по умолчанию значение. Это поле используетс для передачи в CGI-программу статической информации, как то ID прользователя, пароля или другой информации. IMAGE. Данный тип поля ввода позволяет вам связывать графический рисунок с именем поля. Само описание картинки осуществляется через атрибут SRC и по синтаксису совпадает с тэгом . PASSWORD. То же самое, что и атрибут TEXT, но вводимое пользователем значение не отображается броузером на экране. RADIO. Данный атрибут позволяет вводить одно значение из нескольких альтернатив. Для создания набора альтернатив вам необходимо создать несколько полей ввода с атрибутом TYPE="RADIO" с разными значениями атрибута VALUE, но с одинаковыми значениями атрибута NAME. В CGI-программу будет передано значение типа NAME=VALUE, причем VALUE примет значение атрибута VALUE того поля ввода, которое в данный момент будет выбрано (будет активным). При выборе одного из полей ввода типа RADIO все остальные поля данного типа с тем же именем (атрибут NAME) автоматически станут невыбранными на экране. RESET. Данный тип обозначает кнопку, при нажатии которой все поля формы примут значения, описанные для них по умолчанию. SUBMIT. Данный тип обозначает кнопку, при нажатии которой будет вызвана CGI-программа (или URL), описанная в заголовке формы. TEXT. Данный тип поля ввода описывает однострочное поле ввода. 2.3 Меню выбора в формах SELECT Тэг SELECT позволяет пользователю выбрать значение из фиксированного списка значений. Обычно это представлено выпадающим меню. SELECT SINGLE Тэг SELECT SINGLE - это то же самое, что и Select, но на экране пользователь видит одновременно несколько элементов выбора (три по умолчанию). Если их больше, то предоставляется автоматический вертикальный скроллинг. Количество одновременно отображаемых элементов определяется атрибутом SIZE. SELECT MULTIPLE Тэг SELECT MULTIPLE похож на тэг SELECT SINGLE, но пользователь может одновременно выбрать более чем один элемент списка. Атрибут SIZE определяет количество одновременно видимых на экране элементов, атрибут MULTIPLE - максимальное количество одновременно выбранных элементов. Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.2 Язык гипертекстовой разметки HTML Каскадные таблицы стилей Основные положения лекции Так что это такое - СSS? Cascading Style Sheets (Таблицы Каскадных Стилей) - это язык, содержащий набор свойств для описания внешнего вида любых HTML документов. С его помощью дизайнер имеет полный контроль над стилем и расположением каждого элемента веб страницы, что проще и гораздо функциональнее использования обычного набора HTML тегов. Существует три вида таблиц стилей: Внутренние таблицы стилей, Глобальные таблицы стилей и Связанные таблицы стилей. Внутренние таблицы стилей (Inline Style Sheets) при помощи специального атрибута помещаются прямо в HTML теги. Глобальные (Global Style Sheets) определяют стиль элементов во всем документе. Связанные (Linked Style Sheets) могут быть использованы для нескольких документов сразу и хранятся во внешнем файле. Подробнее обо всем этом написано ниже. Селекторы (Selectors): Синтаксисис: селектор {свойства} Любой элемент HTML - это возможный CSS селектор. Свойства селектора определяют стиль элемента, для которого он определен. ПРИМЕР: H1 {color:red; size:20pt;} Все элементы H1 в документе будут красного цвета, размером в 20 точек (pt, point). Классовые селекторы (Class Selectors): Синтаксис: CLASS - атрибут элемента в HTML, определяющий его класс. В CSS можно описать собственные стили для различных классов одних и тех же элементов. ПРИМЕР: H1.blue {color:blue; size:20pt;} Все элементы H1 с атрибутом CLASS="blue" станут синими. Классы могут так же быть описаны без явного привязывания их к определенным элементам. Синтаксис: ПРИМЕР: .green {color:green;} В данном случае все элементы с атрибутом CLASS="green" станут зелеными. ID селекторы (ID Selectors): Cинтакс: #id {свойства} ID - индивидуально именованный стиль. C его помощью можно создавать стилистические исключения cреди элементов одного класса. Индификаторы используются в основном для придания одному или нескольким элементам одного класса индивидуальных свойств. Скажем, Вы создали класс blue - синий курсив. Но Вам понадобился жирный подчеркнутый текст синим курсивом. Конечно, можно создать новый класс, но зачем? Проще описать ID. Например "boldunderline". И все элементы класса blue с значением ID "boldunderline" станут жирным подчеркнутым синим курсивом. Произойдет как бы синтез свойств класса blue и идентификатора boldunderline. Контекстуальные селекторы (Contextual Selectors): Контекстные селекторы - это сочетания нескольких обыкновенных селекторов. Стиль задается только элеметнам в заданной последовательности в зависимости от каскадного порядка. ПРИМЕР: P EM {color:silver;} В данном примере все элементы EM внутри элементов P будут иметь заданный стиль. Придание нескольким элементам одинаковых свойств: Скажем Вам нужно придать нескольким элементам Вашей веб страницы одинаковых свойств. В этом случае при определении селекторы перечисляутся через запятую перед блоком свойств. ПРИМЕР: h1,h2,h3,p,strong {color:green; font-style:italic;} Все элементы h1, h2, h3, p и strong будут зелеными. Псевдоклассы и псевдоэлементы : Синтаксис: Псевдоклассы и псевдоэлементы - это особые классы и элементы, присущие CSS и автоматически определяемые поддерживеющими CSS браузерами. Псевдоклассы различают разные типы одного элемента, создавая при определении собственные стили для каждого из них. Псевдоэлементы являются частями других элементов, задавая этим частям отличный от элемента вцелом стиль. Список псевдоклассов и псевдоэлементов : Anchor Pseudo Classes - эти псевдоклассы элемента , обозначающего ссылку. Псевдоклассы этого элемента: (ссылка), active (активная ссылка), visited (посещенный ранее URL), hover (псевдокласс, возникающий при поднесении курсора к ссылке, не работает в Нетскейпе). First Line Pseudo-element - first-line. Этот псевдоэлемент может быть использован с block-level элементами (p, h1 и т.д.). Он изменяет стиль первой строки этих элементов. First Letter Pseudo-element - first-letter. Похож на first-line, но влияет не на всю строку, а только на первый символ. ПРИМЕР : a:link,a:visited {color:blue} a:active {color:red} a:hover {text-decoration:none} В данном примере все элементы Anchor (ссылки) будут синими. При нажатии (в активном состоянии) поменяют цвет на красный. И при подведении курсора мышки исчезнет подчеркивание. Как уже говорилось, использование Внутренних стилей мало чем отличается от использования обычных HTML тегов. Они задают стиль только одному элементу документа при помощи атрибута STYLE в HTML теге. ПРИМЕР HTML: Вперед в будущее ПРИМЕР INLINE STYLE SHEET: Вперед в будущее Как можно заметить, код Inline Style Sheet получился больше чем HTML. Поэтому ISS следует использовать только если необходимо задать определенному элементу свой индивидуальный стиль, существующий в классификации CSS и нереализованный в HTML. Или же при необходимости абсолютно позиционировть данный элемент. Глобальные стили задают вид элементов всего документа. Для этого используется тег В самих же HTML документах делается ссылка на этот файл при помощи тега . Выглядит это так: Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.2 Язык гипертекстовой разметки HTML DHTML. Фильтры Основные положения лекции Динамический HTML - понятие собирательное. Он представляет собой комбинацию новых тэгов HTML, опций и возможностей программирования (в виде сценариев), что позволяет сделать Web-страницы интерактивными и размещать на них анимационные объекты. Благодаря DHTML Web-страница начинает функционировать подобно любой компьютерной программе, и тем самым стирается различие между жестким диском и Internet. DHTML включает в себя: Объектно-ориентированное представление элементов страницы Любой элемент страницы (раздел или секция, заголовок, параграф, изображение, список, форма и т.п.) считается объектом. Каждой гиперссылке, заголовку или текстовому параграфу можно присвоить имя, атрибуты стиля или цвета текста и указать это имя в сценарии, имеющемся на данной странице. Сценарий может быть написан на любом существующем языке программирования (в том числе и на VBScript), но здесь подразумевается использование языка JavaScript. Элементы страницы впоследствии могут изменяться в результате определенного события, например при наведении курсора мыши, при щелчке, нажатии клавиши на клавиатуре либо после истечения заданного промежутка времени. Изменяться может не только стиль и цвет текста, но и весь объект, включая код HTML, текст или рисунок. Таблицы стилей и разбиение на слои Таблицы стилей (Style sheets) используются для описания применяемого по умолчанию стиля всего документа или какой-либо его части. Это касается таких параметров, как формат страницы, тип и размер шрифта для элементов текста. Сценарии Сценарии являются третьей составляющей DHTML. Сценарии сейчас создаются повсеместно и в различных формах (JavaScript, VBScript, Java-апплеты, управляющие элементы ActiveX и т.д.), но возможности программирования, предоставляемые DHTML, относятся к более высокому уровню. Используя их, можно обратиться к большинству элементов страницы при помощи простого сценария. Фильтры Фильтр - это некоторый алгоритм, преобразующий визуальное отображение элемента в окне браузера. Он может быть статическим или динамическим. Статический фильтр преобразует элемент, и после того он отображается. Динамический фильтр воздействует во времени на визуальное отображение элемента, меняя его непосредственно на HTML-странице, что приводит к эффекту анимации. Применить фильтр к элементу просто: достаточно задать значение его свойства filter, следуя правилам задания свойств каскадных таблиц стилей filter: значение. Каждый фильтр, как отмечалось выше, реализует определённый алгоритм преобразования видимого отображения элемента, поэтому значение свойства filter задаётся в форме функции: filter: имя_фильтра([параметры]); а параметры фильтра, если они присутствуют, задаются с использованием синтаксиса именованных параметров функции: имя_параметра=значение_параметра Некоторым фильтрам требуется несколько параметров, задаваемых через запятую, а некоторым фильтрам параметры вообще не нужны, но круглые скобки должны присутствовать обязательно. К элементу можно применить несколько фильтров одновременно. В этом случае они задаются в виде списка с пробелом в качестве разделителя: В данном примере к графическому изображению применяются два фильтра: первый (blur) размазывает изображение на глубину в 50 пикселов, а второй (fliph) просто зеркально его отображает в горизонтальном направлении. В Internet Explorer'e реализовано большое число разнообразных фильтров. В таблице 2 представлены все фильтры с кратким описанием их воздействия на визуализацию элементов. Таблица 2 Фильтры и их краткие описания Устанавливает уровень непрозрачности объекта Создаёт эффект размытия изображения Делает прозрачными пикселы заданного цвета Рисует сплошной силует объекта, смещённый в заданном направлении, создавая тем самым эффект объекта, расположенного над страницей и отбрасывающего на неё тень Переворачивает объект горизонтально Переворачивает объект вертикально Добавляет свечение вдоль внешних границ объекта, создавая эффект "возгорания" границ объекта Удаляет цветовую гамму объекта и отображает его в серых тонах Меняет оттенок, насыщение и яркость объекта на противоположные light Подсвечивает объект Отображает текст так, как будто он выделен мышью Рисует силует объекта вдоль одной из его границ в заданном направлении, создавая эффект тени Синусоидальное искривление объекта в вертикальном направлении, создавая эффект волнообразной поверхности Изменяет глубину цвета объекта и после этого отображает его в чёрно-белых тонах, имитируя рентгеновский снимок объекта Кстати, стоит заметить, что интересные динамические эффекты достигаются использованием фильтров совместно со сценариями. В процессе выполнения сценария можно устанавливать или изменять параметры применяемых к объектам фильтров, можно назначать новые фильтры, создавать визуальные эффекты через определённые интервалы времени и делать многое другое. Доступ к фильтрам и их параметрам в программируемых сценариях осуществляется, как обычно, с помощью объектной модели, предоставляемой браузером. В этой модели любой фильтр представляется в виде обычного объекта со своими свойствами и методами. Большинство свойств и методов соответствует параметрам фильтра в параметре STYLE. Некоторые свойства и методы доступны только из программируемого сценария. Возможности DHTML почти безграничны. Web-страницы теперь больше похожи на мини-приложения, чем на статичные документы. Если вам доводилось путешествовать по сети, то вы уже встречались с самыми различными вариантами использования DHTML. Показ слайдов, Web-сайты с определяемым пользователем интерфейсом, прокрутка изображений и анимация, интерактивное представление текста на экране, игры, заполнение форм, калькуляторы и многое, многое другое. В последних главах книги вы узнаете, как пользоваться языком JavaScript для решения наиболее распространенных задач. Для работы с DHTML JavaScript должен обеспечить взаимодействие с двумя ключевыми технологиями. Это объектная модель браузера и таблица стилей (являющаяся частью объектной модели документа). Объектная модель контролирует браузер и загруженный в него документ, а таблица стилей управляет форматированием и расположением элементов страницы. Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.3 Расширяемый язык разметки XML Характеристика и возможности XML Основные положения лекции Свое название расширяемый язык разметки XML (Extensible Markup Language) получил по той причине, что в нем нет фиксированного формата, как в HTML. В то время как язык HTML ограничивается набором твердо закрепленных тегов, пользователи XML могут создавать свои собственные тэги, которые бы отвечали тематики документа. Таким образом, XML - это метаязык. Документ XML выглядит во многом похожим на HTML. В XML существуют открывающие, закрывающие и пустые тэги. Однако, в отличие от HTML, правила относительно тегов более строгие, например, смысл тега зависит от регистра, а каждый открывающий тег должен во всех случаях иметь парный закрывающий тег. Теги в документе могут быть вложены друг в друга. Теги начала и конца элемента являются основными используемыми в XML разметками, но ими дело не исчерпывается. Так же как и в HTML тэги могут иметь атрибуты, причем количество атрибутов зависит от фантазии автора. Документы XML могут содержать ссылки на другие объекты. Ссылки представляют собой строку, начинающуюся с амперсанта и заканчивающуюся точкой с запятой. Ссылки позволяют, в частности, вставить в документ специальные символы, включение которых самих по себе могло бы сбить с толку программу разбора. К тому же ссылки могут ссылаться на определенные автором разделы текста в том же самом или в другом документе. Для того чтобы используемые вами в документе теги понимали и другие необходимо составить определения типов документов (Document Type Definition, DTD). Сам XML документ не несет информацию о том как находящиеся в нем данные должны отображаться на экране, за это отвечает таблица стилей. Таким образом, в документе имеется разграничение между оформлением и содержанием. Разметка ХМL отражает содержание документа, его можно использовать как универсальный формат в любых приложениях. Ниже приведены примеры документов, которые е могут быть адекватно описаны с помощью языка XML. Есть три основных способа сообщить браузеру, как обрабатывать и отображать каждый из созданных вами XML-элементов Синтаксис разметки. Для ограничения тегов в разметке XML, так же как и в HTML используются угловые скобки: тег начинается со знака "меньше" (<) и завершается знаком "больше" (>). Но необходимо помнить, что в отличие от HTML вся разметка XML чувствительна к регистру символов, это касается как имен тегов, так и значений атрибутов. Структура XML- документа. Любой XML-документ состоит из следующий частей: • Необязательный пролог. • Тело документа. • Необязательный эпилог, следующего за деревом элементов. Пролог XML- документа. Документ XML начинается с пролога. В прологе содержатся некоторые указания предназначенные для анализатора XML и приложений. Пролог состоит из нескольких частей: . После объявление типа документа так же могут следовать комментарии, команды обработки и символы пустых пространств. Поскольку все эти части необязательны, пролог может быть опущен. Тело XML-документа. Тело документа, состоит из одного или больше элементов. В правильно оформленном XML документе элементы формируют простое иерархическое дерево, в котором обязательно присутствует корневой элемент (root element) в который вложены все остальные элементы документа. Для решения проблемы совпадающих имен введено понятие пространства имен. Имя корневого элемента считается именем всего документа и указывается во второй части пролога после слова Doctype. Если определение DTD находится внутри XML- документа, то оно помещается в квадратных скобках после имени корневого элемента: Пространства имен XML. Префикс и идентификатор пространства имен определяются атрибутом xmlns следующим образом: Элементы. Документ XML состоит из элементов. <имя_элемента> содержание элемента имя_элемента > Пустые элементы. Если в содержимом элемента нет ни одного символа, даже пробела, то закрывающий тег можно не записывать. <имя_элемента/>. Ссылки на символы. Ссылки на символы записываются в следующем виде: код_символа_в_Unicode;. Ссылки на сущности. Ссылки на сущности позволяют включать любые строковые константы в содержание элементов или значение атрибутов. &имя_сущности;. Комментарии. Секция CDATA. Секция CDATA используется, для того чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы. Инструкции по обработке. Инструкции по обработке содержат указания программе анализатору документа XML. Инструкции по обработке заключаются между символами и ?>. Эпилог В эпилог XML могут входить комментарии, инструкции по обрабоки и/или пустое пространство. Атрибуты. Открывающие теги либо теги пустых элементов в XML могут содержать атрибуты, представляющие собой пару имя=значение.В отличие от языка HTML, в XML значения атрибутов обязательно надо заключать в апострофы (‘), либо в кавычки (“). Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.3 Расширяемый язык разметки XML Язык описания схемы данных XML (DTD) DTD по определению содержат всю информацию которая может появиться в XML документе. Все, что входит в проект, должно быть включено в DTD. Таким образом, DTD описания в сущности и является словарем. Приложения XML взаимодействуют друг с другом на основе словарей, которые они понимают, так что определение DTD помогает понять, что может описать приложение. Другое применение DTD это проверка написанного XML документа на корректность. Правильно оформленные документы, написанные в соответствии со всеми правилами, описанными в спецификации XML, не могут быть проверены на предмет ошибок. Пропущенные ошибки могут вызвать повреждение программы обрабатывающей данные документы, либо ввод в систему неверных данных. Но если документ ссылается на определение DTD, то, используя проверяющей на допустимость анализатор можно проверить, есть ли в нашем документе ошибки. Анализатор затребует DTD и убедиться, что документ соответствует описанным в нем грамматическим правилам. Для связывания декларации DTD с экземпляром документа в версии XML 1.0 предлагается специальная декларация DOCTYPE. Она должна следовать после декларации XML и предшествовать любым элементам документа. Тем не менее, между декларациями XML и DOCTYPE могут находиться комментарии и команды обработки. Декларация DOCTYPE содержит ключевое слово DOCTYPE, за которым следует имя корневого элемента документа, а затем конструкция с декларациями содержания. Блок внутренней декларации разметки тега DOCTYPE состоит из левой квадратной скобки, списка деклараций и правой квадратной скобки: Допустимое в документе XML содержание определяется с помощью четырех типов декларации разметки в DTD. В следующей далее таблице показаны связанные с этими декларациями ключевые слова и их значения: Конструкция DTD Значение ELEMENT Декларация типа элемента XML ATTLIST Декларация атрибутов, которые могут быть назначены конкретным типам элементов, а также разрешенных значений этих атрибутов ENTITY Декларация повторно используемого содержания NOTATION Декларация форматирования для внешнего содержания, которое не должно быть проанализировано (например, двоичные данные), а также для внешних приложений, обрабатывающих содержание DTD фактически представляют собой разновидность схемы. Однако, говоря о схемах, разработчики XML, как правило, имеют в виду замену DTD, написанную в соответствии с синтаксисом XML. В принципе, схемы можно считать механизмом создания ограничений, так как, хотя в них объявляются допустимые элементы или атрибуты, мы ограничиваем для пользователя выбор тегов и модели содержания. Обычно схемы можно считать метаданными, или данными о данных, при разработке схем учитываются не только определения словаря, но и разъяснения связей между определенными типами данных. Чтобы заменить определения DTD, надо предоставить, по крайней мере, те же возможности, которые предоставляют эти определения. Необходимо определять природу и структуру документов XML. Как и DTD, схемы представляют собой описание компонентов и правил словаря XML. Однако схемы уточняют DTD, позволяя точнее выражать некоторые концепции словаря. Кроме того, в схемах сделано несколько радикальных изменений. Используемый в них синтаксис полностью отличается от DTD. Они позволяют использовать имена из других схем, что решает проблему проверки допустимости. Они позволяют типизировать данные элементов и атрибутов. Можно сказать, схемы являются лучшим решением проблемы определения словарей. 4. XSL Расширяемый язык таблиц стилей(XSL) основан на XML и предназначен для трансформации документа XML в другой документ XML или в объекты визуализации. Первоначальный язык XSL распался на три отдельных языка: • Язык трансформаций (XSLT) • Язык визуализации (XSLF; он может использовать также и XSLT) • Язык обращений к структуре, на которой основаны документы XML (XPath ) Язык XSL основан на каскадных таблицах стилей (Cascading Style Sheets, CSS) и на языке DSSSL. XSLT является языком, для трансформации документов XML в другие документы XML. Для этого необходим процессор XSLT . Язык XSLT написан на XML. Это означает, что обеспечивающая трансформацию документа XML таблица стилей XSLT является правильно оформленным документом XML. Прежде всего следует уяснить что обработчики XSLT работают не с документами, а со структурами. Трансформация документа таблицей стилей Язык XSL является приложением XML, так что фактически таблица стилей (т.е. таблица трансформаций) представляет собой документ XML. В связи с этим документ может начинаться с декларации XML, показывающей анализатору, какой версией языка документ закодирован. Корневым элементом нашей таблицы стилей является элемент Первым атрибутом этого элемента служит версия XSLT, вторым — атрибут xmlns:xsl, содержащий пространство имен для рекомендации трансформации XSL. Образцы (patterns) Прежде чем сделать преобразование дерева документа XML, из него следует выбрать те узлы, которые подвергнутся тому или иному преобразованию. Их можно выбирать по имени, содержимому, атрибутам и другим признакам. Элементы, объявленные в XSLT Декларация xsl:import Элемент xsl:import записывается очень просто: <хsl:import href="адрес URI таблицы стилей" /> Его можно записать только непосредственно в корневом элементе xsl:stylesheet и только в самом начале таблицы стилей. Элементов xsl: import может быть несколько. Декларация xsl:variable Элемент xsl:variable определяет имя объекта. Оно записывается обязательным атрибутом name. Например: Инструкция xsl:value-of Элемент xsl:value-of вычисляет выражение, записанное в его обязательном атрибуте select, и преобразует его в строку. Инструкции управления xsl:if, xsl:for-each Элемент xsl:if запускает конструктор последовательности, содержащийся в его теле, только если истинно выражение, записанное в обязательном и единственном атрибуте test. У элемента xsl:for-each в обязательном и единственном атрибуте select записывается выражение, дающее в результате последовательность. В результате получается цикл, выполняющийся столько раз, сколько элементов у последовательности, полученной в результате вычисления выражения атрибута select. Декларация xsl:template Элемент xsl:template определяет шаблонное правило преобразования. Своим атрибутом match он задает образец для отбора узлов, подлежащих преобразованию, а в теле содержит конструктор последовательности узлов и атомарных значений, которая и будет результатом преобразования отобранных по образцу узлов. Инструкция xsl:apply-templates Элемент xsl:apply-templates, записываемый чаще всего внутри элемента xsl: template, в простейшем виде пуст: Он предписывает обработать рекурсивно все узлы-потомки узлов, отобранных родительским элементом xsl:template. Вопросы для самоконтроля: Раздел II. Языки гипертекстовой разметки 2.3 Расширяемый язык разметки XML Структура DOM В течение некоторого времени термин "объектная модель документа" применялся к Web-браузерам. Такие объекты, как окно, документ и история, считались частью объектной модели браузера, но в различных браузерах эти объекты реализованы по-разному. Для создания более стандартизированного способа обращения и манипулирования структурами документов в сети консорциум W3C предложил спецификацию W3C DOM представляющую собой не зависящее от языка или платформы определение. W3C DOM модель устанавливает стандартную функциональность для навигации по документу и манипулирования содержанием и структурой документов, написанных на языках XML и HTML. При использовании DOM для работы с текстовым файлом в формате XML она анализирует файл, разбивает его на индивидуальные элементы, атрибуты, комментарии и т.д. Затем в памяти создается представление файла XML в виде дерева узлов в котором каждый объект в документе рассматривает в виде узла: элементы, атрибуты, комментарии, команды обработки и даже составляющий атрибуты обыкновенный текст. Для следующего фрагмента XML документа: дерево элементов выглядит так: После этого разработчик может обращаться к содержанию документа, используя дерево узлов, и при необходимости вносить в него изменения, например чтобы добавить новый элемент( для этого достаточно просто создать новый узел и прикрепить его в качестве потомка к нужному узлу). В W3C DOM для различных составляющих DOM объектов определены интерфейсы облегчающие манипулирование с деревом узлов, но для этих интерфейсов не предлагается никакой специфической реализации, и ее можно осуществить на любом языке программирования. Определяемая консорциумом W3C модель DOM не зависит от платформы, т.е.W3C определяет, какие методы и свойства должны быть сделаны доступными в реализациях, специфических для конкретных систем, но не подробности осуществления этих реализации. Реализуя приложение использующие модель DOM, а не спецификации W3C, разработчики должны ссылаться на документацию, специфическую для данной реализации, которую можно найти в библиотеках. В качестве метода доступа к файлам XML всегда следует выбирать модель DOM. По сравнению с такими доступными механизмами генерации документов XML, как запись непосредственно в поток, этот метод имеет ряд преимуществ: В браузерах Internet Explorer 5 и выше находятся встроенные библиотеки DOM и поддержка XSL. Для сценариев на стороне клиента доступно множество объектов для работы с XML-документом, самые важные из них, объекты XMLDOMDocument, XMLDOMNode, XMLDOMNodeList, XMLDOMParseError представляющие интерфейс для доступа ко всему документу, отдельным его узлам и поддеревьям, предоставляющие необходимую для отладки информацию о произошедших ошибках анализатора соответственно. Объект XMLDOMNode Объект XMLDOMNode, реализует базовый DOM интерфейс Node, предназначен для манипулирования с отдельным узлом дерева документа. Его свойства и методы позволяют получать и изменять полную информацию о текущем узле - его тип (является ли текущий узел элементом, комментарием, текстом и т.д.), название, полное название (вместе с Namespace префиксом), его содержимое, список дочерних элементов и т.д. Объект XMLDOMDocument Объект XMLDOMDocument представляет верхний уровень объектной иерархии и содержит методы для работы с документом: его загрузки, анализа, создания в нем элементов, атрибутов, комментариев и т.д. Многие свойства и методы этого объекта реализованы также в класса Node, т.к. документ может быть рассмотрен как корневой узел с вложенными в него поддеревьями. Объект XMLDOMNodeList Представляет собой список узлов - поддеревья и содержит методы, при помощи которых можно организовать процедуру обхода дерева. Объект XMLDOMParserError Объект позволяет получить всю необходимую информацию об ошибке, произошедшей в ходе разбора документа. Все свойства этого объекта доступны только для чтения. Язык XML предоставляет идеальный механизм обмена информацией между различными базами данных. По своей природе базы данных являются закрытыми - в каждой базе используется своя структура имен элементов, свой уровень нормализации и даже свои методы описания перечисляемой информации. С помощью модели DOM можно упростить передачу информации между различными базами данных. Модель DOM — это модель с произвольной выборкой , т.е. узел может быть создан или прикреплен в любом месте дерева XML в любой момент времени. Эта особенность очень полезна при создании документов XML на основе информации иерархической или реляционной базы данных. Создать документ XML с помощью модели DOM значительно проще, чем записывать информацию в текстовый файл. Вместо того чтобы все время перемещаться между таблицами в поисках требуемой информации, всю информацию из каждой таблицы можно записать одновременно. С увеличением глубины дерева узлов первый метод становится все более и более запутанным, в то время как второй легко масштабируется. Кроме того, генерация документа с помощью модели DOM гарантирует его правильное оформление. Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.1 Инструментальные средства создания приложений Характеристика ИС. Спецификация CGI. Основные положения лекция Форматирование страниц в Web-технологии достигается за счет HTML-разметки. В 1991 году была решена проблема ввода данных через рабочее окно браузера или через HTML-документ специалистами NCSA. Они разработали и реализовали две взаимосвязанные спецификации: HTML-формы и Common Gateway Interface. Серверные расширения CGI (Common Gateway Interface - стандартный шлюзовый интерфейс) и ISAPI (Internet Server API, также NSAPI - Netscape Server API) предназначены для запуска внешних программ под управление WEB-сервера. CGI включает общую среду (набор переменных) и протоколы для взаимодействия с этими программами. Внешняя программа получает информацию через протокол HTTP от удаленного пользователя, обрабатывают ее (например, осуществляют запрос к базе данных) и возвращают результат обработки обратно в виде ссылки на существующий HTML-документ или в виде динамически созданной HTML-страницы. В CGI имеет смысл выделить следующие основные моменты: Основное назначение CGI — обработка данных из HTML-форм. В настоящее время область применения CGI гораздо шире. Схема работы CGI. HTML-формы предназначены для пересылки данных от удаленного пользователя к веб-серверу. С их помощью можно организовать простейший диалог между пользователем и сервером. Пример: ACTION. Его значением является URL-адрес CGI-программы, которая будет обрабатывать информацию, извлеченную из данной формы. METHOD. Определяет метод пересылки данных, содержащихся в форме, от браузера к веб-серверу. Обычно принимает одно из двух значений: GET (по умолчанию) и POST. В методе GET данные формы пересылаются в составе URL-запроса. В методе POST данные формы пересылаются в теле запроса. ENCTYPE. Возможны два значения параметра: application/x-www-form-urlencoded и multipart/form-data. Значением этого параметра является медиатип, определяющий формат кодирования данных, при передаче их от браузера к серверу. Браузер кодирует данные, чтобы исключить их искажения в процессе передачи. CGI-скриптом называют программу, написанную на любом языке программирования или командном языке, которая осуществляет обмен данными с HTTP-сервером в соответствии со спецификацией Common Gateway Interface. Различают два типа запросов к CGI-скриптам: по методу GET и по методу POST. В свою очередь, запросы по методу GET подразделяются на запросы по типам кодирования: isindex и form-urlencoded, а запросы по методу POST — multipart/form-data и form-urlencoded. Метод GET Метод GET применяется клиентом при запросе к серверу по умолчанию. В этом случае клиент сообщает адрес ресурса (URL), который он хочет получить, версию протокола HTTP, поддерживаемые им MIME-типы документов, версию и название клиентского программного обеспечения. Все эти параметры указываются в заголовке HTTP-запроса. Тело в запросе не передается. В запросах по методу GET данные от клиента передаются скрипту в переменной окружения QUERY_STRING. В ответ сервер сообщает версию HTTP-протокола, код возврата, тип содержания тела сообщения, размер тела сообщения и ряд других необязательных директив HTTP-заголовка. Сам ресурс, обычно HTML-страница, передается в теле отклика. Метод POST Метод POST — это альтернатива методу GET. При обмене данными по методу POST в запросе клиента присутствует тело HTTP-сообщения. Это тело может формироваться из данных, которые вводятся в HTML-форме, или из присоединенного внешнего файла. В отклике, как правило, присутствует и заголовок, и тело HTTP-сообщения. Чтобы инициировать обмен по методу POST, в атрибуте METHOD контейнера FORM следует указать значение "post". В запросах по методу POST данные от скрипта передаются в потоке стандартного ввода скрипта. При передаче через поток стандартного ввода в переменной окружения CONTENT_LENGTH указывается число передаваемых символов. Взаимодействие между клиентом-браузером и веб-сервером осуществляется по правилам протокола http и состоит из запросов клиента и ответов сервера. Запрос клиента разбивается на три части: 1 строка - команда HTTP (метод GET или POST) 2 строка - заголовок запроса. Заголовок содержит служебную информацию, необходимую для обработки тела сообщения или управления обменом. Заголовок состоит из директив заголовка, которые обычно записываются каждая на новой строке. 3 строка - тело запроса (собственно данные, посылаемые серверу). Не является обязательным, в отличие от заголовка сообщения. Оно может содержать текст, графику, аудио- или видеоинформацию. Тело от заголовка отделяется пустой строкой. Метод сообщает серверу о целях запроса. В протоколе http определены несколько методов, но для передачи формы в cgi-программу используются 2 метода GET и POST. Метод GET. Данные формы пересылаются в составе URL-запроса, к которому присоединяются после символа "?" Метод POST. Данные формы пересылаются в теле запроса. Схема кодирования данных из формы одинакова для обоих методов и заключается в следующем: Сервер, принимая запрос от клиента, часть информации заголовка HTTP-запроса преобразует в переменные окружения, которые доступны для анализа CGI-скриптом. Если запрос имеет тело, то оно становится доступным скрипту через поток стандартного ввода. При использовании метода GET веб-сервер, получив запрос присвоит переменной среды QUERY_STRING значение строки запроса и вызовет cgi-программу, обозначенную в первой части URL до знака вопроса. cgi-программа после запуска обращается к переменной QUERY_STRING для обработки закодированных в ней данных. При использовании метода POST значение content_length:126 присваивается глобальной переменной CONTENT_LENGTH, а данные пересылаются в стандартный ввод cgi-программы (STDIN). Ответ сервера состоит из следующих частей: Пример: HTTP 1.0 200 OK #запрос выполнен успешно HTTP 1.0 404 Not Found #документ отсутствует Содержимое ответа - html-документ, является результатом выполнения cgi-программы, которая передает результат своей работы (html-документ) серверу, который возвращает его клиенту. Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.1 Инструментальные средства создания приложений Расширения ISAPI. Серверы ASP Основные положения лекции Если Web-сервер создан на базе Microsoft Internet Information Server, вместо программ CGI Вы можете использовать приложения ISAPI, реализованные в виде библиотек динамической загрузки DLL. Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI. Расширения ISAPI Расширения ISAPI по своему назначению напоминают программы CGI. Однако в отличие от последних эти расширения выполнены в виде библиотек динамической компоновки DLL, что имеет ряд преимуществ. Так же как и программы CGI, расширения ISAPI получают данные от навигатора (например, из заполненной удаленным пользователем формы), обрабатывают их и посылают навигатору ответ. Однако вместо чтения содержимого переменных среды и стандартного потока ввода STDIN расширение ISAPI получает данные при помощи специально предназначенных для этого функций. Аналогично, вместо записи выходных данных в стандартный поток вывода расширение ISAPI вызывает специальную функцию. Заметим, что сервер Microsoft Internet Information Server версии 4.0 и более новых версий позволяет загружать программы ISAPI в отдельное адресное пространство. Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI, загруженной в отдельное адресное пространство, как правило, не приводит к полной остановке Web-сервера. В результате расширения ISAPI работают быстрее по сравнению с программами CGI, особенно когда сервер Web посещают много пользователей. Что же касается программ CGI, то для каждого пользователя приходится запускать отдельный процесс. В операционной системе Microsoft Windows запуск процесса отнимает немало времени, но в Linux данная операция выполняется быстрее. Фильтры ISAPI Фильтры ISAPI, так же как и расширения ISAPI, реализованы в виде библиотек динамической загрузки DLL, однако они предназначены для другого. Фильтры ISAPI способны контролировать весь поток данных между браузером и сервером Web на уровне протокола HTTP. Благодаря этому их можно применять для решения таких задач, как динамическая перекодировка и шифрование данных, создание дополнительных процедур аутентификации пользователей, сбор статистической информации об использовании ресурсов сервера и т. д. Интерфейс Internet Server Application Program Interface (ISAPI) предназначен для программирования приложения (API) информационных служб интернета (IIS). ISAPI состоит из классов поддержки и структур, участвующих в программной эксплуатации IIS. Веб-приложения, использующие ISAPI для взаимодействия с IIS, реализуют это взаимодействие на веб-сервере Windows наиболее эффективным образом. При работе с ISAPI уровень программного обеспечения поддержки или интерфейсов между IIS и веб-приложением сильно снижается. Все программное обеспечение веб-приложений Microsoft прямо или косвенно использует технологию ISAPI. Технологии Microsoft Application Server Pages (ASP) и .NET Framework построены как приложения ISAPI. ISAPI рекомендуется для программистов, создающих (или уже создавших) приложение на языке C++, предназначенное для продажи на рынке ПО. Если важным фактором является производительность, и на разработку выделяется больше времени, чем на создание обычного сценария для интернета, рассмотрите вариант использования ISAPI. Кроме всего прочего, ISAPI выполняет на несущем узле некоторые задачи, которые нельзя выполнить при помощи других технологий. Программное обеспечение ISAPI создано таким образом, что при его выполнении другие веб-приложения, написанные на языках сценариев с использованием других расширений ISAPI (например, .NET Framework или ASP.DLL), не рассматривают задачи, выполняемые расширением ISAPI. К недостаткам рассматриваемой технологии относится сложность ISAPI в работе и в отладке. Отладка кода в интегрированной среде разработки (Integrated Design Environment, IDE) Visual Studio .NET довольно сложна, и, поскольку IIS представляет собой процесс с несколькими нитями, результаты отладки могут быть непредсказуемыми. Малейшая ошибка в приложении ISAPI катастрофически сказывается на производительности IIS. По сравнению со другими средами разработки ISAPI весьма чувствительна к ошибкам при построении веб-приложения. Если IIS получает запрос и считает, что необходимо использовать расширение ISAPI (запрошен файл, связанный с расширением ISAPI или само расширение ISAPI), то IIS передает запрос HTTP вместе с расширением ISAPI. Чтобы расширение ISAPI получило запрос HTTP, используется определенный программный интерфейс. Как известно, приложение ISAPI содержит файлы заголовков ISAPI, определяющих структуры и классы. Расширение ISAPI примет запрос посредством используемого интерфейса API, и данные запроса HTTP будут загружены в структуры и классы, являющиеся компонентами ISAPI. Расширение ISAPI анализирует данные HTTP-запроса и направляет вызовы другому программному обеспечению, например, программе бизнес-уровня. Ответы этой программы формируются в виде HTTP-ответов и возвращаются в IIS. IIS возвращает ответ расширения ISAPI веб-пользователю, направившему изначальный запрос. Средствами технологии ASP удается легко создавать интерактивные страницы Web, не используя расширения CGI или ISAPI, что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам. Как работают серверные сценарии в страницах ASP? Когда пользователь обращается к странице ASP, Web-сервер интерпретирует расположенный в ней сценарий. При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю. Заметим, что пользователь не может каким-либо образом получить содержимое страницы ASP, так сервер Web отправляет ему не саму страницу, а результат ее интерпретации. Таким образом, логика работы страницы скрыта от пользователей. Серверный сценарий, встроенный в страницу ASP, способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects (ADO) — простую и понятную процедуру. Если у Вас возникнет необходимость реализовать собственную бизнес-логику, Вы можете создать новые объекты COM или использовать объекты COM сторонних разработчиков. Итак, расширение ISAPI создается в виде библиотеки динамической компоновки DLL. Обращение к такой библиотеке выполняется в документах HTML аналогично обращению к программам CGI - из форм или ссылок, созданных, соответственно, при помощи операторов Когда пользователь обращается к расширению ISAPI, соответствующая библиотека DLL загружается в адресное пространство сервера Microsoft Information Server и становится его составной частью. Так как расширение ISAPI работает в рамках процесса сервера Microsoft Information Server, а не в рамках отдельного процесса (как это происходит при запуске программы CGI), оно может пользоваться всеми ресурсами, доступными серверу. Это благоприятно сказывается на производительности. Структура расширения ISAPI очень проста. Библиотека DLL расширения должна экспортировать всего две функции с именами GetExtensionVersion и HttpExtensionProc. Первая из этих функций предназначена для того, чтобы расширение могло сообщить серверу версию спецификации, которой оно соответствует, и строку описания расширения. Функция HttpExtensionProc выполняет всю работу по передаче данных между расширением и сервером. Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.2 Применение инструментальных средств создания приложений Характеристика программного средства(PHP) Основные положения лекции Все языки программирования, используемые при разработке web-сайтов, можно разделить на две большие группы. К первой относятся те из них, код которых выполняется на компьютере посетителя сайта, т. е. в браузере, запущенном на компьютере пользователя. Это известные всем JavaScript и VBScript. Во вторую группу включаются те языки, программы на которых выполняются на том компьютере, где расположен web-сервер. РНР относится ко второй группе - программа на РНР исполняется на web-сервере. Синтаксис языка РНР допускает его легкое освоение как начинающим программистом, так и тем, кто уже использовал ранее какой-либо язык программирования. Можно целиком и полностью сосредоточиться на решаемой задаче и не думать о мелочах. Именно это и делает РНР подходящим выбором для web-дизайнера, который, начав его использовать, может вообще забыть о каких-либо других CGI-языках. Язык PHP был разработан как инструмент для решения чисто практических задач. Его создатель, Расмус Лердорф, хотел знать, сколько людей читают его online-резюме, и написал для этого простенькую CGI-оболочку на языке Perl, т.е. это был набор Perl-скриптов, предназначенных исключительно для определенной цели – сбора статистики посещений. Цель разработки языка была проста - сделать домашнюю страничку Расмуса более интерактивной, а значит, и более привлекательной для посетителей. Вскоре выяснилось, что оболочка обладает небольшой производительностью, и пришлось переписать ее заново, но уже на языке Си. После этого исходники были выложены на всеобщее обозрение для исправления ошибок и дополнения. В начале 1995 года вышла первая известная версия продукта, называвшаяся Personal Home Page Tools (средства для персональной домашней страницы). Средства эти были более чем скромными: анализатор кода, понимающий всего лишь несколько специальных команд, и набор утилит, полезных для создания гостевой книги, счетчика посещений, чата и т.п. К середине 1995 года после основательной переработки появилась вторая версия продукта, названная PHP/FI (Personal Home Page / Forms Interpreter – персональная домашняя страница/ интерпретатор форм). Она включала набор базовых возможностей сегодняшнего PHP, возможность автоматически обрабатывать html-формы и встраиваться в html-коды. Синтаксис PHP/FI сильно напоминал синтаксис Perl, но был более простым. В 1997 вышла вторая версия Cи-реализации PHP – PHP/FI 2.0. PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. Одной из сильных сторон PHP 3.0 была возможность расширения ядра. Именно свойство расширяемости PHP 3.0 привлекло внимание множества разработчиков, желающих добавить свой модуль расширения. Кроме того, PHP 3.0 предоставляла широкие возможности для взаимодействия с базами данных, различными протоколами и API. Немаловажным шагом к успеху оказалась разработка нового, намного более мощного и полного синтаксиса с поддержкой ООП. С момента появления PHP 3.0 изменилась не только функциональность и внутреннее устройство языка, но и его название. В аббревиатуре PHP больше не было упоминания о персональном использовании, PHP стало сокращением (рекурсивным акронимом) от PHP: Hypertext Preprocessor, что значит «PHP: препроцессор гипертекста». Новое ядро было названо «Zend Engine» (от имен создателей: Zeev и Andi) и впервые представлено в середине 1999 года. PHP 4.0, основанный на этом ядре и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года. Помимо улучшения производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций. В 2004 -2005 году выпущена версия PHP 5, является самой современной и динамично развивающейся. По сравнению с PHP 4 она содержит очень большое количество изменений и нововведений, которые уже сейчас могут оценить и применять для построения своих сайтов пользователи тарифных планов "Деловой" и "Профессионал". 3. Характеристики РНР Практический характер РНР обусловлен пятью важными характеристиками: Существует еще одна «характеристика», которая делает РНР особенно привлекательным: он распространяется бесплатно! Всего выделяют три основные области применения PHP. В PHP сочетаются две самые популярные парадигмы программирования – объектная и процедурная. Если говорить о возможностях сегодняшнего PHP, то они выходят далеко за рамки тех, что были реализованы в его первых версиях. С помощью PHP можно создавать изображения, PDF-файлы, флэш-ролики, в него включена поддержка большого числа современных баз данных, встроены функции для работы с текстовыми данными любых форматов, включая XML, и функции для работы с файловой системой. PHP поддерживает взаимодействие с различными сервисами посредством соответствующих протоколов, таких как протокол управления доступом к директориям LDAP, протокол работы с сетевым оборудованием SNMP, протоколы передачи сообщений IMAP, NNTP и POP3, протокол передачи гипертекста HTTP и т.д. Для создания приложений электронной коммерции существует ряд полезных функций, таких как функции осуществления платежей Cybercash, CyberMUT, VeriSign Payflow Pro и CCVS. 5. Установка и настройка ПО Поскольку в качестве практической основы курса мы будем рассматривать задачи, решаемые с помощью технологии клиент-сервер, и PHP соответственно будет использоваться для создания скриптов, обрабатываемых сервером, нам нужно установить web-сервер и интерпретатор PHP. В качестве web-сервера выберем, например, Apache, как наиболее популярный среди web-разработчиков. Для просмотра результатов работы программ нам понадобится web-браузер, например Internet Explorer. Основным источником сведений по РНР является официальный сайт его разработчиков - www.php.net. Однако тем, кто желает разработать сайт с применением РНР, возможно, лучше посетить прежде всего русский сайт "РНР по-русски", расположенный по адресу http://php.spb.ru, и загрузить с него два файла - полное описание РНР на русском языке (перевод руководства по РНР с сайта www.php.net) и web-сервер Apache с РНР-модулем, сконфигурированным для немедленного использования. Готовый к использованию web-сервер вместе с интерпретатором РНР, а также системой управления базами данных MySQL вы также можете найти на сайте проекта "Денвер", расположенном по адресу http://dklab.ru/chicken/web. Основной русский ресурс по РНР - это, несомненно, сайт Дмитрия Бородина "РНР для всех" (http://php.spb.ru, зеркало -http://rusphp.chat.ru), о котором уже упоминалось выше. Другим большим порталом, посвященным РНР, является "Клуб РНР-разработчиков" (http://www.phpclub.net). Там вы найдете множество примеров сценариев на РНР, сможете загрузить литературу на русском языке. Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.2 Применение инструментальных средств создания приложений Основы языка ИС (PHP). Синтаксис Основные положения лекции Первое, что нужно знать относительно синтаксиса PHP, – это то, как он встраивается в HTML-код, как интерпретатор узнает, что это код на языке PHP. Способы выхода из HTML 1. 2. echo ("это простейшая SGML-инструкция процессинга\n"); ?> 3. echo ("некоторые редакторы (вроде FrontPage) не любят инструкции процессинга"); 4.<% echo ("Вы можете по выбору использовать тэги в стиле ASP"); %> Разделение инструкций В PHP инструкции разделяются так же, как и в Cи или Perl, – каждое выражение заканчивается точкой с запятой. Комментарии Символы // и # обозначают начало однострочных комментариев, /* и */ – соответственно начало и конец многострочных комментариев. Переменные Переменная в PHP обозначается знаком доллара, за которым следует ее имя. Например: $my_var Имя переменной чувствительно к регистру. Имена переменных соответствуют тем же правилам, что и остальные наименования в PHP: правильное имя переменной должно начинаться с буквы или символа подчеркивания с последующими в любом количестве буквами, цифрами или символами подчеркивания. Константы Для хранения постоянных величин, т.е. таких величин, значение которых не меняется в ходе выполнения скрипта, используются константы. Для определения константы существует специальная функция define: define("Имя_константы", "Значение_константы", [Нечувствительность_к_регистру]) По умолчанию имена констант чувствительны к регистру. Для каждой константы это можно изменить, указав в качестве значения аргумента Нечувствительность_к_регистру значение True. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре. Получить значение константы можно, указав ее имя. В отличие от переменных, не нужно предварять имя константы символом $. Кроме того, для получения значения константы можно использовать функцию constant() с именем константы в качестве параметра. Операторы Операторы позволяют выполнять различные действия с переменными, константами и выражениями. Выражение можно определить как все, что угодно, что имеет значение. Переменные и константы – это основные и наиболее простые формы выражений. Существует множество операций (и соответствующих им операторов), которые можно производить с выражениями. Рассмотрим некоторые из них подробнее. Таблица .1. Арифметические операторы Обозначение Название Пример + Сложение $a + $b - Вычитание $a - $b * Умножение $a * $b / Деление $a / $b % Остаток от деления $a % $b Таблица .2. Строковые операторы Обозначение Название Пример . Конкатенация (сложение строк) $c = $a . $b (это строка, состоящая из $a и $b) Таблица 3. Операторы присваивания Обозначение Название Описание Пример = Присваивание Переменной слева от оператора будет присвоено значение, полученное в результате выполнения каких-либо операций или переменной/константы с правой стороны $a = ($b = 4) +5; ($a будет равна 9, $b будет равна 4) += Сокращение. Прибавляет к переменной число и затем присваивает ей полученное значение $a += 5; (эквивалентно $a = $a + 5;) .= Сокращенно обозначает комбинацию операций конкатенации и присваивания (сначала добавляется строка, потом полученная строка записывается в переменную) $b = "Привет "; $b .= "всем"; (эквивалентно $b = $b . "всем";) В результате: $b="Привет всем" Обозначение Название Описание Пример and И $a и $b истинны (True) $a and $b && И $a && $b or Или Хотя бы одна из переменных $a или $b истинна (возможно, что и обе) $a or $b || Или $a || $b xor Исключающее или Одна из переменных истинна. Случай, когда они обе истинны, исключается $a xor $b ! Инверсия (NOT) Если $a=True, то !$a=False и наоборот ! $a Обозначение Название Пример Описание == Равенство Значения переменных равны $a == $b === Эквивалентность Равны значения и типы переменных $a === $b != Неравенство Значения переменных не равны $a != $b <> Неравенство $a <> $b !== Неэквивалентность Переменные не эквивалентны $a !== $b < Меньше $a < $b > Больше $a > $b <= Меньше или равно $a <= $b >= Больше или равно $a >= $b Таблица 6. Операторы инкремента и декремента Обозначение Название Описание Пример ++$a Пре-инкремент Увеличивает $a на единицу и возвращает $a $a=4; echo "Должно быть 4:" .$a++; echo "Должно быть 6:" .++$a;?> $a++ Пост-инкремент Возвращает $a, затем увеличивает $a на единицу --$a Пре-декремент Уменьшает $a на единицу и возвращает $a $a-- Пост-декремент Возвращает $a, затем уменьшает $a на единицу PHP поддерживает восемь простых типов данных. Четыре скалярных типа: boolean (логический); integer (целый); float (с плавающей точкой); string (строковый). Два смешанных типа: array (массив); object (объект). И два специальных типа: resource (ресурс); NULL. В PHP не принято явное объявление типов переменных. Тип boolean (булев или логический тип) Этот простейший тип выражает истинность значения, то есть переменная этого типа может иметь только два значения – истина TRUE или ложь FALSE. Тип integer (целые) Этот тип задает число из множества целых чисел Z = {..., -2, -1, 0, 1, 2, ...}. Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком «-» или «+». Тип float (числа с плавающей точкой) Числа с плавающей точкой (они же числа двойной точности или действительные числа) могут быть определены при помощи любого из следующих синтаксисов: $a = 1.234; $b = 1.2e3; $c = 7E-10; Тип string (строки) Строка в PHP может быть определена тремя различными способами: с помощью одинарных кавычек; с помощью двойных кавычек; heredoc-синтаксисом. Одинарные кавычки. Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, перед ней необходимо поставить символ обратной косой черты «\», т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, необходимо продублировать ее «\\'». В PHP существует ряд комбинаций символов, начинающихся с символа обратной косой черты. Их называют управляющими последовательностями, и они имеют специальные значения, о которых мы расскажем немного позднее. Так вот, в отличие от двух других синтаксисов, переменные и управляющие последовательности для специальных символов, встречающиеся в строках, заключенных в одинарные кавычки, не обрабатываются. Двойные кавычки. Если строка заключена в двойные кавычки «"», PHP распознает большее количество управляющих последовательностей для специальных символов. Таблица 7. Управляющие последовательности Последовательность Значение \n Новая строка (LF или 0x0A (10) в ASCII) \r Возврат каретки (CR или 0x0D (13) в ASCII) \t Горизонтальная табуляция (HT или 0x09 (9) в ASCII) \\ Обратная косая черта \$ Знак доллара \" Двойная кавычка Самым важным свойством строк в двойных кавычках является обработка переменных. Heredoc. В этом случае строка должна начинаться с символа <<<, после которого идет идентификатор. Заканчивается строка этим же идентификатором. Закрывающий идентификатор должен начинаться в первом столбце строки. Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Переменные внутри heredoc тоже обрабатываются. Тип array (массив) Массив в PHP представляет собой упорядоченную карту – тип, который преобразует значения в ключи. Определить массив можно с помощью конструкции array() или непосредственно задавая значения его элементам. Определение при помощи array() array ([key] => value, [key1] => value1, ... ) Языковая конструкция array() принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в PHP типа. Числовой ключ массива часто называют индексом. Определение с помощью синтаксиса квадратных скобок Создать массив можно, просто записывая в него значения. Значение элемента массива можно получить с помощью квадратных скобок, внутри которых нужно указать его ключ например, $book["php"]. Если указать новый ключ и новое значение например, $book["new_key"]="new_value", то в массив добавится новый элемент. Если мы не укажем ключ, а только присвоим значение $book[]="new_value", то новый элемент массива будет иметь числовой ключ, на единицу больший максимального существующего. Если массив, в который мы добавляем значения, еще не существует, то он будет создан. Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с числами. Предположим, вы хотите сохранить в массиве лучшие сочетания вин и блюд. Проще всего было бы хранить в массиве пары «ключ/значение» — например, присвоить сорт вина названию блюда. Самым разумным решением будет использование ассоциативного массива: Spairings["zinfandel"] = "Broiled Veal Chops"; $pairings["merlot"] = "Baked Ham"; $pairings["sauvignon"] = "Prime Rib"; $pairings["sauternes"] = "Roasted Salmon"; Ассоциативный массив заметно экономит время и объем программного кода, необходимого для вывода определенных элементов массива. Тип object (объекты) Объекты – тип данных, пришедший из объектно-ориентированного программирования (ООП). Согласно принципам ООП, класс – это набор объектов, обладающих определенными свойствами и методами работы с ним, а объект соответственно – экземпляр класса. В PHP для доступа к методам объекта используется оператор ->. Для инициализации объекта используется выражение new, создающее в переменной экземпляр объекта. Тип resource (ресурсы) Ресурс – это специальная переменная, содержащая ссылку на внешний ресурс (например, соединение с базой данных). Ресурсы создаются и используются специальными функциями (например, mysql_connect(), pdf_new() и т.п.). Тип Null Специальное значение NULL говорит о том, что переменная не имеет значения. Существует только одно значение типа NULL – регистронезависимое ключевое слово NULL. Приведение типов в PHP работает так же, как и в C: имя нужного типа записывается в скобках перед переменной, которая к этому новому типу приводится. Допускаются следующие приведения типов: В PHP имеется большое количество предопределённых переменных, доступных любому скрипту. Многие эти переменные, однако, невозможно полностью задокументировать, так как они зависят от сервера, на котором происходит работа, его версии и установок и других факторов. Некоторые из этих переменных будут недоступны при запуске РНР из командной строки. Суперглобалы PHP: $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.2 Применение инструментальных средств создания приложений Элементы управления и выражения языка PHP Основные положения лекции Управляющие конструкции предоставляют в распоряжение программиста средства для построения сложных программ, способных проверять условия и реагировать на изменения значений входных данных во время работы. if Конструкция if является одной из ключевых во многих языках, в том числе и в PHP. Она позволяет выполнять фрагменты кода при выполнении условия. if (выражение) { блок } Выражение вычисляется в булево значение. Если выражение вычисляется в TRUE, PHP выполнит блок операторов, а если вычисляется в FALSE - оператор игнорируется. else Часто нужно выполнить оператор, если соблюдено какое-либо условие, и другой оператор - если условие не соблюдено. Для этого предназначен оператор else. else расширяет оператор if и выполняет свои операторы, если проверяемое выражение в операторе if вычисляется в FALSE. Оператор else выполняется только в том случае, если выражение if вычисляется в FALSE, а если имеются также выражения elseif - только если они также вычисляются в FALSE elseif Подобно else, она расширяет оператор if для выполнения других операторов в том случае, если оригинальное выражение if вычисляется в FALSE. Однако, в отличие от else, elseif будет выполнять альтернативное выражение только тогда, когда условное выражение в elseif будет вычислено в TRUE. Альтернативное ограничение блоков if (выражение) : блок else : блок endif; 2. Циклы Цикл с предусловием while Вот базовая форма оператора while: while (выражение) { блок } Он говорит PHP, что нужно неоднократно выполнять вложенный оператор (-ы), пока выражение вычисляется в TRUE. Значение выражения проверяется каждый раз в начале цикла, поэтому, если это значение изменилось при выполнении вложенного оператора (-ов), выполнение не остановится до конца данной итерации (каждый раз, когда PHP выполняет все операторы цикла, называется одной итерацией цикла). Иногда, если выражение expr вычисляется в FALSE в самом начале цикла, вложенный оператор (-ы) может быть не выполнен ни разу. Как и в операторе if, вы можете создавать блок из операторов внутри цикла while с помощью фигурных скобок {} или используя альтернативный синтаксис: while (expr): statement ... endwhile; Циклы do..while очень похожи на циклы while, но условное выражение проверяется в конце каждой итерации, а не в начале. Главное отличие от регулярных циклов while состоит в том, что первая итерация цикла do..while всегда выполняется (условие проверяется только в конце итерации), а в цикле while этого может и не быть (условие проверяется в начале каждой итерации и, если вычисляется в FALSE сразу в начале, выполнение цикла немедленно прерывается). Цикл со счетчиком for Цикл for обеспечивает еще одну возможность многократного выполнения блоков. Он отличается от цикла while только тем, что условие изменяется в самой управляющей конструкции, а не где-то внутри блока команд. Как и в случае с циклом while, цикл выполняется до тех пор, пока проверяемое условие остается истинным. Общая форма конструкции for выглядит так: for (инициализация: условие; приращение) { блок } Условная часть цикла for в действительности состоит из трех компонентов. Инициализация выполняется всего один раз и определяет начальное значение управляющей переменной цикла. Условие проверяется в начале каждой итерации и определяет, должна ли выполняться текущая итерация или нет. Наконец, приращение определяет изменение управляющей переменной при каждой итерации. Возможно, термин «приращение» в данном случае неточен, поскольку переменная может как увеличиваться, так и уменьшаться в соответствии с намерениями программиста. PHP также поддерживает "синтаксис colon/с двоеточием" для циклов for. for (expr1; expr2; expr3): statement; ...; endfor; Конструкция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Существуют две разновидности команды foreach, предназначенные для разных типов массивов: foreach (массив as $элемент) { блок } foreach (массив as $ключ => $элемент) { блок 4. switch Оператор switch напоминает выполнение серии операторов IF над одним выражением. switch (выражение) { case (условие): блок case (условие): блок ... default: блок } Проверяемое условие указывается в круглых скобках после ключевого слова switch. Результат его вычисления последовательно сравнивается с условиями в секциях case. При обнаружении совпадения выполняется блок соответствующей секции. Если совпадение не будет обнаружено, выполняется блок необязательной секции default. Выражением case может быть любое выражение, которое вычисляется в простой тип, то есть целое число, число с плавающей точкой или строка. Массивы или объекты не могут использоваться здесь, если только они не разыменовываются в простой тип. Альтернативный синтаксис структур управления поддерживается в switch. 5. break break заканчивает выполнение текущей структуры (цикла) for, foreach, while, do..while или switch. break принимает необязательный числовой аргумент, указывающий, сколько содержащих вкладывающих структур прерывают выполнение. 6. continue continue используется в циклических структурах для пропуска оставшейся части текущей итерации цикла и продолжения выполнения с начала следующей итерации (прохода) цикла. 7. require Оператор REQUIRE заменяет себя содержимым указанного файла, похоже на то,как в препроцессоре C работает #include. 8. include Оператор INCLUDE вставляет и выполняет содержимое указанного файла.Это случается каждый раз, когда встречается оператор INCLUDE, так что вы можете включить этот оператор внутрь цикла, чтобы включить несколько файлов. Вопросы для самоконтроля: Раздел III. Серверное программное обеспечение 3.2 Применение инструментальных средств создания приложений Функции ИС (PHP) Основные положения лекции 1. Функции, определяемые пользователем (пользовательские) Функцией называется фрагмент программного кода, обладающий уникальным именем и предназначенный для решения конкретной задачи. Функция вызывается по имени в разных точках программы, что позволяет многократно выполнять фрагмент с указанным именем. Преимущество такого решения заключается в том, что блок кода пишется всего один раз, а затем легко модифицируется по мере необходимости. Определение и вызов функций Определить новую функцию в РНР несложно. Функции могут создаваться в любой точке программ РНР, однако по соображениям структурной организации кода удобнее разместить все функции, используемые сценарием, в самом начале сценарного файла. Определение функции обычно состоит из трех частей: Обобщенный синтаксис функций РНР выглядит так: function имя_функции ([$параметр1. $параметр2, .... $параметрn]) { тело функции } Внутри функции может появляться любой правильный код PHP, даже другие функции и определения классов. Информация может передаваться в функцию через список аргументов, который является списком разделённых запятыми переменных и/или констант. По умолчанию аргументы передаются в функцию по значению (поэтому, если вы изменяете значение аргумента внутри функции, оно не изменяется за пределами этой функции). Если вы хотите дать функции возможность модифицировать свои аргументы, вы обязаны передавать их по ссылке. Если вы всегда хотите передавать аргументы по ссылке, вы можете ввести префикс-амперсанд (&) в имени аргумента в определении функции. Рассмотрим простой пример использования функции. Предположим, вы хотите создать функцию для вывода лицензионной информации на web-странице: function display_copyright() { print "Copyright © 2001 PHP-Powered Recipes. All Rights Reserved."; } Если ваш web-сайт состоит из нескольких страниц, достаточно вызвать эту функцию в конце каждой страницы — и вам не придется заново переписывать один и тот же текст. А когда наступит 2002 год, одно простое изменение текста, выводимого этой функцией, приведет к автоматическому обновлению всех страниц. Если бы не преимущества функционального программирования, вам пришлось бы вручную редактировать все страницы, на которых выводится лицензионная информация. Рассмотрим разновидность функции display_copyright(), которой при вызове передается параметр. Предположим, вы отвечаете за администрирование нескольких web-сайтов, каждому из которых присвоено отдельное имя. На каждом сайте имеется собственный административный сценарий с несколькими переменными, относящимися к этому сайту; к их числу принадлежит переменная $site_name с именем сайта. В этом случае функцию display_copyright() можно записать следующим образом: function display_copyright($site_name) { print "Copyright © 2001 $site_name. All Rights Reserved."; } Переменная $site_name, значение которой присваивается за пределами display_copy-right(), передается функции в качестве параметра. Переданное значение можно использовать и модифицировать в любом месте функции, однако любые изменения будут действовать лишь внутри этой функции. Впрочем, специальные ключевые слова позволяют сделать так, чтобы изменения параметров распространялись и за пределы display_copyright(). Функции можно вызывать внутри других функций — по аналогии с тем, как одна управляющая конструкция (if, while, for и т. д.) может находиться внутри другой. Такая возможность удобна в любых программах, и в больших, и в малых, поскольку она увеличивает степень модульности приложения и упрощает сопровождение программы. В примере, описанном выше, можно полностью избавиться от необходимости модификации даты. Для этого достаточно включить в d1splay_copyright() вызов стандартной функции РНР date( ): function display_copyright($site_name) { print "Copyright ©". date("Y"). "$site_name. All Rights Reserved."; } Параметр Y функции date( ) указывает, что возвращаемое значение представляет собой текущий год, отформатированный в виде четырех цифр. Если системная дата установлена правильно, РНР при каждом выполнении сценария будет выводить год. Функция РНР date( ) отличается исключительной гибкостью и поддерживает 25 разных флагов форматирования даты и времени. Также допускается объявление функций внутри других функций. По завершении работы функции часто бывает полезно вернуть некоторое значение, для чего результат вызова функции обычно присваивается некоторой переменной. Функции могут возвращать значения любых типов, в том числе массивы и списки. Значения из функций возвращаются с помощью необязательного оператора return. Может быть возвращён любой тип, в том числе список и объект. Этот оператор немедленно останавливает выполнение функции и передаёт управление обратно на строчку, с которой функция была вызвана. Ситуация, при которой функция многократно вызывает сама себя, пока не будет выполнено некоторое условие, открывает замечательные возможности. При правильном использовании рекурсивные функции уменьшают объем программы и делают ее более выразительной. Рекурсивные функции особенно часто используются при выполнении повторяющихся действий — например, при поиске в файлах/массивах и построении графических изображений (например, фракталов). Классическим примером рекурсивных функций, встречающимся во многих курсах программирования, является суммирование чисел от 1 до N. Если функция вызывается достаточно часто, рекурсия делает программу более эффективной. Тем не менее, при использовании рекурсии необходима осторожность, поскольку ошибки могут привести к зацикливанию программы. 6. Функции-переменные Одной из интересных возможностей РНР являются функции-переменные (variable functions), то есть динамические вызовы функций, имена которых определяются во время выполнения программы. Хотя в большинстве web-приложений можно обойтись и без функций-переменных, они значительно сокращают объем и сложность программного кода, а также часто снимают необходимость в условных командах if. Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры (однако присутствие параметров не обязательно). Обобщенный синтаксис функции-переменной: $имя_функции( ); Библиотеки функций — одно из самых эффективных средств экономии времени при построении приложений. Предположим, вы написали серию функций для сортировки массива. Вероятно, эти функции будут неоднократно использоваться в разных приложениях. Вместо того чтобы постоянно переписывать эти функции в новый сценарий или копировать их через текстовый буфер, гораздо удобнее разместить все функции сортировки в отдельном файле и присвоить ему легко узнаваемое имя (например, array_sorting.inc). Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.1 Инструментальные средства создания клиентской части Обзор инструментальных средств Основные положения лекции 1. Использование JavaScript Присмотритесь к сайтам, которые вы посещаете. На каждой странице содержится текст и некоторое количество картинок. Быть может, есть часы, показывающие время, или бегущий текст в строке состояния браузера. Возможно, на сайте имеется форма, которую нужно заполнить. Если пропустить какую-либо графу анкеты, то появится сообщение об ошибке. На некоторых страницах встречаются движущиеся по экрану изображения или текст, изменяющийся при щелчке мыши. Огромное количество Web-страниц сделано с использованием сценариев (по самым разным причинам), и сайты без них кажутся блеклыми и скучными. Каким бы интересным не было содержание сайта, некоторые посетители сразу захотят уйти. Конечно, нет смысла оспаривать важность текстового содержания для любой Web-страницы, однако использование JavaScript не только улучшит подачу материала, но и сделает вашу страницу более запоминающейся. JavaScript (или Livescript, как он назывался вначале) создан Бренданом Эй-хом (Brendan Eich), сотрудником компании Netscape Communications, и получил настоящее название после того, как в моду вошел язык Java. Первым браузером, поддерживающим JavaScript, был Netscape Navigator 2.0. Потом и в компании Microsoft поняли, насколько важен язык подготовки сценариев, и выпустили собственный вариант под названием JScript 1.0, поддерживаемый программами Internet Explorer 3.0 и Internet Information Server. JScript 1.0 компании Microsoft оказался хорошо совместимым с JavaScript 1.0 компании Netscape. То есть сценарий, написанный для одного браузера, с большой вероятностью мог быть выполнен на другом браузере. Позже компания Netscape выпустила версию JavaScript 1.1, поддерживаемую программами Netscape Navigator 3.0 и Live Wire Web server. В данной версии были сохранены все характерные черты языка JavaScript 1.0 и добавлено множество новых возможностей. Компания Microsoft также усовершенствовала собственный язык JScript, но решила не включать в него все новшества JavaScript 1.1. С этого момента возникла несовместимость браузеров, при которой тэги HTML и сценарии, написанные для одного браузера, не распознаются или приводят к ошибкам при использовании браузера-соперника. После всей этой путаницы наметилась тенденция к сращению стандартов компаний-соперниц, поскольку и JavaScript 1.5, и JScript 5.5 абсолютно совместимы с ECMAScript Edition 3. Это означает, что теоретически возможно написать сценарий JavaScript, который будет одинаково хорошо действовать в обоих браузерах. Однако различия между браузерами сильно осложняют эту задачу. JavaScript 1.5 и JScript 5.5, новейшие языки написания сценариев, дают вам огромную власть и над тем, как выглядит ваша Web-страница, и над тем, как она функционирует. Используя JavaScript в сочетании с новыми технологиями, представленными в последних версиях браузеров, такими как объектная модель документа (Document Object Model - DOM) и каскадные таблицы стилей (Cascading Style Sheets - CSS), можно полностью контролировать все, что происходит на вашей Web-странице. Появление стандарта ЕСМА, объединившего JavaScript и JScript, обеспечило будущее JavaScript в сети. Компании Netscape и Microsoft (у которой имеется свой язык подготовки сценариев VBScript, основанный на Visual Basic и поддерживаемый только браузером Internet Explorer) обещают развивать JavaScript и в дальнейшем. Браузер Opera производства компании Opera Software, начиная с третьей версии, также поддерживает язык JavaScript. Согласно классическому определению, сценарий (script) - это последовательность команд (а иногда даже программа), которая интерпретируется и обрабатывается другой программой. Это означает, что для написания сценария достаточно текстового редактора, в то время как для создания программы требуется другая программа (по крайней мере, компилятор). Иными словами, сценарии пишутся легче и быстрее, чем программы, создаваемые на более структурированных языках, таких как С и C++. Однако для выполнения сценария требуется больше времени, чем это необходимо для скомпилированной программы. Да и как иначе, если каждая команда сценария сначала обрабатывается другой программой (а значит, эту дополнительную программу нужно еще загрузить и выполнить многие другие команды), а не непосредственно процессором. Впрочем, этот недостаток с успехом компенсируется тем, что для создания сценария нужен всего лишь бесплатный текстовый редактор, в то время как компилятор для языка C++ стоит сотни долларов. JavaScript - язык третьего поколения, а значит, в чем-то родственен языкам С, Pascal или BASIC. Между ними есть сходство, но есть и значительные различия: Простой текстовый редактор Наверное, удобнее всего выбрать простой текстовой редактор (например,Блокнот или старый добрый Windows Notepad) и печатать код в нем. Быть может, это не самый легкий способ написания сценариев JavaScript, но у него имеется несколько несомненных преимуществ: Использование средств визуального проектирования В качестве средств визуального проектирования для написания сценариев JavaScript обычно используются редакторы HTML, позволяющие вставлять в Web-страницу несложные сценарии для выполнения простых задач. К таким средствам относятся Microsoft FrontPage, Macromedia Dreamweaver и Adobe GoLive. Чаще всего при этом не нужно проверять или набирать вручную код JavaScript, что может показаться поначалу значительным преимуществом. Но, облегчая себе работу, вы теряете необходимую гибкость. Нередко возникают ситуации, когда крошечное исправление приводит к множеству ошибок - не самый лучший способ привлечь посетителей на ваш сайт. Однако средства визуального проектирования иногда могут оказаться полезными. Главное, чтобы вы смогли при желании написать собственный сценарий JavaScript и не полагались полностью на встроенные функции программы. Все же у средств визуального проектирования есть и некоторые достоинства: скорость - результат достигается намного быстрее, чем при наборе вручную; эффективность - средств визуального проектирования достаточно для того, чтобы получить работающий сценарий; специальные функции, например выделение цветом, облегчают чтение кода. Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.1 Инструментальные средства создания клиентской части Назначение и возможности ИС Основные положения лекции 1. Назначение и возможности ИС Язык JavaScript, язык VBScript - технологии создания сайтов Язык JavaScript (не путайте с Java) и VBScript - это языки программирования для интернет, используемые на стороне клиента. Программы на этих языках встраиваются в код web-страниц, или выносятся в отдельный файл, обращение к которому осуществляется из web-страницы. При этом, даже если код на JavaScript или VBScript вынесен в отдельный файл, он все равно выполняется броузером, как если бы он был включен в web-страницу. Серьезным недостатком языков JavaScript и VBScript является доступность просмотра кода страницы в броузере или при сохранении страницы на диске и открытии любым текстовым редактором. Это создает сразу две проблемы - невозможность скрытия исходного кода и огромная дыра в безопасности, т.к. злоумышленник может изменить значение переменных JavaScript или VBScript, в поле формы вложить вредоносную программу или изменить алгоритм программы. По вышеуказанным причинам использовать языки программирования JavaScript и VBScript для создания программ, подобных интернет-магазинам, форумам, гостевым книгам, которые используют или записывают информацию, полученную от пользователя, с точки зрения безопасности, абсолютно неразумно. Для решения таких задач необходимо использование программ, работающих на стороне сервера, для написания которых используют такие языки программирования для интернет: PHP, ASP.NET, Perl и Java. 2. Выявление и исправление ошибок Чем больше опыт вашей работы в JavaScript, тем чаще в ваших сценариях возникают ошибки. Они вызывают раздражение, их трудно найти, но скоро вы научитесь отыскивать их и исправлять. Что такое ошибки Ошибки (bugs) — это проблемы, возникающие в сценарии. Процесс отыскания и исправления ошибок называется отладкой (debugging). Слово bug в английском языке означает «насекомое» или «жучок». Типы ошибок Как и в реальном мире с неисчерпаемым количеством форм, в мире компьютеров встречается много разновидностей ошибок. Самыми распространенными являются следующие: Синтаксические ошибки Синтаксические ошибки - наиболее распространенный тип ошибок, знакомый каждому программисту. Синтаксис - это набор грамматических правил языка программирования, а поскольку компьютеры более требовательны к языку, чем люди от вас требуется чрезвычайная внимательность. Сценарий JavaScript проверяется на наличие синтаксических ошибок во время загрузки в браузер. Таким образом, подобные ошибки выявляются сразу. Ошибки времени выполнения Ошибки времени выполнения возникают в тех случаях, когда в коде сценария JavaScript поставлена невыполнимая задача. Они называются так потому, что могут возникнуть в любой момент выполнения сценария. Логические ошибки Логические ошибки - это не столько ошибки языка JavaScript, сколько самого сценария. Вы можете написать сценарий для расчета налога с продаж, но вместо того чтобы прибавлять налог к сумме покупки, программа будет его вычитать. Это логическая ошибка. Ошибки приоритета операций Ошибки приоритета операций — по сути, те же логические ошибки, но они связаны с порядком выполнения математических операций. Как найти ошибку Пример: Здесь допущена простая синтаксическая ошибка - опечатка в слове alert. На рис.1 показана ошибка применительно к браузеру Internet Explorer 5.5. При загрузке страницы в строке сообщений мелькает надпись Done, but with errors on the page (Выполнено, но с ошибками на странице). Затем эта фраза сменяется надписью Done (Готово), рядом с которой возникает пиктограмма с восклицательным знаком. Двойной щелчок по этой пиктограмме вызывает диалоговое окно с информацией об ошибке (см. рис.2). Обнаружение ошибок .Что-то начинает проясняться. Однако пользователи Internet Explorer могут упростить поиск ошибок, применив специальную программу, разработанную компанией Microsoft. Она называется Microsoft Script Debugger. Рекомендация Программа Microsoft Script Debugger распространяется бесплатно. Загрузите ее с сайта http://www.Micmsoft.com/scripting. Рис. 7. Пиктограмма, предупреждающая об ошибке, в строке состояния браузера Internet Explorer 5.5 Рис. 2. Диалоговое окно с информацией об ошибке Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.2 Применение инструментальных средств создания клиентской части Характеристика программного средства Основные положения лекции В 1995 году специалисты компании Netscape создали механизм управления страницами на клиентской стороне, разработав язык программирования JavaScript. JavaScript - это язык управления сценариями просмотра гипертекстовых страниц Web на стороне клиента. Основная идея JavaScript состоит в возможности изменения значений атрибутов HTML-контейнеров и свойств среды отображения в процессе просмотра HTML-страницы пользователем. При этом перезагрузки страницы не происходит. На практике это выражается в том, что можно, например, изменить цвет фона страницы или интегрированную в документ картинку, открыть новое окно или выдать предупреждение. JavaScript - интерпретатор с элементами объектно-ориентированной модели. Хотя он и лишен возможностей создания собственных классов, но он оперирует стандартными объектами. Так как обработчик находится на компьютере пользователя, JS, будучи интерпретатором, использует методы и свойства объектов обозревателя на пользовательском компьютере. Тем, кто привык к структурному программированию, будет несколько сложно привыкнуть к объектной модели. JS имеет возможность написания пользовательских функций, имеет ряд операторов, но работает с объектами, их методами, свойствами и событиями. Также имеется иерархия наследования свойств объектов. Сложность составляет и то, что JS встраивается в HTML документ и взаимодействует с ним. Основные области использования JavaScript таковы: С его помощью можно динамически управлять отображением и содержимым HTML-документов. Можно записывать в отображаемый на экран документ произвольный HTML-код в процессе синтаксического анализа загруженного браузером документа. С помощью объекта Document можно генерировать документы "с нуля" в зависимости от предыдущих действий пользователя или каких-либо иных факторов. JavaScript позволяет контролировать работу браузера. JavaScript позволяет взаимодействовать с содержимым документов. JavaScript обеспечивает взаимодействие с пользователем. JavaScript дает возможность выполнять произвольные математические вычисления. JavaScript позволяет создавать приложения, выполняемые как на стороне клиента, так и на стороне сервера. Для создания механизма управления страницами на клиентской стороне было предложено использовать объектную модель документа. Суть модели в том, что каждый HTML-контейнер - это объект, который характеризуется тройкой: свойства, методы, события Объектную модель можно представить как способ связи между страницами и браузером. Объектная модель - это представление объектов, методов, свойств и событий, которые присутствуют и происходят в программном обеспечении браузера, в виде, удобном для работы с ними кода HTML и исходного текста сценария на странице. Мы можем с ее помощью сообщать наши пожелания браузеру и далее - посетителю страницы. Браузер выполнит наши команды и соответственно изменит страницу на экране. Объекты с одинаковым набором свойств, методов и событий объединяются в классы однотипных объектов. Классы - это описания возможных объектов. Сами объекты появляются только после загрузки документа браузером или как результат работы программы. Об этом нужно всегда помнить, чтобы не обратиться к объекту, которого нет. Cвойства Многие HTML-контейнеры имеют атрибуты. Например, контейнер якоря ... имеет атрибут HREF, который превращает его в гипертекстовую ссылку: Если рассматривать контейнер якоря ... как объект, то атрибут HREF будет задавать свойство объекта "якорь". Программист может изменить значение атрибута и, следовательно, свойство объекта: document.links[0].href="intuit.htm"; Методы В терминологии JavaScript методы объекта определяют функции изменения его свойств. Например, с объектом "документ" связаны методы open(), write(), close(). Эти методы позволяют сгенерировать или изменить содержание документа. События Кроме методов и свойств объекты характеризуются событиями. Собственно, суть программирования на JavaScript заключается в написании обработчиков этих событий. Например, с объектом типа button (контейнер INPUT типа button - "Кнопка") может происходить событие click, т.е. пользователь может нажать на кнопку. Для этого атрибуты контейнера INPUT расширены атрибутом обработки события click - onClick. В качестве значения этого атрибута указывается программа обработки события, которую должен написать на JavaScript автор HTML-документа: В общем случае можно выделить четыре способа функционального применения JavaScript: URL-схема JavaScript Для того чтобы отличить стандартный переход по протоколу HTTP от перехода, программируемого на JavaScript, разработчики языка ввели новую схему URL - JavaScript: Обработчики событий Такие программы, как обработчики событий (handler), указываются в атрибутах контейнеров, с которыми эти события связаны. Например, при нажатии на кнопку происходит событие click: Подстановки Подстановка (entity) встречается на Web-страницах довольно редко. Тем не менее это достаточно мощный инструмент генерации HTML-страницы на стороне браузера. Подстановки используются в качестве значений атрибутов HTML-контейнеров. В случае подстановки интерпретатор получает управление в момент разбора браузером (компонент парсер) HTML-документа. Как только парсер встречает конструкцию &{..} у атрибута контейнера, он передает управление интерпретатору JavaScript, который, в свою очередь, после исполнения кода это управление возвращает парсеру. Таким образом данная операция аналогична подкачке графики на HTML-страницу. Вставка (контейнер SCRIPT - принудительный вызов интерпретатора) Контейнер SCRIPT - это развитие подстановок до возможности генерации текста документа JavaScript-кодом. Интерпретатор получает на исполнение весь фрагмент кода внутри контейнера SCRIPT и возвращает управление HTML-парсеру для обработки текста страницы после тега конца контейнера SCRIPT. Контейнер SCRIPT выполняет две основные функции: Создание внешних файлов Скрипт создается в отдельном текстовом файле с расширением .js. Файл подключается к HTML-документу с помощью тега . Например, или с помощью атрибута SRC тега приведет к выводу текста: один Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.2 Применение инструментальных средств создания клиентской части Объекты JavaScript Основные положения лекции Объектная модель браузера - это набор связанных между собой объектов, обеспечивающих доступ к содержанию страницы и ряду функций браузера. Доступ к содержимому страницы из скриптовых языков позволяет управлять ее содержанием уже после загрузки - этот принцип лежит в основе технологии Dynamic HTML. Все объекты можно разделить на три группы: 1. Объекты браузера 2. Внутренние, или встроенные, объекты языка JavaScript 3. Объекты, связанные с тегами языка HTML Иерархия объектов Свойства Объект window имеет свойства: Методы Alert(). Отображает диалоговое окно Alert с сообщением и кнопкой ОК. Используется для отображения сообщения, не требующего решения пользователя. Синтаксис: window.alert("message") или alert("message") Confirm(). Метод схож с методом Alert, но в отличие от него окно сообщения включает в себя не одну кнопку, а две: ОК и Cancel. Если пользователь нажмет кнопку ОК, то метод возвратит значение true, если Cancel - false. Единственный параметр, который принимает метод - это текстовая строка, выводимая в окне сообщения. Значение, возвращаемое методом, можно присвоить переменной либо использовать в условном операторе. Синтаксис: confirm("message") Prompt(). Метод prompt() выводит на экран диалоговое окно с полем ввода, предлагающее пользователю ввести некоторое значение. Метод принимает два параметра: первый предлагает пользователю ввести строку приглашения, второй - строку, которая будет отображаться в поле ввода по умолчанию. Метод возвращает числовое либо строковое значение, введенное пользователем. Синтаксис: prompt("<текст приглашения>","начальное значение поля ввода") Close(). Данный метод предназначен для закрытия текущего окна браузера. Open(). Объект window использует метод open() для создания новых немодальных окон. Новое окно имеет свою собственную историю, и навигация в нем осуществляется независимо от создавшего его окна. Формат вызова данного метода имеет следующий вид: window.open(url, <имя>, <параметры>, true | false); Параметры вызова метода имеют следуюшие значения: url - строка, определяющая адрес страницы, которая будет загружена в новое окно <имя> - задает имя новому окну <параметры> - является строкой, которая определяет отображаемые элементы в новом окне. Четвертый параметр имеет значение true либо false и определяет, заменит ли URL текущий адрес (значение true) в списке или будет добавлен в конец списка (значение false). Метод setTimeout() устанавливает в текущем окне обработку событий, связанных с таймером, а метод clearTimeout() отменяет обработку таких событий С объектом window связаны также некоторые события. Три основных события - onLoad, onUnload, onbeforeunload. Данные события предназначены для отслеживания состояния загрузки и выгрузки документа в окне. Их обработчики всегда должны быть записаны в заголовке либо как атрибуты тега , чтобы они гарантированно были использованы в самом начале загрузки. Для обращения к свойствам и методам объекта document применяется следующий синтаксис: document.propertyName; document.methodName (parameters) Свойства Объект document имеет достаточно много свойств, каждое из которых соответствует определенному HTML-тегу в текущем документе: Объект location является свойством объекта window. Если вы обращаетесь к объекту location без указания имени окна, то подразумевается свойство текущего окна. Свойство location объекта window легко перепутать со свойством location объекта document. Значение свойства document.location изменить нельзя, а значение свойства location окна - можно, например при помощи выражения window.location.property. Значение document.location присваивается объекту window.location при первоначальной загрузке документа, потому, что документы всегда загружаются в окна. Свойства Объект location имеет следующие свойства: Свойства Значением свойства length является количество элементов в списке объекта history. Методы Рассмотрим основные свойства объекта: Методы и события не определены для этого объекта. Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.2 Применение инструментальных средств создания клиентской части Объекты. Методы и события Основные положения лекции Внутренние объекты Внутренние объекты не относятся к браузеру или загруженному в настоящее время HTML-документу. Эти объекты могут создаваться и обрабатываться в любой JavaScript-прграмме. 1. Объект Date Объект содержит информацию о дате и времени. Этот объект имеет множество методов, предназначенных для получения такой информации. Кроме того объекты Date можно создавать и изменять, например путем сложения или вычитания значений дат получать новую дату. Для создания объекта Date применяется синтаксис: dateObj = new Date(parameters), где dateObj - переменная, в которую будет записан новый объект Date. Данный объект имеет множество методов, свойств объект Date не имеет. Методы Date. 2. Объект Math Math - встроенный в JavaScript объект, дающий доступ к константам и математическим функциям.Объект Math делится на две части - свойства, содержащие константы и методы для реализации функций. Свойствами объекта Math являются математические константы: Методы объекта Math представляют собой математические функции: 3. Объект String Объект string представляет собой последовательность символов, ограниченная одинарными или двойными кавычками. Обычно присваивают какой-то переменной строку и используют ее как объект для вызова свойств или методов. Например, s="internet", а свойство s.lenght (длина строки) вернет значение 8. Рассмотрим некоторые методы объекта: 4. Объекты, соответствующие тегам HTML Некоторые объекты языка JavaScript имеют потомков. В частности, гиперсвязь является объектом, наследованным из объекта document. В языке JS наследованные объекты называются также свойствами. Например, множество гиперсвязей является свойством объекта document, а links - именем этого свойства. Таким образом, трудно провести четкую границу между объектами и свойствами. Гиперсвязь, являясь объектом, в то же время представляет собой свойство links объекта document. Объекты, которым соответствуют массивы, являются многомерными объектами. В некоторых HTML-тегах можно определить несколько элементов, например множество элементов списка в теге 5. Объект form и массив forms Программы на языке JS могут обрабатывать формы непосредственно, получая значения, содержащиеся в необходимых элементах (например для проверки ввода обязательных данных К свойствам и методам формы в JavaScript-прграмме можно обратиться одним из способов: formName.propertyName formName.methodName (parameters) forms[i].propertyName forms[i].methodName (parameters) Здесь formName соответствует атрибуту name объекта form, а i является целочисленной переменной, используемой для обращения к отдельному элементу массива forms, который соответствует определенному тегу Использование массива forms К любой форме текущего гипертекстового документа можно обращаться как к элементу массива forms. Для этого необходимо указать индекс запрашиваемой формы. Например, forms[0] - первый тег document.forms[i] document.forms.length document.forms['name'] Переменная i - это индекс, соответствующий запрашиваемой форме. 6. Система событий языка JavaScript Использование языка JavaScript при обработке событий значительно расширило возможности языка HTML. Имя события Атрибут HTML Условие возникновения события Blur onBlur Потеря фокуса ввода элементом формы Change onChange Изменение содержимого поля ввода иди области текста, либо выбор нового элемента списка Click onClick Щелчок мыши на элементе формы или гиперсвязи Focus onFocus Получение фокуса ввода элементом формы Load onLoad Завершение загрузки документа MouseOver onMouseOver Помещение указателя мыши на гиперсвязь MouseOut onMouseOut Помещение указателя мыши не на гиперсвязь Select onSelect Выделение текста в поле ввода или области текста Submit onSubmit Передача данных формы Unload onUnload Выгрузка текущего документа и начало загрузки нового Вопросы для самоконтроля: Раздел IV. Клиентская часть приложения 4.2 Применение инструментальных средств создания клиентской части Работа с браузером Основные положения лекции Браузер – это основная программа, с помощью которой мы работаем с Интернетом. В этой лекции мы рассмотрим несколько наиболее популярных браузеров. Браузер Microsoft Internet Explorer входит в состав операционной системы Windows, поэтому большинство начинающих пользователей даже не подозревают о том, что есть другие браузеры, предназначенные для работы с Интернетом. Согласно статистике сайта Market Share (http://marketshare.hitslink.com/report.aspx?qprid=0#) в мае 2008 года самым популярным браузером в сети действительно был Microsoft Internet Explorer (рис. 1): Рис. 1. Статистика браузеров за май 2008 года. Одной из самых важных особенностей, появившихся в седьмой версии браузера, стала работа со вкладками. Теперь, в одном окне программы можно открывать сразу много страниц, а так называемая кнопка "Быстрые вкладки" позволяет просматривать эскизные изображения содержимого всех открытых вкладок с возможностью перехода на них Для создания новой вкладки удобнее всего использовать сочетание клавиш CTRL + T. Браузер Internet Explorer фиксирует адреса всех посещенных страниц в Интернете, а также названия документов, открываемых на локальном компьютере, даже без подключения к Интернету. Все эти адреса фиксируются в журнале, который доступен в так называемом "Центре управления избранным (ALT +C)" При просмотре страниц на небольших мониторах также удобно переходить в полноэкранный режим, для чего следует нажать на кнопку F11. Браузер Internet Explorer – простая и удобная программа для работы с Интернетом. Opera – браузер, разработанный норвежской компанией Opera Software ASA, выпускается на бесплатной основе для настольных компьютеров. Для того чтобы приступить к работе с программой, интерфейс которой полностью русифицирован, достаточно зайти на русскую версию официального сайта http://ru.opera.com/ и скачать дистрибутив (~9 МБ, версия 9,5). Браузеры Opera и Internet Explorer достаточно похожи. Однако рассмотрим несколько отличительных особенностей. Первое, что можно заметить после установки программы – это интерфейс Speed Dial (в перев. с англ. "Быстрый набор"), представляющий из себя страницу с девятью окнами, в каждое из которых можно добавить сайт Постоянное отображения окна с фреймами – отличное решение команды разработчиков Opera. В действительности, большинству пользователей не нужно использовать многочисленные закладки избранного, которые предлагается коллекционировать. Вполне достаточно внести в окна несколько сайтов (а не делать домашней одну какую-то страницу), и начинать рабочий день с щелчков по этим окнам. Впрочем, для меньшинства пользователей Opera также поддерживает и работу с закладками. Mozilla Firefox – удобный, быстрый и простой браузер для работы с Интернетом. Он является полностью бесплатным, скачать его можно, например с сайта http://www.mozilla.ru/: Стандартная поставка браузера достаточно аскетична – она представляет собой базовый набор средств, необходимых для работы. Впрочем, он вполне может сравниться с возможностями Internet Explorer. Открытый код браузера позволяет изменять его легко – благодаря усилиям энтузиастов и поддержке многочисленных сообществ, создано большое количество тем (http://ru.wikipedia.org/wiki/Тема_Firefox), позволяющих настраивать внешний вид программы, и расширений (http://ru.wikipedia.org/wiki/Расширение_Firefox), увеличивающих ее функциональность. Как мы уже знаем из статистики, Safari – третий по популярности браузер в мире. Созданный компанией Apple, он входит в состав операционной системы Mac OS X, поставляемой специально для компьютеров Mac. В принципе, это был браузер, работающий исключительно для отдельной операционной системы, отдельного направления персональных компьютеров. Но 11 июня 2007 года компания выпустила тестовую версию браузера для Windows XP и Vista. На момент написания этого курса доступна версия Safari 3.1.1 (~18,6 МБ, http://www.apple.com/safari/download/). Она обладает той же самой функциональностью, что и под Mac OS X. Safari – достаточно своеобразный браузер. После установки бросается в глаза сглаживание шрифтов, которое практически невозможно выключить – даже минимальное значение достаточно заметно Также слишком хорошо заметны полосы прокрутки, отсутствие полноэкранного режима просмотра (F11) и кнопка "ОК", которая в диалоговых окнах браузера располагается всегда справа. Словом, Safari для операционной системы Windows – вещь на любителя, который сможет оценить некоторые радикальные отличия. Пользователь может оценить текстовое содержимое страницы и приступить к ее чтению или вообще, отказаться от ее загрузки еще до того, как на ней будут отображены рисунки и анимация. Этот принцип положен в основу браузеров Opera, Mozilla Firefox. Браузер Internet Explorer отображает содержимое страницы фактически в тот момент, когда она почти полностью загружена. В результате при работе на медленных каналах связи Internet Explorer работает гораздо медленней. Это видно невооруженным глазом, без всяких измерений. Какие каналы следует считать медленными? Все без исключений подключения по коммутируемому доступу (dial-up), мобильные соединения (GPRS), а также ADSL подключения на скоростях до 512 Кбит\сек. При подключении на мегабитной скорости (или выше) разница в браузерах становится практически незаметной или, по крайней мере, не столь существенной, чтобы обращать на нее внимание. Это обстоятельство, а также вхождение браузера Internet Explorer в состав операционной системы Windows делает его самым популярным на сегодняшний день в мире. Действительно, удобство пользования, функциональность – понятия субъективные, а объективный параметр – скорость отображения страниц становится незаметным на высокоскоростных соединениях. В общем, для браузеров проводятся следующие виды испытаний: Именно в таком порядке несколько лет назад Марк Уилтон-Джонс (Mark Wilton-Jones) провел тестирование почти всех браузеров, доступных в то время. Результаты этого исследования доступны на его сайте http://www.howtocreate.co.uk/browserSpeed.html или в переводе на русском языке http://www.teosofia.ru/opera_9/compare/browserSpeed.html. По большинству параметров, для платформы Windows, самым быстрым браузером оказалась Opera. Если рассматривать тройку браузеров: Opera, Mozilla Firefox и Internet Explorer, то самым медленным из них в большинстве тестов оказался Internet Explorer. Вопросы для самоконтроля: Тест по информатике для 8 класса на тему "Компьютерные сети и услуги компьютерных сетей"... Рабочая программа по физкультуре 2-4 курс Компьютерные сети... КТП по физкультуре 2-4 курсы ПО... может включать следующие аттрибуты:
VOID - окантовки нет (значение по умолчанию).
ABOVE - только граница сверху.
BELOW - только граница снизу.
HSIDES - границы сверху и снизу.
VSIDES - только границы слева и справа.
LHS - только левая граница.
RHS - только правая граница.
BOX - рисуются все четыре стороны.
BORDER - также все четыре стороны.
NONE - нет линий (значение по умолчанию).
GROUPS - линии будут только между группами рядов.
ROWS - только между рядами.
COLS - только между колонками.
ALL - между всеми рядами и колонками. и завершаются закрывающимся , а каждая ячейка таблицы начинается тегом и завершается . Данные теги могут иметь такие аттрибуты: означает, что ячейка будет растянута на 2 колонки. , а тегами - Table Header (заголовок таблицы). В принципе, это обычная ячейка, но текст внутри этих тегов будет выделен полужирным шрифтом и отцентрирован.
...
селектор.класс {cвойства}
.класс {свойства}
селектор:псевдокласс { свойства }
селектор.класс:псевдокласс { свойства }
селектор:псевдоэлемент { свойства }
селектор.класс:псевдоэлемент { свойства } По теме: методические разработки, презентации и конспекты
Тест по информатике для 8 класса на тему "Компьютерные сети и услуги компьютерных сетей"
Рабочая программа учебной дисциплины ОГСЭ 04 Физическая культура по специальностям 230111 Компьютерные сети, 230113 Компьютерные системы и комплексы, 230115 Программирование в компьютерных сетях (базовая подготовка)
Календарно-тематический план учебной дисциплины ОГСЭ 04 Физическая культура по специальностям 230111 Компьютерные сети, 230113 Компьютерные системы и комплексы, 230115 Программирование в компьютерных сетях (базовая подготовка)