Автор: admin
1. Системы клиент – сервер.
По мере развития представлений о распределенных вычислительных процессах и процессах обработки данных складывается концепция архитектуры «клиент — сервер» обобщенное представление о взаимодействии двух компонент информационной технологии (технического и/или программного обеспечения) в вычислительных системах и сетях, среди которых логически или физически могут быть выделены:
- активная сторона (источник запросов, клиент);
- пассивная сторона (сервер, обслуживание запросов, источник ответов).
В табл. приведены примеры реализации данного принципа.
Архитектура «клиент — сервер» (примеры)
Система |
Клиент |
Сервер |
Вычислительная сеть |
Терминал |
Хост-машина |
Локальная сеть (технология FS -файл-сервер) |
Компьютер пользователя |
Файловый сервер |
Телекоммуникационные программы |
Эмуляция терминала |
Эмуляция хоста (BBS) |
Norton Commander Link |
Master-ПК |
Slave-ПК |
Операционная система Unix |
Программа/системный вызов/ядро |
Ядро/драйвер/устройство |
RP |
Программа RP |
Программа-демон (резидентный драйвер) FTPD |
Telnet |
Программа Telnet |
Программа Telnetd |
Система информационного поискаWAIS |
WinWAIS |
Серверы WAIS |
Электронная почта |
mail, elm, Eudora, bml |
Почтовые серверы |
WWW-технологии |
Web-браузеры NCSA Mosaic, Arena |
Web-серверы: NCSA HTTPD, WinHTTPD, Rally, Apachie |
Взаимодействие «клиент — сервер» в сети осуществляется в соответствии с определенным стандартом, или протоколом, — совокупностью соглашений об установлении/прекращении связи и обмене информацией.
Обычно клиент и сервер работают в рамках единого протокола (рис. а) — Telnet, FTP, Gopher, HTTP и пр., однако в связи с недостаточностью такого подхода появляются мультипротокольные клиенты и серверы (рис. б), например — браузер Netscape Navigator. Наконец, появляются серверные приложения (брокеры, роботы), которые устанавливаются между разнопротокольными компонентами (рис. в) и осуществляют трансформацию протоколов.
2. Разновидности функциональных структур клиент – сервер.
Компьютер (процесс), управляющий тем или иным ресурсом, является сервером этого ресурса, а компьютер, пользующийся им, —клиентом.
Каждый конкретный сервер определяется видом того ресурса, которым он владеет. Например, назначением сервера баз данных является обслуживание запросов клиентов, связанных с обработкой данных; файловый сервер, или файл-сервер, распоряжается файловой системой и т. д.
Этот принцип распространяется и на взаимодействие программ. Программа, выполняющая предоставление соответствующего набора услуг, рассматривается в качестве сервера, а программы, пользующиеся этими услугами, принято называть клиентами. Программы имеют распределенный характер, т. е. одна часть функций прикладной программы реализуется в программе-клиенте, а другая — в программе-сервере, а для их взаимодействия определяется некоторый протокол.
Рассмотрим эти функции. Один из основных принципов технологии «клиент — сервер» заключается в разделении функций стандартного интерактивного (диалогового) приложения на четыре группы, имеющие различную природу.
Первая группа. Это функции ввода и отображения данных.
Вторая группа объединяет чисто прикладные функции, характерные для данной предметной области (например, для банковской системы — открытие счета, перевод денег с одного счета на другой и т. д.).
Третья группа фундаментальные функции хранения и управления информационно-вычислительными ресурсами (базами данных, файловыми системами и т. д.).
Четвертая группа - служебные функции, осуществляющие связь между функциями первых трех групп.
В соответствии с этим в любом приложении выделяются следующие логические компоненты:
• компонент представления (presentation), реализующий функции первой группы;
• прикладной компонент (business application), поддерживающий функции второй группы;
• компонент доступа к информационным ресурсам (resource manager), поддерживающий функции третьей группы, а также вводятся и уточняются соглашения о способах их взаимодействия (протокол взаимодействия).
Различия в реализации технологии «клиент — сервер» определяются следующими факторами:
• виды программного обеспечения, в которые интегрирован каждый из этих компонентов;
• механизмы программного обеспечения, используемые для реализации функций всех трех групп;
• способы распределения логических компонентов между компьютерами в сети;
• механизмы, используемые для связи компонентов между собой.
Выделяются четыре подхода, реализованные в следующих технологиях:
• файловый сервер (File Server — FS);
• доступ к удаленным данным (Remote Data Access — RDA);
• сервер баз данных (Data Base Server — DBS);
• сервер приложений (Application Server — AS).
3. Файловый сервер (FS)
Этот подход является базовым для локальных сетей ПК. Один из компьютеров в сети назначается файловым сервером и предоставляет другим компьютерам услуги по обработке файлов.
Файловый сервер работает под управлением сетевой операционной системы и играет роль компонента доступа к информационным ресурсам (т. е. к файлам). На других ПК в сети функционирует приложение, в кодах которого совмещены компонент представления и прикладной компонент (рис).
Протокол обмена при такой схеме представляет собой набор вызовов, обеспечивающих приложению доступ к файловой системе на файл-сервере.
К недостаткам данной технологии относится низкий сетевой трафик (передача множества файлов, необходимых приложению), небольшое количество операций манипуляции с данными (файлами), отсутствие адекватных средств безопасности доступа к данным (защита только на уровне файловой системы) и т. д.
4. Доступ к удаленным данным
Доступ к удаленным данным (RDA) существенно отличается от FS методом доступа к информационным ресурсам. В данной технологии программы компонента представления и прикладного компонента совмещены и выполняются на компьютере клиенте. Доступ к информационным ресурсам обеспечивается операторами специального языка (например, языка запросов SQL, если речь идет о базах данных) или вызовами функций специальной библиотеки (если имеется специальный интерфейс прикладного программирования —API).
Запросы к информационным ресурсам направляются по сети удаленному компьютеру, который обрабатывает и выполняет их, возвращая клиенту блоки данных.
Достоинство RDA заключается в унификации интерфейса «клиент — сервер» в виде языка запросов и широком выборе средств разработки приложений. К недостаткам можно отнести существенную загрузку сети при взаимодействии клиента и сервера посредством запросов; невозможность администрирования приложений в RDA, так как в одной программе совмещаются различные по своей природе функции (представления и прикладные).
Технологии RDA и DBS опираются на двухзвенную схему разделения функций:
• в RDA прикладные функции отданы программе-клиенту (прикладной компонент комбинируется с компонентом представления);
• в DBS ответственность за их выполнение берет на себя ядро СУБД (прикладной компонент интегрируется в компонент, доступа к информационным ресурсам).
В AS реализована трехзвенная схема разделения функций. Здесь прикладной компонент выделен как важнейший изолированный элемент приложения. Сравнивая модели, можно заключить, что AS обладает наибольшей гибкостью и имеет универсальный характер.
Автор: admin
Системы терминал – хост
Первые системы совместной эксплуатации информационных и вычислительных ресурсов (системы коллективного пользования)появились в 60—70-е гг. XX в. и относятся к вычислительным системам с разделением времени. Первоначально операционные системы ЭВМ (ОС) были рассчитаны на пакетную обработку информации, затем, с созданием интерактивных терминальных устройств, появилась возможность совместной работы пользователей в реальном масштабе времени. Основные этапы развития систем доступа к информационным ресурсам представлены на рис. 1 и включают следующие схемы.
1. Взаимодействие терминала (конечный пользователь, источник запросов и заданий) и хоста (центральная ЭВМ, держатель всех информационных и вычислительных ресурсов) — рис. 1, а, 6. Может осуществляться как в локальном, так и в удаленном режимах, во втором случае, как правило, некоторая совокупность пользователей (дисплейный класс) размещается в
так называемом абонентском пункте — комплексе, снабженном контроллером (устройством управления), принтером, концентратором и обеспечивающим параллельную работу пользователей с удаленным хостом. Связь между хостом и абонентским пунктом в этом случае осуществлялась с помощью модемов, по телефонным каналам.
2. На следующем этапе (рис. 1, в) формируются сети передачи данных (из существующих общих и специальных цифровых каналов), позволяющие не только осуществлять более тесное взаимодействие терминал — хост, но и обмен хост — хост для реализации распределенных баз данных и децентрализации процессов обработки информации.
3. Появление и массовое распространение персональных компьютеров выводит на первый план (для массового пользователя) проблему связи ПК— ПК (рис.1, г) для быстрого резервирования и копирования информации (в том числе с использованием модемов) илокальные сети (рис. 1, д) — для совместной эксплуатации баз данных (файл-сервер) и дорогостоящего оборудования. В дальнейшем локальные сети потеряли самостоятельное значение вследствие интеграции с глобальными в двухуровневые сети, строящиеся по единому принципу в рамках Internet (рис. 1.1, е).
В последующем перечисленные конфигурации не претерпели существенных изменений, однако понятия хост и терминал из чисто аппаратурных трансформировались в аппаратурно программные и даже сугубо программные (например, эмуляторы терминала иэмуляторы хоста на однотипных ПК). Кроме того, в 80-е гг. в обиход входит понятие интеллектуального терминала (smart terminal) — сателлитной машины, которая берет на себя часть функций по обработке информации пользователя (например, синтаксический анализ запроса или программы).
Автор: admin
Введение.
В последние десятилетия существенно возросло общественное и экономическое значение информации и информационных технологий. Как считают многие исследователи, в настоящее время формируется и развивается информационное общество. Известны следующие критерии перехода индустриального общества в информационное:
- технологический критерий: широкое распространение информационных технологий — в производстве, в учреждениях, в сфере образования, в частной жизни;
- социальный критерий: в обществе доминирует информационное сознание, обеспечен широкий доступ к разнообразной информации;
- экономический критерий: информация становится ключевым фактором в промышленности, в сфере услуг, занятости;
- политический критерий: свобода информации ведет к политическим процессам, характеризующимся широким участием населения в политической жизни;
- культурный критерий: осознание культурной ценности информации.
В последнее время в индустриально развитых странах возник феномен «электронных мигрантов» — работников, использующих телекоммуникационные технологии, которые освобождают их от необходимости ежедневно ездить на работу на транспорте, численность таковых в США свыше 15 млн. чел. Появляются электронные иммигранты, осуществляющие подобную деятельность через государственные границы. Есть все основания полагать, что через 20 лет проблема электронных иммигрантов станет одним из важных политических вопросов, поскольку она будет затрагивать государственный суверенитет, что осложнит и без того запутанную проблематику, связанную с обеспечением как свободного движения информационных потоков, так и международного доступа к национальным базам данных (БД).
Быстрое развитие информационных технологий приводит к «информационному расслоению» общества, происходящему быстрее, чем имущественное расслоение в России и других странах бывшего соцлагеря. Информационное общество характеризуется тем, что каждый гражданин может получить любую информацию в любое время и в любом месте. Если определенные слои граждан, в силу тех или иных причин, не будут иметь широкого доступа к информации и средствам коммуникации, то неизбежно возникнут категории «информационно богатых» и «информационно бедных».
Возможностями доступа и обработки информации, которые предоставляет современная электронная техника, могут пользоваться лишь те, кто в состоянии получить высшее образование и оплачивать необходимые расходы. В подавляющем большинстве это представители хорошо обеспеченных слоев общества, получающие ряд экономических, политических и моральных преимуществ перед остальными членами общества. Информатизация порождает новое расслоение членов общества, связанное с возможностями доступа к информации.
В связи с этим представляется весьма важным обучение сетевым информационным технологиям в учебных заведениях всех форм и уровней подготовки, начиная с простейших навыков компьютерной грамотности.
Сети не должны рассматриваться как самоцель, самодовлеющий объект, а только в контексте всех инфраструктур кооперативного использования информационных ресурсов (ИР), где локальная сеть (ЛС), например, только один из «игроков».
С появлением в первой половине 70-х годов видеотерминалов первоначально возникли структуры «терминал — хост» (локальный или удаленный).
Чуть раньше и независимо развиваются глобальные сети (пакетной коммутации), используемые как для функций связи общего назначения, так и для так называемых коммуникаций хост – хост, с целью (в то же время) выравнивания использования вычислительных мощностей по часовым поясам (подобно тому, как это осуществляется в сетях энергопередачи). Это были именно вычислительные сети.Структуры «терминал — хост» вносят сюда дополнительную динамику.
Эта ситуация сохраняется до середины 80-х годов XX века, с появлением и взрывообразным распространением персональных компьютеров (ПК) (как выразился один из тогдашних научных острословов «карлики-млекопитающие на планете вычислительных динозавров»). Появляются локальные сети, интегрирующие прежде всего информационные ресурсы (файл-сервер), редкие или дорогостоящие технические средства (принт-сервер) и т. п.
Изучение трафика (потоков данных) в развивающихся сетях показало смещение акцентов с распределенных вычислений на обмен информацией — доступ к удаленным базам данных, обмен сообщениями по электронной почте и пр. Вырисовываются, таким образом,информационные сети.
Наконец, в 80—90-е годы широко распространяется технология TCP/IP, обеспечивая рост и развитие «сети сетей» — Internet, которая представляет собой глобальную информационно-вычислительную сеть.
Компьютерные сети и телекоммуникационные технологии являются, с одной стороны, результатом развития средств коммуникации и связи, а также вычислительной техники и программного обеспечения, а с другой, — это важнейший фактор экономического и научно-технического прогресса, обеспечивающий кооперацию, разделение труда, интегральное использование ресурсов.
Системы коллективной человеческой деятельности, опирающиеся на телекоммуникационные технологии, разделяются на две группы:
• системы с разделением времени (СРВ) — Time Sharing System, в которых каждый участник как бы пользуется собственной ЭВМ и основной задачей администраторов и разработчиков является защита данных от несанкционированного доступа и взаимная изоляцияучастников;
• системы обеспечения групповых решений (СОГР) — Computer Supported Cooperative Work, groupware — ориентированные на прямо противоположную задачу — обеспечить взаимодействие пользователей в процессе принятия решений. СОГР сочетают коммуникационную, вычислительную технологии и технологию принятия решений для облегчения формулирования и решения проблем группой лиц.
Автор: admin
Сокеты, датаграммы и каналы связи
В локальных и глобальных сетях существует два принципиально разных способа передачи данных - датаграммный и потоковый.
Первый из них предполагает посылку пакетов данных от одного узла другому (или сразу нескольким узлам) без получения подтверждения о доставке и даже без гарантии того, что передаваемые пакеты будут получены в правильной последовательности. Примером такого протокола может служить протокол UDP (User Datagram Protocol), который используется в сетях TCP/IP, или протоколIPX, который является базовым в сетях Novell NetWare.
Основные преимущества датаграммных протоколов заключаются в высоком быстродействии и возможности широковещательной передачи данных, когда один узел отправляет сообщения, а другие их получают, причем все одновременно.
Второй способ передачи данных предполагает создание канала передачи данных между двумя различными узлами сети. При этом канал создается средствами датаграммных протоколов, однако доставка пакетов в канале является гарантированной. Пакеты всегда доходят в целостности и сохранности, причем в правильном порядке, хотя быстродействие получается в среднем ниже за счет посылки подтверждений. Примерами протоколов, использующих каналы связи, могут служить протоколы TCP и SPX (протокол NetBIOS допускает передачу данных с использованием как датаграмм, так и каналов связи).
Для передачи данных с использованием любого из перечисленных выше способов каждое приложение должно создать объект, который называется сокетом. Впервые понятие сокета как реализации функций интерфейса прикладного программирования было предложено в университете Беркли, Калифорния (University of California at Berkeley Sockets APT) при разработке спецификации BerkeleyUNIX). Сокет обеспечивает конечную точку соединения и функционирует как двунаправленный канал для входящих и исходящих данных между компьютерами в сети.
При программировании сокет более всего похож на идентификатор файла (file handle), который нужен для выполнения над файлом операций чтения или записи. Прежде чем приложение, запущенное на узле сети, сможет выполнять передачу или прием данных, оно должно создать сокет и проинициализировать его, указав некоторые параметры.
В некоторых случаях целесообразно использовать протокол негарантированной доставки UDP (User Datagram Protocol), так как он, например, допускает одновременную рассылку пакетов по всем узлам сети (режим broadcast]. При этом не требуется создавать канал данных, поэтому процедура инициализации упрощается.
Примеры исходных кодов WinSock-приложений можно найти в сети InterNet по адресам
• info.isoc.org/home.html
• www.ietf.cnri.reston.va.us/home.html
• ds.internic.net/ds/dspg/intdoc.html
• www.internic.net/std
• www.sockets.com
• www.startup.com и др.
Таким образом, интерфейс Windows Sockets предоставляет программисту набор функций высокого уровня (и в то же время гибких в использовании), достаточный для самостоятельного создания сетевого приложения практически любой (необходимой в конкретном случае) сложности.
Автор: admin
Инструментальные средства создания клиентской части
1. Опорная модель OSI
В общем случае задача сетевого программного обеспечения состоит в приеме запроса (обычно это запрос ввода-вывода) от приложения на одной машине, передаче его на другую машину, выполнения запроса на удаленной машине и возврате результата на первую машину. В ходе этих операций запрос несколько раз преобразуется. Высокоуровневый запрос (например, прочитать N байтов из файла Xна машине Y) требует, чтобы программное обеспечение определило, как достичь машины Y и какой коммуникационный протокол она понимает. Затем запрос должен быть преобразован для передачи по сети например, разбит на короткие пакеты информации. Когда запрос достигнет другой стороны, необходимо проверить его целостность, декодировать и послать на выполнение соответствующему компоненту ОС. По окончании выполнения запрос должен быть декодирован для обратной передачи по сети.
Для помощи производителям в стандартизации и интегрировании производимого сетевого ПО, Международная организация по стандартизации (ISO, International Standart Organization) в 1984 году определила программную модель пересылки сообщений между компьютерами. Эта модель получила название опорной модели соединения открытых систем Open Systems Interconnection (OSI) referencemodel. В модели OSI определены семь уровней программного обеспечения.
Опорная модель OSI - идеальная схема, точно реализованная на очень немногих системах, однако она часто используется при обсуждении основных принципов работы сетей. Каждый уровень одной из машин считает, что он разговаривает на одном и том же языке (или протоколе) с соответствующем уровнем другой ЭВМ (т.н. виртуальные связи между уровнями). Однако в действительности сетевой запрос должен спуститься до самого нижнего (физического) уровня (на котором обе ЭВМ в реальности обмениваются данными), затем он передается по физическому носителю и вновь поднимается до уровня, который его поймет и обработает. Набор протоколов, в соответствие с которым запрос проходит вниз по уровням сети и обратно, называется стеком протоколов (protocol stack). Каждый уровень несет ответственность за выполнение ограниченного набора функций и может взаимодействовать только с двумя непосредственно прилежащими уровнями.
Задача каждого уровня состоит в предоставлении обслуживания верхним уровням, абстрагируясь от того, каким образомреализовано это обслуживание.
Краткое описание уровней модели OSI.
• Прикладной уровень. Обрабатывает передачу данных между двумя сетевыми приложениями (включая проверку прав доступа, идентификацию взаимодействующих машин и инициирование передачи данных). Большинство сетевых программ-утилит фактически являются частью именно этого уровня.
• Уровень представления. Отвечает за формирование данных (в том числе решает, должны ли строки заканчиваться парой символов возврат каретки/перевод строки - CR/LF) или только символом возврат каретки - CR; должны ли данные быть сжаты или закодированы и др.
• Сеансовый уровень. Управляет соединением между взаимодействующими приложениями (включая синхронизацию высокого уровня и контроль за тем, какое из приложений говорит, а какое слушает).
• Транспортный уровень. Осуществляет разбивку сообщения на пакеты и присваивает номера пакетам, чтобы гарантировать их прием в надлежащем порядке. Кроме того, изолирует сеансовый уровень влияния аппаратных изменений.
• Сетевой уровень. Отвечает за маршрутизацию, управление интенсивностью трафика и межсетевой обмен. Сеансовый уровень наиболее высокий из уровней, понимающих топологию сети (т.е. физическую конфигурацию машин в последней), тип физических соединений между ними и ограничения пропускной способности, длины используемых кабелей и др.
• Канальный уровень. Пересылает низкоуровневые кадры данных, ожидает подтверждения их получения и повторяет передачу кадров, потерянных в ненадежных линиях связи.
• Физический уровень. Передает (и принимает) биты по сетевому кабелю (или другой физической передающей среде).
Уровни 1 и 2 (физический и канальный) являются уровнями аппаратных средству уровни 3, 4, 5 образуют подсетевой уровень сети, который содержит программные средства, управляющие аппаратными средствами сети. Подсетевой уровень определяет один из двух важных интерфейсов прикладная программа сеть. Некоторые прикладные программы (особенно использующие интенсивный обмен данными например, коммуникационные шлюзы) присоединяются к сети на уровне 5 (сеансовом), большинство же прикладных программ присоединены к сети на уровне 6 (уровне представления). Наконец, ПО управления сетью образует уровень 7 (прикладной).
Как было сказано, уровни OSI часто неточно соответствуют реальным программным модулям (например, транспортное программное обеспечение часто пересекает границы нескольких уровней). Фактически термин транспорт часто используется в качестве общего обозначения всех четырех нижних уровней, а расположенные на трех верхних уровнях компоненты именуют пользователями транспорта.
2. Место сетевого программного обеспечения среди системного и прикладного ПО
Задача сетевого программного обеспечения состоит в приеме запроса (обычно это запрос на ввод-вывод) от приложения на одной машине, передаче его на другую машину, выполнения запроса на удаленной машине и возврате результата на первую машину. Таким образом, сетевое ПО может быть выполнено как в виде отдельных модулей (устанавливаемых на ЭВМ при необходимости), так и в виде компонентов самой ОС (возможно, опциональных т.е. выбираемых при инсталляции ОС). Фактически эта последовательность и была повторена в ходе развития сетевого ПО; в настоящее время фактически все ОС включают штатные компоненты сетевого ПО.
Начало истории сетей Microsoft было положено в MS-DOS версии 3.1; в ней к файловой системе FAT были добавлены необходимые расширения блокировки файлов и записей, которые обеспечили возможность работы с файлами MS-DOS сразу нескольким пользователям. Одновременно с выходом в 1984 году MS-DOS версии 3.1 Microsoft выпустила продукт под названием Microsoft Networks, получивший неформальное название MS-NET.
MS-NET установил de-facto ряд традиций, которые позже были перенесены в Microsoft LAN Manager (несмотря на амбициозное наименование Microsoft LAN Manager сетевой ОС, на самом деле это набор сложных программ и драйверов, добавляющих сетевые возможности к существующим ОС, в частности, к MS-DOS, OS/2 и UNIX, а потом и к WindowsNT).
Например, в случае выдачи пользователем или приложением запроса на ввод-вывод для удаленного файла, каталога или принтера система MS-NET определяла эту ситуацию и направляла запрос компоненту MS-NET, называвшемуся редиректор (redirector). РедиректорMS-NET принимал запрос и посылал (перенаправлял - redirect) его на удаленный сервер.
Другой особенностью MS-NET являлся встроенный протокол 8MB (Server Message Block), являющийся высокоуровневой спецификацией формата посылаемых по сети сообщений. Для посылки имеющих формат 8MB запросов на другой компьютер используетсяAPI (Application Program Interface] под названием интерфейс NetBIOS (NetBIOS interface); впоследствии протокол 8MB и API NetBIOSбыли использованы в многочисленных сетевых продуктах, в том числе и в Windows NT.
Последнее, что было реализовано в MS-NET - это сетевой сервер (network server) находящееся на удаленном компьютере программное обеспечение, превращающее его в выделенный файл-сервер (или сервер печати). Это ПО просто контролировало сетевое соединение и ждало поступления по нему данных в формате 8MB, затем оно распаковывало их, определяло и выполняло запрашиваемую операцию (например, чтение файла), после чего посылало результат выполнения операции обратно в виде другого сообщения SMB.
Система MS-NET также включала набор утилит (со своим синтаксисом командной строки) для доступа к удаленным дискам и принтерам (например, многим известны команды формата NET USE X: \\SERVER\SHARE); до сих пор начинающиеся с символов \\ имена обозначают сетевые ресурсы и называются именами единого соглашения об именовании (UNC, Uniform Naming Convention).
Серьезным шагом к интеграции сетевого ПО в ОС явилась система NetWare фирмы Novell, называемая (с большей или меньшей долей истинности) сетевой ОС. В настоящее время среда NetWare способна поддерживать рабочие станции, управляемые MS-DOS, Windows,OS/2, UNIX, Mac System 7 и др., обладает развитой системой защиты данных (например, уровень привилегий доступа может быть указан отдельно для каждого каталога).
NetWare включает систему защиты при отказах оборудования (SFT, System Fault Tolerant) трех уровней
1. Дублирование на том же диске критических данных (особенно каталогов и таблиц распределения ресурсов).
2. Зеркальное копирование диска (использование два идентичных жестких диска исходный диск и его зеркальную копию) и дублирование (полное дублирование всего искового оборудования контроллера диска, кабеля, дисковода и носителя). Кроме этого, первый и второй уровни включают систему защиты данных, называемую трассировкой изменений (создание дубликата индекса базы данных до завершения транзакций).
3. Дублирование сетевого сервера (второй сервер находится в горячем резерве и вступает в строй при аварии первого).
Большинство этих использованных в NetWare компонентов системы защиты применены (и получили дальнейшее развитие) вWindowsNT.
ОС NetWare включает несколько нужных в практической деятельности дополнительных компонентов сетевого ПО (например, ПО обслуживания мостов устройств для связи локальных сетей с одинаковыми или различными методами доступа), что иногда приводится в качестве обоснования (претенциозного) наименования NetWare сетевой ОС.
Windows98 и далеко не всем пришлось по вкусу). Широко разрекламированная ОС Whistler также должна обладать всеми этими свойствами. Заметим, что всеми перечисленными возможностями Unix-подобные ОС обладают практически с самого рождения.
Таким образом, компоненты сетевого ПО, появившиеся вначале как (необязательные) дополнения и расширения существующих ОС, в современных ОС являются встроенными (пока опциональными) компонентами системного ПО.
3. ФОРМАЛЬНЫЕ МЕТОДЫ ОПИСАНИЯ ПРОТОКОЛОВ
Число эксплуатируемых в настоящее время протоколов обмена данными велико; при этом разрабатываются все новые протоколы, обеспечивающие лавинное развитие сетевых технологий (появилась новая область вычислительной техники, называемая протокольной технологией).
Классическое (неформально-словесное, например, ранее упомянутые RFC-документы) описание протокольных соглашений имеет ряд недостатков; важнейшие из них не позволяющая однозначно согласовывать разрабатываемые стандарты субъективная природа восприятия словесных описаний (следствие описания не имеют полноты и основы для анализа), возникают трудности и труднолокализируемые ошибки при создании реализующих эти протоколы программных и аппаратных средств.
По сравнению со словесными формальные описания обладают существенными преимуществами они строги и однозначны, лежащие в основе конкретного метода формального описания модели позволяют выполнить анализ (верификацию) описаний, а также автоматизировать процесс трансляции этих описаний непосредственно в машинную реализацию.
Формальные методы описания протоколов могут быть разбиты на две группы методы первой группы рассматривают объект как автомат (т.н. автоматные методы), методы второй группы как черный ящик, характеризующийся только внешним поведением (т.н. методы последовательностей).
В качестве представителя первой группы может быть приведен язык ESTELLE (Extended State Transition Language), второй языкLOTOS (Language of Temporal Ordering Specification); оба языка разработаны Международной организацией стандартов (ISO) и служат базовыми средствами для описания разрабатывающих международных стандартов.
Язык ESTELLE (1983 г.) основан на объединении логики конечного автомата (при добавлении элементов описания архитектурных особенностей протокольных систем) и языка программирования Pascal; применяемые в языке LOTOS (1984 г.) методы основаны на концепции временного упорядочения примитивов взаимодействия.
В СССР для конкретного программно-аппаратного окружения был разработан (в рамках инструментального комплекса Архитектор) реализующий автоматный метод язык ОСА (Описание Сетевых Архитектур, основы и принципы языка впервые опубликованы в 1983 г), .предназначенный для реализации протокольных архитектур на вычислительных комплексах Эльбрус. В комплект системы входят развитые средства анализа описаний на языке ОСА и средства тестирования и отладки (под конкретную аппаратную часть). С помощью языка ОСА были разработаны специализированные протоколы канального и сетевого уровней, транспортный и сеансовый протокол, протоколы для передачи информации и файлов, удаленного диалога и протокол удаленного запуска заданий (некоторый функциональный аналог RPC в WindowsNT).
Кроме вышеприведенных, известны системы проектирования и описания протоколов FAPL (Format and Access Protocol Language,1978), PANDORA (Protocol Analysis, Design and OpeRation Assesment, 1982), PDIL (Protocol Description and Implementation Language, 1982), ПРАНАС (Каунасский политехнический институт, 1985) и др.
Как и в случае традиционных языков программирования, исходный текст на языке формального описания протоколов транслируется (после этапа отладки) в машинный код, исполняемый часто (специализированными) процессорами передачи сообщений (IMP - InterfaceMessage Processor).
4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ АНАЛИЗА И ОПТИМИЗАЦИИ СЕТИ
В последние годы появился новый тип (сетевого) программного обеспечения, призванный обеспечивать эффективную работу сетей ЭВМ.
Дело в том, что современные компьютерные сети тяготеют к глобализации и усложнению топологии, при этом (стихийно) развивающаяся сеть часто становится неэффективной (а иногда и неработоспособной) вследствие неправильного выбора пропускных способностей и распределения потоков в сети; обычно деградация сети внешне (с точки зрения пользователя) проявляется в катастрофической задержке передачи сообщений (вплоть до полной блокировки сети).
Пожалуй, впервые указанные проблемы проявились в 70-х годах в связи с постройкой и эксплуатацией сети принадлежащего Министерству обороны США Управления перспективных исследований (DARPA), принятое название сеть ARPANET; в настоящее время данная сеть считается прообразом глобальной сети InterNet.
Сеть создавалась на случай ядерной войны и предполагала, что любой компьютер в сети может перестать функционировать в произвольный момент времени, равно как и линии связи между компьютерами. Именно такая постановка задачи привела к рождению сетевой технологии, которая впоследствии фактически стала технологией всемирной сети
ARPANET уже к 1975 году обеспечивала службу передачи сообщений между почти 100 ЭВМ, географически разнесенным по континентальной части США и подключенных спутниковой связью (через Гавайи) к нескольким точкам в Европе, причем соединенные сетью ARPANET вычислительные машины во многих отношениях являлись несовместимыми друг с другом по аппаратному и программному обеспечению. Именно тогда был обеспечен сетевой доступ к мощнейшей для того времени ЭВМ ILLIAC IV и были широко применены (с целью разгрузки вычислительных машин от выполнения задач обработки необходимых для функционирования сети сообщений) вышеупомянутые IMP.
Сеть ARPANET была спроектирована как для быстрой доставки коротких диалоговых сообщений, так и для обеспечения высокой скорости передачи длинных файлов, при этом стратегия выбора маршрута в сети принимается в каждом процессоре IMP на основе получаемой от соседних процессоров IMP информации и местной информации, включающей сведения о состоянии каналов данного IМР-процессора.
Заметим, что сети общего пользования сложной топологии с коммутацией пакетов появились не только в США (сети ARPANET иTELNET), но и в Канаде (DATAPAC), Англии (EPSS), Европе (EIN), Франции (TRANSPAC), Японии, Испании, Швеции и некоторых других странах.
В связи с проектированием и эксплуатацией сети ARPANET формулировались и решались задачи анализа и проектировании сетей нескольких типов. Базовой задачей является анализ задержки определение средней задержки передачи сообщения по заданному пути в сети (от конкретного источника к конкретному получателю сообщений). Конечным результатом является зависимость задержки от интенсивности требований на обслуживание; обычно график этой зависимости имеет начальный малоизменяемый участок при изменении нагрузки от нуля до некоторой пороговой величины и экспоненциально возрастает при нагрузке выше пороговой (соответствующей на-грузке насыщения. сети\ нагрузка насыщения сети соответствует блокировке сети по данному маршруту.
Вышеуказанные задачи трудоемки в постановке и разрешении, для получения решения необходимо применять компьютерное моделирование. При решении задач используются элементы теории графов и теории массового обслуживания, распределение потока поступления требований (на обслуживание связи) обычно принимается пуассоновским.
Наиболее сложной задачей является задача выбора оптимальных (в соответствие с определенным критерием оптимальности обычно стоимости) параметров сети (в основном маршрутов передачи сообщений между узлами сети при заданной топологии) при заданной максимальной средней задержке (ВТПС/РП-задача); часто используют ВМУР (Вогнутый Метод Устранения Ребер} и МЗР (Метод Замены Ребер) алгоритмы решения задачи.
Хорошая процедура выбора маршрута должна
1. Обеспечивать быструю и надежную доставку сообщений.
2. Адаптироваться к изменениям топологии сети, происходящим в результате повреждений узлов и каналов.
3. Адаптироваться к меняющейся нагрузке между парами источник-получатель .
4. Направлять пакеты в сторону от временно перегруженных узлов в сети.
5. Определять связность сети.
6. Допускать простое и автоматическое снятие и установку процессоров IMP.
Такую задачу можно решить лишь путем применения распределенного алгоритма управления. Это значит, что не существует центра, который принимал бы обязательные для всей сети решения, все узлы выносят местные решения относительно маршрутов динамическим образом. Основанное на подобных предпосылках программное обеспечение было протестировано применительно к сети ARPANET; было показано, что процедура выбора маршрутов является в основном стабильной и приводит к очень хорошим результатам, в разумной степени реагирует на повреждения узлов и каналов сети, автоматически узнает о появлении нового узла (как только он присоединяется к сети или возвращается после исправления), эта особенность сети ARPANET является замечательной технической стороной данной сети. Для заинтересовавшихся проблемой рекомендуется работа; там же приведена обширная библиография. Заметим, что в дальнейшем многие из перечисленных разработок были использованы в сети InterNet.
Таким образом, логично предположить, что в состав сетевого ПО (даже для ЭВМ уровня персонального компьютера) все чаще будут включаться решающее вышеприведенные задачи программные компоненты. Например, для обслуживания баз данных фирмой Inprise Corp. в настоящее время разрабатывается эффективная технология выбора сервера с учетом загрузки процессоров и сетевого трафика функционирующих в сети серверов, что позволит более равномерно распределять нагрузку между серверами); в будущем они станут обязательными для системы распределенных вычислений (распределенной ОС). Представляет интерес также разработанная для сетиInterNet технология (и соответствующий протокол) MPLS (Multiprotocol Label Switching - многопроцессорная коммутация с заменой меток),реализующаяконцепции известной ATM-технологии в обобщенном виде (Asynchronous Transfer Mode - поддерживаемая консорциумом известных компаний технология, основанная на использовании упаковки разнородных типов данных в ячейки cells и создании функционирующих определенное время виртуальных соединений в физическом канале связи с целью обеспечения гарантированной по времени доставки сообщений; в настоящее время ATN-технология считается перспективной для транспортировки чувствительных к временной задержке сообщений например, цифровой телефонии, телевидения).
5. ИНТЕРФЕЙС СЕТЕВОЙ БАЗОВОЙ СИСТЕМЫ ВВОДА/ВЫВОДА
Интерфейс сетевой базовой системы ввода/вывода (NetBIOS) представляет собой разработанный фирмой Microsoft Corp. интерфейс программирования, позволяющий обмениваться запросами ввода-вывода с удаленным компьютером. Пользуясь функциями NetBIOSа, программист создает приложения, независимые от конкретной сетевой аппаратуры.
Расширенный пользовательский интерфейс транспортного протокола локальной сети (NetBEUI, NetBios Extended User Interfacetransport) создан фирмой IBM для работы под сетевым интерфейсом NetBIOS фирмы Microsoft Corp; протокол NetBEUI широко применялся в первых версиях WindowsNT. Несмотря на то, что этот протокол обеспечивает наивысшую скорость работы, ряд присущих ему недостатков (таких, как невозможность маршрутизации и сильная зашумленность в большой сети) позволяет эффективно использовать его только в небольших локальных сетях.
NetBIOS является интерфейсом сеансового уровня, могущим быть использованным приложениями для связи с NetBIOS-совместимыми транспортными протоколами (например, протокол NetBEUI). Двусторонние соединения между ЭВМ с NetBIOS реализует между ними логическое соединение (сеанс). После установления логического соединения компьютеры могут обмениваться данными в формате блоков управления сетью (NCB, Network Control Block} или в формате блоков сообщений сервера (8MB, Server Message Block}, при настройке сетевой компоненты NetBIOS указывается сетевое имя компьютера (имя, под которым этот компьютер будет виден другим пользователям сети).
Функции NetBIOS обычно не используются программистом напрямую вследствие низкого их уровня, хотя в принципе это возможно (существуют справочники по их применению, например фирменное руководство NetBIOS programmer reference фирмы IBM Corp.).
6. УДАЛЕННЫЙ ВЫЗОВ ПРОЦЕДУР
Средство удаленного вызова процедур (RPC, Remote Procedure Call) позволяет создавать приложения, состоящие из произвольного числа процедур, часть которых выполняется локально (на данном компьютере), а часть по сети на удаленных компьютерах. Таким образом, RPC представляет модель работы с сетью, ориентированную на процедуры, а не на транспорт (передачу данных), что позволяет упростить разработку распределенных приложений.
Традиционно сетевое ПО основывается на модели ввод-вывод. В ОС WindowsNT сетевая операция начинается с того, что приложение инициирует запрос операции удаленного ввода-вывода. ОС обрабатывает запрос, передавая его редиректору (выступающему в качестве удаленной файловой системы). После обработки запроса и возврата данных удаленной файловой системой сетевая плата генерирует прерывание. Ядро ОС обрабатывает это прерывание, а исходная программа ввода-вывода возвращает результаты вызывающей программе.
PRC использует совершенно другой подход. Приложения RPC структурно выглядят так же, как и обычные приложения имеют главную программу, которая с целью выполнения специфических задач вызывает необходимые процедуры.
Отличие между приложениями RPC и обычными программами состоит в том, что некоторые процедуры в приложении RPCвыполняются на удаленных компьютерах, а другие локально.
Для самого приложения RPC все процедуры выглядят локальными, таким образом нет необходимости заставлять программиста писать код для передачи запроса на вычисления, ввод-вывод по сети, работы с сетевыми протоколами, обработки сетевых ошибок, ожидания результатов и т.п. программное обеспечение RPC для Windows NT выполняет эти задачи автоматически и для любых доступных сетевых протоколов.
При проектировании приложения RPC программист должен (самостоятельно) решить, какие процедуры должны выполняться локально, а какие -удаленно. Например, при решении сводимых к операциям с матрицами большой размерности задач (типа метода конечных элементов, конечно-разностные задачи и др.) выгодно использовать мощности специальных ЭВМ с ориентированными на векторные операции процессорами (например, супер-ЭВМ серии CRAY) если, конечно, данная рабочая станция подключена к подобной супер-ЭВМ.
Функционирует приложение RPC следующим образом. В процессе работы оно вызывает как локальные, так и отсутствующие (недоступные) на локальной машине процедуры. Для обработки последнего случая приложение связывается с локальной DLL, содержащей по одной процедуре-заглушке (stub procedure} для каждой из удаленной процедур. Процедура-заглушка имеет то же имя и интерфейс, что и удаленная процедура, однако вместо выполнения соответствующей операции заглушка принимает передаваемые ей параметры и выполняет операцию их преобразования (marsaling) для передачи по сети.
Под преобразованием параметров понимается их упорядочение и упаковка в определенные формат, пригодный для пересылки по сети (например, разрешение ссылок и копирование всех структур данных, на которые ссылаются указатели).
Далее заглушка вызывает процедуры библиотеки RPC периода выполнения (Run Time); они находят компьютер, на котором расположены удаленные процедуры, определяют используемые этим компьютером механизмы транспорта и посылают запрос (при помощи локального программного обеспечения сетевого транспорта). Когда удаленный компьютер (выполняющий в этот момент функцию сервера) получает запрос RPC, он выполняет обратное преобразование параметров, реконструирует оригинальный вызов процедуры и осуществляет фактический вызов ее. По окончании работы сервер выполняет обратную последовательность действий для возврата результатов вызывающей программе. На рис.5.3 схематично показано сетевое взаимодействие клиентского компьютера с серверными ЭВМ с использование RPC-библиотеки периода выполнения.
Кроме библиотеки периода выполнения, в состав средств RPC фирмы Microsoft Corp. Входит компилятор MIDL (Microsoft InterfaceDefinition Language - язык описания интерфейса фирмы Microsoft). Использованиекомпилятора MIDL упрощает написание приложенийRPC. Программист пишет набор обычных функций (например, на языке С или C++), описывающих удаленные процедуры, затем он добавляет к этим прототипам некоторую дополнительную информацию (например, уникальный для данной сети идентификатор пакета процедур и номер версии плюс атрибуты, указывающие, является ли параметр процедуры входом, выходом или и тем и другим). Фактически из этих модифицированных прототипов и состоит файл на языке описания интерфейса (IDL, Interface Definition Language).
После создания файла IDL он транслируется компилятором MIDL, который и создает процедуры-заглушки для клиентской и серверной стороны, а также заголовочные файлы для подключения к приложению. При компоновке клиентского приложения совместно с файлом процедур-заглушек разрешаются все ссылки на удаленные процедуры. Используя аналогичный процесс, удаленные процедуры устанавливаются на серверной машине. Если программисту требуется только вызывать существующее приложение RPC, ему необходимо написать лишь программу для клиентской части и скомпоновать ее с локальной библиотекой RPC периода выполнения.
Библиотека RFC периода выполнения использует для взаимодействия с транспортным протоколом единый интерфейс доступа к транспорту RPC (RPC transport interface). Этот интерфейс служит прослойкой между средством RPC и транспортным протоколом, которая отображает операции RPC в функции, предоставляемые транспортным протоколом.
Средство RPC для WindowsNT предоставляет DLL-компоненты доступа к транспортному протоколу для именованных каналов,NetBIOS, ТСРАР и DECnet, имеется возможность разработки дополнительных DLL с целью поддержки других транспортных протоколов. Сходным образом средство RPC поддерживает работу с различными средствами защиты (при отсутствии нештатных DLL защиты программное обеспечение RPC для WindowsNT использует встроенную защиту именованных каналов).
Для обеспечения взаимодействия средства RPC с приложениями RPC на другой ЭВМ они должны использовать одинаковые соглашения RPC. Microsoft RPC соответствует стандарту RPC, установленному Open Software Foundation (OSF) в спецификации среды распределенных вычислений (ОСЕ, Distribute Calculation Environment). Таким образом, написанные с использованием Microsoft RPCприложения могут вызывать удаленные процедуры на других системах, использующих стандарт DCE.
Большинство сетевых сервисов WindowsNT являются приложениями RPC и поэтому могут вызываться как локальными процессами, так и процессами на удаленных машинах. Это значит, что удаленный компьютер может обращаться к сервисам данной ЭВМ для просмотра совместно используемых ресурсов, открытых файлов, очередей печати или активных пользователей на этом сервере, либо он может вызвать сервис сообщений для посылки сообщений (при наличии соответствующих прав доступа).
Существуют более совершенные механизмы реализации вызова удаленных процедур - асинхронные вызовы удаленных функций(ARPC, Asynchronous Remote Procedure Cal), позволяющие на основе применения функций отклика (call-back function) избежать приостановки выполнения прикладной программы на локальной машине. Для связи с удаленными системами RPC может использовать сервис NetBIOS, Windows Sockets и другие доступные средства (например, именованные каналы для WindowsNT). Для вызова процедур, расположенных на том же компьютере, что и вызывающая программа, и обмена информацией с ними служит механизмы вызова локальных процедур (LPC, Local Procedure Call) или упрощенного вызова удаленных процедур (LRPC, Lightweight Remote Procedure Call). Однако вышеуказанные средства доступны лишь в WindowsNT.
Автор: admin
Типовые задачи, решаемые клиентской частью
Создание пользовательского приложения требует разработки так называемого дружественного интерфейса пользователя, т.е. организации диалога между пользователем и компьютером (клиентом и сервером).
Основным способом организации диалога является разработка диалоговых форм, которые по назначению можно подразделить на следующие группы:
• для ввода данных в таблицы;
• для ввода условий обработки информации в запросы;
• для автоматизации работы с объектами базы данных. Формы для ввода данных в таблицы предназначаются для такой
организации процедур внесения информации, которые могли бы свести к минимуму возможность ошибок оператора. Кроме того, такие формы могут служить для проведения анализа имеющихся в таблицах данных.
Формы для ввода условий обработки информации в запросы имеют назначение, аналогичное формам для ввода данных в таблицы
Формы для автоматизации работы с объектами базы данных имеют различное назначение, например это формы-заставки, формы-меню, кнопочные формы и др.
Все эти формы и представляют собой интерфейс пользователя.
Разработка форм может производиться различными средствами визуального проектирования, например:
с помощью языков программирования (C++, Delphi, VBA);
с помощью специальных компонентов СУБД (конструкторов форм Microsoft Access, Oracle и др.).
Однако, какими бы средствами не разрабатывались формы интерфейса пользователя, необходимо учитывать следующие советы и рекомендации:
• прежде чем приступать к проектированию форм, необходимо продумать «сценарий» пользовательского интерфейса, т.е. определить последовательность появления форм на экране компьютера пользователя в соответствии с выполняемыми задачами. Фактически разработчик форм должен научиться создавать сценарии аналогично сценаристу художественных фильмов;
• каждая форма должна иметь название, которое однозначно определяет ее назначение;
• форма должна иметь привлекательный внешний вид, но при этом не должна содержать информации, не относящейся к конкретной задаче;
• формы для ввода данных в таблицы или параметров в запросы должны обеспечивать:
минимизацию возможных ошибок при вводе данных пользователем за счет согласования терминов и сокращений, ввода данных из списков и создания сообщений о допущенной ошибке;
оптимальные способы перемещения курсора (табуляцией, стрелками, указателем мыши);
получение пояснительных сообщений или инструкций при вводе данных в поля таблиц или запросов;
автоматическое закрытие формы и переход к следующей форме.
Автор: admin
Математические операторы. Ветвления. Объекты клиента.
1. Объект Math и его методы.
В языке JS определены стандартные объекты и функции, пользоваться которыми можно без предварительного описания.
В свойствах объекта Math хранятся основные математические константы, а его методы можно использовать для вызова основных математических функций.
Метод объекта |
Описание метода |
abs |
Абсолютное значение |
sin, cos, tan |
Тригонометрические функции |
log |
Натуральный логарифм |
exp |
Экспонента |
min, max |
Наименьшее и наиольшее значения 2-х аргументов |
pow |
Показательная функция (возведение в степень) |
sqrt |
Квадратный корень |
Вычисление площади и периметра треугольника, заданного длинами сторон.
<html>
<head>
<title>Вычисление площади и периметра треугольнмка</title>
<script>
<!
function care(obj){
var a = 1 * obj.st1.value
var b = 1 * obj.st2.value
var c = 1 * obj.st3.value
var s, p = a + b + c
document.write(Периметр треугольника равен , p)
p = p / 2
s = Math.sqrt(p * (p a) * (p b) * (p c))
document.write(Площадь треугольника равна , s)
}
//</script>
</head>
<body>
<form name=form1>
Сторона 1: <input name=st1 size=10>
Сторона 2: <input name=st2 size=10>
Сторона 3: <input name=st3 size=10>
<input value=Вычислить onClick=care(form1)>
</form>
</body>
</html>
2. Вычисление гиперболических функций.
<html>
<head>
<title>Вычисление гиперболических функций</title>
<script>
<!
function sh(x){
var y
with (Math)
y = (exp(x) exp(-x)) / 2
return y
}
function ch(x){
var y
with (Math)
y = (exp(x) + exp(-x)) / 2
return y
}
function th(x){
var y = sh(x) / ch(x)
return y
}
//></script>
</head>
<body>
<form name=form1>
Введите значение X: <input name=arg size=10>
<input value=Гиперболический синус onClick=form1.res1.value = sh(form1.arg.value)>
Гиперболический синус: <input name=res1 size=30>
<input value=Гиперболический косинус onClick=form1.res2.value = ch(form1.arg.value)>
Гиперболический косинус: <input name=res2 size=30>
<input value=Гиперболический тангенс onClick=form1.res3.value = th(form1.arg.value)>
Гиперболический тангенс: <input name=res3 size=30>
</form>
</body>
</html>
При работе с объектами можно использовать оператор with (t) {S}, где t объект, S последовательность операторов.
Оператор with задает объект, используемый по умолчанию в последовательности операторов S. Все свойства и методы в S являются свойствами и методами объекта t.
Применение этого оператора сокращает текст программы, т.к. избавляет от необходимости указывать иерархию объектов.
function sh(x){
var y
with (Math) { y = ( exp(x) exp(-x) ) / 2 }
return y
}
3. Организация ветвлений в программах. Условный оператор.
Для организации ветвлений используют условный оператор, имеющий вид:
if b {S1}
else {S2}
где b выражение логического типа,
S1, S2 операторы.
Пример:
Максимальное значение.
function maxval(obj){
var a = number (obj.num1.value);
var b = number (obj.num2.value);
var c = number (obj.num3.value);
var m = a;
if (b > m) m = b
if (c > m) m = c
obj.res.value = m
}
Поиск максимального значения с использованием объекта Math:
function maxval(obj){
var a = number (obj.num1.value);
var b = number (obj.num2.value);
var c = number (obj.num3.value);
obj.res.value = Math.max (Math.max (a, b), c)
}
4. Оператор switch и его свойства.
switch (B)
{ case L1: S1;
case L2: S2; break;
……
case Ln: Sn;
default: S
}
B - вычисляемое выражение;
L1, L2, …, Ln литералы;
S1, S2, …, Sn операторы;
День недели (по номеру дня определяем его название).
function numday(obj)
{var m = Number(obj.num1.value);
var s
switch (m)
{case 1: s=понедельник; break;
case 2: s=вторник; break;
case 7: s=воскресенье; break;
default: s=ошибка в номере дня}
obj.res.value = s}
<form name=form1>
Введите номер дня: <input type=text size=7>
Название дня: <input type=button value=Определить onClick=numday(form1)>
<input type=text size=20>
<input type=reset>
</form>
5. Объекты клиента.
Программный объект обладает:
- некоторым внешним видом или свойствами, отображаемыми в значениях его переменных.
- поведением или методами, задаваемыми в виде его процедур.
Свойства и методы объединены вместе, образуя единый объект с новыми качествами.
Методы окружают свойства объекта, не позволяя напрямую обращаться к ним или менять их значения. Говорят, что свойства инкапсулированы в объект. Доступ к ним предоставляют методы объекта.
Методы предоставляют программный интерфейс для доступа к значениям свойств, заключенных в ядре объекта и являются некоторой внешней оболочкой, защищающей их от несанкционированного доступа.
Объекты могут взаимодействовать друг с другом, посылая сообщение с просьбой выполнить какой-нибудь метод или выполняя метод в ответ на запрос системы.
Взаимодействуя, объекты образуют единое целое программу. Любое сообщение состоит из трех компонентов:
- Имя объекта, которому оно адресовано.
- Имя метода, который объект-адресат должен выполнить.
- Необязательные параметры, необходимые для выполнения метода.
Обратиться к свойству или методу объекта можно с использованием точечной нотации.
Иерархия объектов Java Script на стороне клиента
При интерпретации страницы html, браузер создает объекты JS, свойства которых представляют значения параметров тэгов языка html. Объекты хранятся в виде иерархической структуры, отражая структуру документа. Некоторые тэги html являются контейнерами, в которых могут размещаться другие тэги.
Объект navigator относится к самому браузеру и его свойства позволяют определить характеристики программы просмотра:
appName содержит имя браузера (например, Microsoft Internet Explorer)
appVersion содержит информацию о версии браузера (например, 4.0 (Compatible; MSIE 4.01; Windows 95)).
Каждая страница, в дополнение к объекту navigator, обязательно имеет еще 5 объектов:
window объект верхнего уровня, свойства которого применяются ко всему окну, в котором отображаются документ.
document. Его свойства определяются содержимым самого документа: связи, цвет фона, формы и т.д.
location. Его свойства связаны с URL адресом отображаемого документа.
history. Представляет адреса ранее загрузившихся html страниц.
event. Предоставляет доступ к свойствам происшедшего события.
<form name=form1>
фамилия: <input size=20>
курс: <input size=2>
</form>
Пример обращения к фамилии:
document.form1.StudentName.value
Свойства и методы ключевых объектов.
Window (окно). Создается автоматически при запуске браузера.
Методы:
open () создание окна
close () закрытие окна
Синтаксис:
имя_переменной_окна = window.open ([имя_файла], [имя_ссылки_окна], [параметры])
win_Example = window.open (http://www.chemisk.narod.ru, linkWin, toolbar=no, scrollbars=yes)
windows.close ()
self.close ()
close ()
win_Example.Close ()
Document. Содержит информацию о загруженной странице. Для каждой страницы создается один объект document. Некоторые его свойства соответствуют параметрам тэга body. Свойство URL содержит адрес загруженного документа.
Методы:
write, writeln записывают в документ информацию и тем самым позволяют динамически его создавать.
Location. Связан с текущим URL адресом. Его свойства позволяют получать информацию о host-машине, с которой в данный момент связан браузер.
Свойства:
hostname содержит имя хоста
port номер порта, к которому подсоединен браузер на хост-машине
Методы:
reload () перезагружает в браузер текущую страницу
replace () загружает в окно браузера страницу, адрес которой задан в качестве его параметра.
History. Содержит список адресов html документов, ранее загруженных в браузер.
Свойства:
current текущая страница
next следующая страница
previous предыдущая страница
Метод:
go () загружает страницу из списка посещенных.
Текущая страница имеет индекс 0, предыдущая индексируется отрицательными целыми числами, последующая положительным целым числом.
history.go(-3)
Form. Порождается объектом document и сам порождает подчиненные объекты. Ссылка на этот объект осуществляется с помощью переменной, определенной в параметре name тэга form.
В документе может быть несколько форм, поэтому введено свойство-массив forms, в котором содержатся ссылки на все формы документа.Пример:
По номеру:
document.forms[0]
document.forms[1]
По имени:
document.forms["form1"]
Если в документе одна форма (с именем form1)
document.form1
Все элементы формы порождают соответствующие объекты, подчиненные объекту родительской формы.
<input type=text>
Варианты обращения к полю txt1:
document.forms[0].txt1
document.forms["form1"].txt1
document.forms.txt1
Каждый объект form имеет также свойство-массив elements, содержащий ссылки на все подчиненные форме элементы в том порядке, в котором они определены в документе html.
Объекты формы имеют свойство name, значение которого равно значению параметра name тэга input, а также свойство value, значение которого определяется смыслом параметра value элемента формы.
Объект frame. В html тэг-контейнер <frameset> … </frameset> задает специальный тип окна, называемый набором фреймов.
Это окно отображает несколько независимых (каждый со своими полосами прокрутки) фреймов на одном экране.
Каждый фрейм, в свою очередь, может отображать определенный документ, расположенный по адресу, указанному в параметре src тэга <frame>.
Набор фреймов образует страницу, поэтому не нужно задавать тэг body.
<frameset cols=30%, 70%>
<frameset rows=30%, 70%>
<frame src=clock.html name=clockFrame>
<frame src=menu.html name=menuFrame>
</frameset>
<frame src=main.html name=mainFrame>
</frameset>
Параметр name задает имя, по которому можно ссылаться на соответствующий фрейм в иерархии документа.
Страница с тремя фреймами образует иерархическую модель объектов frame.
На верхнем уровне объект top родитель всех 3-х фреймов на странице.
Для ссылки на фреймы страницы можно использовать либо символические имена, либо свойство-массив frames объекта top, в котором содержатся ссылки на все фреймы страницы.
Ссылка на первый фрейм страницы:
top.clockFrame
top.frames[0]
Свойство location объекта frame содержит адрес загруженного во фрейм документа.
Изменение этого значения приведет к загрузке нового документа в соответствующий фрейм.
<input value=Пример1 onClick=JavaScript:top.ContentFrame.location=Пример1.html">
Если загружаемый во фрейм документ сам содержит набор фреймов, то все фреймы, отображенные в заданном фрейме, являются его подчиненными.
Если в предыдущем примере, файл menu.html будет содержать следующий код:
<frameset rows=30%, 70%>
<frame src=file1.html name=frame1>
<frame src=file2.html name=frame2>
</frameset>
то фреймы frame1 и frame2 будут порождены фреймом menuFrame, и тогда обращение к этим фреймам будет следующим:
top.menuFrame.frame1
top.frames[2].frames[0]
Свойства-массивы объектов.
Некоторые объекты имеют свойства, которые являются массивами. Они используются для хранения информации о подчиненных объектах, когда их количество заранее не известно.
Объект |
Свойство |
Описание |
document |
anchors |
<A> |
applets |
<APPLET> |
forms |
<FORM> |
images |
<IMG> |
links |
<AREA HREF=<>
<A HREF=<> |
function |
arguments |
Отражает параметры функции |
forms |
elements |
<FORM> |
select |
options |
Объект select, тэги <option> |
window |
frames |
тэги <frame> в <frameset> |
history |
historys |
отражает элементы объекта history |
Объект event. Каждое событие в JS порождает ассоциированный с ним объект event. Этот объект содержит всю информацию о событии и ее можно передать процедуре обработки события. Эта информация зависит от типа события.
Например, event MouseDown содержит:
информацию о типе события (свойство type)
какая кнопка мыши была нажата (which)
координаты курсора (screenx, screeny)
Совместно с обработчиками событий, объекты event позволяют производить достаточно тонкую обработку событий.
Процедуру обработки события можно вызвать двумя способами:
Явно, назначив ссылку на процедуру обработки события, в соответствующем свойстве объекта.
Неявно в параметре обработки события тэга соответствующего элемента.
Пример:
<form name=form1>
<input name=button1 value=Узнай событие>
<script>
document.form1.button1.onMouseDown=showEventType
</script>
</form>
function showEventType(e){
alert (Произошло событие: +e.type)
}
В объявлении функции showEventType присутствует параметр e, свойство type которого выводится в диалоговом окне.
При явном вызове процедуры обработки события, объект event передается ей по умолчанию, поэтому в данном случае печатается значение свойства type объекта event, т.е. тип события MouseDown.
При неявном вызове требуется задание обращения к процедуре в параметре onMouseDown тэга input, при этом необходимо явно указывать параметр event.
Пример:
<form name=form1>
<input type=button value=Узнай событие>
Автор: admin
Обработчики событий.
Событие это действие, которое произвел пользователь (щелчок на ссылке или кнопке, наведение указателя на какой-либо объект, щелчок в текстовом поле перед началом его заполнения).
Обработчики событий подпрограммы, которые позволяют программисту отслеживать действия пользователя (интерпретируемые как события), по отношению к отображенной в окне браузера html странице.
События, связанные с мышью.
Событие |
Описание |
onClick |
Щелчок мышью на элементе |
onDblClick |
Двойной щелчок мышью на элементе |
onMouseDown |
Кнопка мыши нажата |
onMouseUp |
Кнопка мыши отпущена |
onMouseMove |
Указатель мыши перемещен в область элемента |
onMouseOver |
Указатель мыши расположен над элементом |
onMouseOut |
Указатель мыши перемещен за границы области элемента |
События, связанные с клавиатурой.
Событие |
Описание |
onKeyDown |
Клавиша нажата |
onKeyUp |
Клавиша отпущена |
onKeyPress |
Клавиша нажата и отпущена |
События, связанные с выбором элементов и редактированием форм.
Событие |
Описание |
onFocus |
Элемент выбран (получен фокус) |
onSelect |
Часть текста внутри элемента выделена |
onChange |
Данные в элементе были изменены |
onBlur |
Элемент перестал быть выбранным (потерян фокус) |
Обработка значений из формы.
Пример:
<html>
<head>
<title>Обработка значений из формы</title>
<script>
<!
function care(a, h){
var s = a * h / 2
document.write(Площадь треугольника равна , s);
return S
}
//></script>
</head>
<body>
<form name=form1>
Основание: <input type=text size=5>
Высота: <input type=text size=5>
<input type=button value=Вычислить>
</form>
</body>
</html>
Передача параметров по ссылке.
В этом случае параметром функции станет объект и тогда говорят, что передача параметра осуществляется по ссылке или по наименованию.
<html>
<head>
<title>Передача параметров по ссылке</title>
<script>
<!
function care(a, h){
var s = a.value * h.value / 2
document.write(Площадь треугольника равна , s)
}
//></script>
</head>
<body>
<form name=form1>
Основание: <input type=text size=5>
Высота: <input type=text size=5>
<input type=button value=Вычислить>
</form>
</body>
</html>
В качестве фактических параметров в вызове функции care1 выступают имена текстовых полей формы.
Использование имени формы в качестве параметра функции.
<html>
<head>
<title>Использование имени формы в качестве параметра функции</title>
<script>
<!
function care(obj){
var a = obj.st1.value
var h = obj.st2.value
var s = a * h / 2
document.write(Площадь треугольника равна , s)
}
//></script>
</head>
<body>
<form name=form1>
Основание: <input type=text size=5>
Высота: <input type=text size=5>
<input type=button value=Вычислить>
</form>
</body>
</html>
В предыдущих примерах вычислялось значение переменной S и для его вывода применялся метод write объекта document.
Определим в форме поле площадь, в котором будем помещать вычисленное значение.
<html>
<head>
<title>Помещение вычисленного значения в поле</title>
<script>
<!
function care(obj){
var a = obj.st1.value
var h = obj.st2.value
var s = a * h / 2
obj.res.value = s
}
//></script>
</head>
<body>
<form name=form1>
Основание: <input name=st1 size=5>
Высота: <input name=st2 size=5>
<input type=button value=Вычислить>
Площадь: <input name=res size=5>
</form>
</body>
</html>
Оператор присваивания в качестве значения параметра обработки событий.
<html>
<head>
<title>Оператор присваивания</title>
</head>
<body>
<form name=form1>
Основание: <input name=st1 size=5>
Высота: <input name=st2 size=5>
<input value=Вычислить onClick=form1.res.value = form1.st1.value * form1.st2.value / 2>
Площадь: <input name=res size=5>
</form>
</body>
</html>
Вычисление среднего дохода.
Вводится информация о доходах за каждый месяц с первого полугодия. Определить средний доход в месяц за рассматриваемый период.
<html>
<head>
<title>Вычисление среднего дохода</title>
<script>
<!
function val(obj){
var a1 = 1 * obj.num1.value
var a2 = 1 * obj.num2.value
var a3 = 1 * obj.num3.value
var a4 = 1 * obj.num4.value
var a5 = 1 * obj.num5.value
var a6 = 1 * obj.num6.value
var s = (a1 + a2 + a3 + a4 + a5 + a6) / 6
obj.res.value = s
}
//></script>
</head>
<body>
<form name=form1>
Январь: <input name=num1 size=8>
Февраль: <input name=num2 size=8>
Март: <input name=num3 size=8>
Апрель: <input name=num4 size=8>
Май: <input name=num5 size=8>
Июнь: <input name=num6 size=8>
<input value=Вычислить onClick=val(form1)>
<input value=Сбросить>
Средняя зарплата: <input name=res size=8>
</form>
</body>
</html>
Обработка события onClick выполняется по щелчку мыши на кнопке Вычислить.
Реакция на событие onChange.
Вычислить площадь квадрата. В форме определяем 2 текстовых поля: одно для длины стороны квадрата, другое для вычисленной площади.
Площадь квадрата вычисляется, когда значение элемента формы с именем num1 изменилось и элемент потерял фокус.
<html>
<head>
<title>Реакция на событие onChange</title>
<script>
<!
function srec(obj){
obj.res.value = obj.num1.value * obj.num1.value
}
//></script>
</head>
<body>
</body>
<form name=form1>
Сторона: <input name=num1 size=8>
Площадь: <input name=res size=8>
<input value=Обновить>
</form>
</html>
Обработка события onFocus.
Площадь квадрата должна вычисляться в тот момент, когда пользователь переходит к элементу формы с помощью клавиши Tab или щелчка мыши.
<html>
<head>
<title>Обработка события onFocus</title>
<script>
<!
function srec(obj){
obj.res.value = obj.num1.value * obj.num1.value
}
></script>
</head>
<body>
<form name=form1>
Сторона: <input name=num1 size=8>
Площадь: <input name=res size=8>
<input value=Обновить>
</form>
</body>
</html>
Обработка события onBlur.
Площадь должна вычисляться в тот момент, когда элемент формы теряет фокус.
<html>
<head>
<title>Обработка события onBlur</title>
<script>
<!
function srec(obj){
obj.res.value = obj.num1.value * obj.num1.value
}
></script>
</head>
<body>
<form name=form1>
Сторона: <input size=8 onBlur=srec(form1)>
Площадь: <input name=res size=8>
<input value=Обновить>
</form>
</body>
</html>
Обработка события onSelect.
Площадь должна вычисляться в тот момент, когда выбирается часть или весь текст в текстовом поле.
<html>
<head>
<title>Обработка события onSelect</title>
<script>
<!
function srec(obj){
obj.res.value = obj.num1.value * obj.num1.value
}
></script>
</head>
<body>
<form name=form1>
Сторона: <input name=num1 size=8>
Площадь: <input name=res size=8>
<input value=Обновить>
</form>
</body>
</html>
Перестановка двух изображений.
При нажатии на кнопку Обменять изображения меняются местами.
<html>
<head>
<title>Перестановка двух изображений</title>
<script>
<!
function chpict(){
var l = document.pm1.src
document.pm1.src = document.pm2.src
document.pm2.src = l
}
//></script>
</head>
<body>
<img src=m1.gif>
<img src=m2.gif>
<form name=form1>
<input value=Обновить onClick=chpict()>
</form>
</body>
</html
Автор: admin
Java Script
Сценарий на Java Script (JS) включается в документ с помощью тэга <script>. Помещается между тэгами заголовка:
<head>
<script>
<!
…
операторы
сценария
…
>
</script>
</head>
Помещение сценария в раздел head документа приводит к тому, что сценарий будет загружен до того, как потребуется его выполнить. Код сценария заключается в тэги комментария html для того, чтобы старые браузеры, не понимающие JS не отображали этот код на экране. Регистр, в котором написаны буквы, в JS имеет значение.
Сам тэг <script> включает атрибут language, который определяет язык и принимает следующие значения: language = javascript = VBscript = JScript = TCL. По умолчанию, браузер интерпретирует сценарий с языка javascript, поэтому атрибут language можно опустить. Текст сценария может храниться в файле. Тогда в тэге <script> должен быть атрибут src=URL-адрес с ссылкой на этот файл. Файлы с текстами программ на JS имеют расширение js. Элемент script может располагаться как внутри секции head, так и внутри body.
1. Типы данных.
Существуют следующие типы данных:
string (строка) последовательность символов, заключенных в кавычки (одинарные или двойные). результат результат \\ обратный слеш \" двойная кавычка ;
numbers (числовой) целые числа и десятичные дроби. Целые числа могут быть заданы в 10-м, 16-м или 8-м представлении: 15, 23, +153, -13, 0-9
016, 0x1b6, 0xff 0-9, a-f. Записываются, начиная с 0x 03, 0563 0-7. Записываются, начиная с 0. Дробные. Разделяются точкой. 123.34 -22.56 2.73e-7 2.66E5
boolean (логический). Значения: true, false (1 или 0).
null (отсутствие данных).
2.Переменные.
Переменные используются для хранения данных. Представляются с помощью идентификатора, который должен начинаться с буквы латинского алфавита, либо с символа подчеркивания: test1 _my_test test_1. Тип переменных зависит от хранимых в ней данных. При изменении типа данных меняется тип переменной. Определяются переменные с помощью оператора var или без него: var d n var n, m, a При объявлении переменной ее можно и инициализировать.
var n=5 n=5. Значение переменной присваивается с помощью оператора присваивания:
a=b, где a переменная, которой необходимо дать некоторое значение, а b выражение, определяющее новое значение переменной. Оператор присваивания может быть использован в любом месте программы и способен изменить не только значение, но и тип переменной. var n=3725, x=2.75, p=true, s=выполнение y=55 x=55 z=55 z=1+y
document.write(y).
В JS определен тип function (функция) для всех стандартных функций и функций, определяемых пользователем. Объекты JS имеют тип данных object. Переменные типа object часто называют просто объектами, они могут хранить объекты.
Глобальные переменные определяются в сценарии, как в части head, так и в части body; имеют одну и ту же область действия и доступны любому сценарию текущего документа.
Локальные переменные определены в теле функции. Область действия ограничена функцией.
3. Выражения.
Выражения строятся из литералов, переменных, знаков операций, скобок.
В результате вычисления выражения получается единственное значение, которое может быть либо числом (целым или вещественным), либо строкой, либо логическим значением. Используемые в выражении переменные должны быть инициированы. Если при вычислении выражения встречается неопределенная или неинициализированная переменная, то фиксируется ошибка. В JS есть литерал null для обозначения неопределенного значения.
Если переменной присвоено значение null, то она считается инициализированной.
y=null
Выражения формируются из операндов и обозначений операций.
В зависимости от типа вычисленного значения выражение можно разделить на арифметические, логические и строковые.
Арифметические выражения получаются при выполнении арифметических операций.
Операция |
Назначение |
+ |
Сложение |
- |
Вычитание |
* |
Умножение |
/ |
Деление |
% |
Остаток от деления целых чисел |
++ |
Увеличение значения операнда на 1 |
- - |
Уменьшение значения операнда на 1 |
Операторы выражения вычисляются слева направо в соответствии с приоритетами арифметических операций. Порядок выполнения можно изменить с помощью скобок.
В языке определены операции сокращенной формы присваивания:
Оператор |
Эквивалентный оператор присваивания |
x+=y |
x=x+y |
x-=y |
x=x-y |
x*=y |
x=x*y |
x/=y |
x=x/y |
x%=y |
x=x%y |
Логические выражения. Операции отношения применимы к операндам любого типа. Результат операции логическое значение true если сравнение верно и false в противном случае.
<, <=, ==, !=, >=, > ! логическое НЕ применяется к операндам логического типа.
Если значение a = true, то !a = false, и наоборот, если a = false, то !a = true.
&& логическое И. || логическое ИЛИ. XOR сложение по модулю 2. << сдвиг на один разряд влево. >> сдвиг на один разряд вправо. >>> сдвиг вправо с заполнением нулями.
Строковые.
+ объединение строк. st = текущее + состояние (операция конкатенации)
st1 = текущее st2 = состояние st1+=st2 >, >=, <, <= сравнение строк путем сравнения их ASCII-кодов, начиная с левого конца.
Приоритетность операций: ++ - ! * /, % + <, >, <=, >= %=
Пример:
<html>
<head>
<title>Сценарий в BODY</title>
</head>
<body>
<script>
<!
var a=8; h=10
document.write (Площадь треугольника равна , a*h/2,.)
>
</script>
</body>
</html>
3.Функции: описание и использование.
Если параметры отсутствуют: function F() {S}.
Необязательный оператор return определяет возвращаемое функцией значение. Параметры функции внутри ее тела играют роль переменных, но начальные значения им присваиваются при обращении к функции. Если параметры не заданы, то вызов должен быть все равно со скобками: F(). Функции обычно объявляются в разделе <head>.
Пример:
<html>
<head>
<title>Использование сценария с функцией</title>
<script>
<!
function care (a, h)
{return a*h/2}
//>
</script>
</head>
<body>
<script>
<!
var a1=4; h1=16;
var s=care (a1, h1)
document.write (При вызове функции получено значение , s,.)
//>
</script>
</body>
</html>
Автор: admin
Описание языка HTML. Теги языка HTML и их свойства.
1. Документ HTML.
Документ HTML представляет собой файл типа html или htm, находящийся на сервере Интернета, в локальной сети или на жестком диске. Этот файл содержит обычный текст и текстовые команды разметки, называемые тегами. С помощью тегов можно решить две основные задачи:
- управлять содержимым документа, включая форматирование текста, разметку заголовков, создание списков и таблиц;
- управлять связями документа с другими ресурсами (изображениями, таблицами стилей, внешними программами, сторонними Web-страницами).
Теги HTML не задают определенные и точные атрибуты форматирования документа, как, например, Microsoft Word. Конкретный вид документа окончательно определяет только программа-браузер на компьютере. Необходимость такого подхода связана с разнородностью аппаратного и программного обеспечения устройств, подключенных к Интернету. HTML — не язык программирования, хотя Web-страницы могут как сами являться результатом работы серверных программ, так и включать в себя специально подготовленные клиентские программы — скрипты и апплеты.
2. Теги языка HTML и их свойства.
Тег HTML имеет общий вид
<имя>содержимое</имя>
и действует на все, что расположено между парами треугольных скобок. Все теги, имеющие содержимое, должны закрываться,причем закрывающая часть </имя> отличается от открывающей <имя> только наличием символа /. Теги могут вкладываться друг в другаиерархически, но без пересечений, т. е. допустимо вложение вида <тег1><тег2></тег2></тег1>, но не <тег1><тег2></тег1></тег2>. Тег вместе с содержимым часто называют элементом HTML.
Действие вложенных тегов может объединяться, т. е. если внутрь тега, создающего полужирное начертание шрифта, мы вложим тег курсива, то должен получиться полужирный курсив. Аналогично, внутрь тега, создающего ячейку таблицы, мы можем вставить тег подключения картинки — и картинка окажется внутри ячейки. HTML предоставляет большую свободу обращения с тегами, но существуют и ограничения — нельзя же вложить старшую матрешку внутрь младшей!
Теги делятся на блочные (block-level) и текстовые (inline). Первые могут содержать как текстовые, так и другие блочные теги. При отображении они всегда выводятся с новой строки. Вторые могут содержать только текст и другие текстовые теги, но не блочные. При отображении они выводятся в текущей строке.
Теги, имеющие содержимое и нуждающиеся в закрывающей части, называют контейнерными, а теги без содержимого и закрывающей части — унарными.
Внутри открывающей части большинство тегов содержит атрибуты, называемые также параметрами или опциями. Все эти названия просто означают команды, уточняющие действие тега. Какой ширины должна быть ячейка таблицы, формируемая тегом? Где хранится картинка, которую тег должен отобразить? На эти и многие другие вопросы отвечают атрибуты, всегда находящиеся в открывающей части тега. Атрибуты имеют общий вид имя=значение и разделяются между собой хотя бы одним пробелом, символом табуляции или перевода строки. Если значение атрибута состоит из одного слова, символы двойных кавычек можно не писать, хотя стандарт рекомендует указывать их всегда. Например, элемент вида
<р align=justify>Hello</p>
описывает контейнерный тег с именем р, имеющий один атрибут с именем align и значением justify Содержимое тега строка текста Hello.
В закрывающей части тега атрибуты не применяются.
Названия всех тегов и атрибутов нечувствительны к регистру символов. Тем не менее, лучше придерживаться единообразного их написания.
У каждого тега имеется набор допустимых для него атрибутов. Для многих атрибутов также заранее известен набор значений, которые они могут принимать. Чаще всего атрибуты можно пропускать, тогда браузер выводит документ, придерживаясь правил, принятых по умолчанию. Существуют и обязательные атрибуты. Например, тег вставки картинки не сможет ее найти, если в атрибуте src не будет указано ее местоположение. Как правило, порядок следования атрибутов, допустимых для данного тега, может быть произвольным.
HTML довольно демократичен, неправильный тег, лишний атрибут, недопустимое вложение тегов обычно просто игнорируются браузером и не приводят к зависаниям или сообщениям об ошибках. Разумеется, при этом может произойти неправильное форматирование документа.
3. Общая структура HTML-документа.
HTML-документ состоит из трех основных частей:
- строка декларации типа документа;
- заголовок документа, заключенный в тег <head></head>;
- тело документа, заключенное в тег <body></body> или <frameset></ frameset>.
Заголовок и тело документа заключаются в объединяющий их тег
<html >< / html >.
Строка декларации является служебной и указывает на стандарт разработки документа. Для документа, строго соответствующего стандарту HTML 4.0, она представляется унарным тегом вида
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0//EN>.
На сегодняшний день поддержка деклараций рекомендуется стандартами, но редко реализуется Web-мастерами, в дальнейшем мы будем ее пропускать.
Заголовок в теге <head> содержит информацию об общих свойствах документа. Содержимое тега <head> непосредственно не отображается в окне браузера, однако используется браузером при работе с файлом. Заголовок может включать в себя следующие теги:
- титул окна документа (тег <title>);
- метатеги документа (теги <meta>);
- базовый адрес для ссылок (тег <base>);
- связь с другими документами (теги <link>);
- встроенные таблицы стилей для оформления (тег <style>);
- встроенные программы-сценарии клиента (теги <script>).
Из всех этих тегов нам необходим пока только <title>. <title> представляет собой контейнерный тег без атрибутов, его содержимым может быть любая строка текста, не содержащая других тегов. Именно эта строка будет выведена браузером в заголовке окна или вкладки. Содержимое тега <title> должно кратко отражать суть документа, его рекомендуемый размер — не более 60-80 символов. При добавлении ссылки на документ в папку Избранное браузера именем новой закладки становится именно содержимое тега <title>. Многие браузеры создают для каждой закладки отдельный файл, поэтому внутри тега <title> нежелательны символы двойных кавычек, <,>,&, !, ? и другие знаки, недопустимые в именах файлов. Составление правильных <title> и других заголовочных тегов — целое искусство. Пока же просто не будем забывать, что заголовок в теге <title> — самый главный.
Тело документа содержит теги, предназначенные для отображения браузером, и ограничено контейнерным тегом <body></body> или <frame-set></frameset>, если документ разбит на несколько окон-фреймов.