Эскорт-услуги в Москве от Queens Palace


Архив

Вы сейчас просматриваете архивы сайта GOUSPO студенческий портал!.

Мар

31

Системы «клиент — сервер»

Автор: 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 обладает наибольшей гибкостью и имеет универ­сальный характер.

Мар

31

Системы терминал – хост

Автор: admin

Системы терминал – хост

Первые системы совместной эксплуатации информационных и вычислительных ресурсов (системы коллективного пользования)появились в 60—70-е гг. XX в. и относятся к вычислительным системам с разделением времени. Первоначально операционные системы ЭВМ (ОС) были рассчитаны на пакетную обработку информации, затем, с созданием интерактивных терминальных устройств, появилась возможность совместной работы пользова­телей в реальном масштабе времени. Основные этапы развития систем доступа к информационным ресурсам представлены на рис. 1 и включают следующие схемы.

1.   Взаимодействие терминала (конечный пользователь, ис­точник запросов и заданий) и хоста (центральная ЭВМ, держатель всех информационных и вычислительных ресурсов) — рис. 1, а, 6. Может осуществляться как в локальном, так и в удаленном режимах, во втором случае, как правило, некоторая совокупность пользователей (дисплейный класс) размещается в

так называемом абонентском пункте — комплексе, снабженном контроллером (устройством управления), принтером, концен­тратором и обеспечивающим параллельную работу пользовате­лей с удаленным хостом. Связь между хостом и абонентским пунктом в этом случае осуществлялась с помощью модемов, по телефонным каналам.

2.  На следующем этапе (рис. 1, в) формируются сети пере­дачи данных (из существующих общих и специальных цифровых каналов), позволяющие не только осуществлять более тесное взаимодействие терминал — хост, но и обмен хост — хост для реализации распределенных баз данных и децентрализации про­цессов обработки информации.

3. Появление и массовое распространение персональных ком­пьютеров выводит на первый план (для массового пользователя) проблему связи ПК— ПК (рис.1, г) для быстрого резервирова­ния и копирования информации (в том числе с использованием модемов) илокальные сети (рис. 1, д) — для совместной экс­плуатации баз данных (файл-сервер) и дорогостоящего оборудо­вания. В дальнейшем локальные сети потеряли самостоятель­ное значение вследствие интеграции с глобальными в двухуров­невые сети, строящиеся по единому принципу в рамках Internet (рис. 1.1, е).

В последующем перечисленные конфигурации не претерпе­ли существенных изменений, однако понятия хост и терминал из чисто аппаратурных трансформировались в аппаратурно программные и даже сугубо программные (например, эмуляторы терминала иэмуляторы хоста на однотипных ПК). Кроме того, в 80-е гг. в обиход входит понятие интеллектуального терминала (smart terminal) — сателлитной машины, которая берет на себя часть функций по обработке информации пользователя (напри­мер, синтаксический анализ запроса или программы).

Мар

31

Введение.

Автор: admin

Введение.

В последние десятилетия существенно возросло обществен­ное и экономическое значение информации и информационных технологий. Как считают многие исследователи, в настоящее время формируется и развивается информационное общество. Известны следующие критерии перехода индустриального обще­ства в информационное:

-        технологический критерий: широкое распространение ин­формационных технологий — в производстве, в учрежде­ниях, в сфере образования, в частной жизни;

-        социальный критерий: в обществе доминирует информаци­онное сознание, обеспечен широкий доступ к разнообраз­ной информации;

-        экономический критерий: информация становится ключе­вым фактором в промышленности, в сфере услуг, занятости;

-       политический критерий: свобода информации ведет к по­литическим процессам, характеризующимся широким уча­стием населения в политической жизни;

-        культурный критерий: осознание культурной ценности ин­формации.

В последнее время в индустриально развитых странах возник феномен «электронных мигрантов» — работников, использую­щих телекоммуникационные технологии, которые освобождают их от необходимости ежедневно ездить на работу на транспорте, численность таковых в США свыше 15 млн. чел. Появляются электронные иммигранты, осуществляющие подобную деятель­ность через государственные границы. Есть все основания пола­гать, что через 20 лет проблема электронных иммигрантов станет одним из важных политических вопросов, поскольку она будет затрагивать государственный суверенитет, что осложнит и без того запутанную проблематику, связанную с обеспечением как свободного движения информационных потоков, так и междуна­родного доступа к национальным базам данных (БД).

Быстрое развитие информационных технологий приводит к «информационному расслоению» общества, происходящему бы­стрее, чем имущественное расслоение в России и других странах бывшего соцлагеря. Информационное общество характеризуется тем, что каждый гражданин может получить любую информа­цию в любое время и в любом месте. Если определенные слои граждан, в силу тех или иных причин, не будут иметь широкого доступа к информации и средствам коммуникации, то неизбеж­но возникнут категории «информационно богатых» и «информа­ционно бедных».

Возможностями доступа и обработки информации, которые предоставляет современная электронная техника, могут пользо­ваться лишь те, кто в состоянии получить высшее образование и оплачивать необходимые расходы. В подавляющем большинстве это представители хорошо обеспеченных слоев общества, полу­чающие ряд экономических, политических и моральных преиму­ществ перед остальными членами общества. Информатизация порождает новое расслоение членов общества, связанное с воз­можностями доступа к информации.

В связи с этим представляется весьма важным обучение сете­вым информационным технологиям в учебных заведениях всех форм и уровней подготовки, начиная с простейших навыков компьютерной грамотности.

Сети не должны рассматриваться как самоцель, само­довлеющий объект, а только в контексте всех инфраструктур кооперативного использования информационных ресурсов (ИР), где локальная сеть (ЛС), например, только один из «игроков».

С появлением в первой половине 70-х годов видеотермина­лов первоначально возникли структуры «терминал — хост» (ло­кальный или удаленный).

Чуть раньше и независимо развиваются глобальные сети (па­кетной коммутации), используемые как для функций связи об­щего назначения, так и для так называемых коммуникаций хост – хост, с целью (в то же время) выравнивания использо­вания вычислительных мощностей по часовым поясам (подобно тому, как это осуществляется в сетях энергопередачи). Это были именно вычислительные сети.Структуры «терминал — хост» вносят сюда дополнительную динамику.

Эта ситуация сохраняется до середины 80-х годов XX века, с появлением и взрывообразным распространением персональных компьютеров (ПК) (как выразился один из тогдашних научных острословов «карлики-млекопитающие на планете вычислитель­ных динозавров»). Появляются локальные сети, интегрирующие прежде всего информационные ресурсы (файл-сервер), редкие или дорогостоящие технические средства (принт-сервер) и т. п.

Изучение трафика (потоков данных) в развивающихся сетях показало смещение акцентов с распределенных вычислений на обмен информацией — доступ к удаленным базам данных, об­мен сообщениями по электронной почте и пр. Вырисовываются, таким образом,информационные сети.

Наконец, в 80—90-е годы широко распространяется техноло­гия TCP/IP, обеспечивая рост и развитие «сети сетей» — Internet, которая представляет собой глобальную информационно-вычисли­тельную сеть.

Компьютерные сети и телекоммуникационные технологии являются, с одной стороны, результатом развития средств ком­муникации и связи, а также вычислительной техники и про­граммного обеспечения, а с другой, — это важнейший фактор экономического и научно-технического прогресса, обеспечиваю­щий кооперацию, разделение труда, интегральное использова­ние ресурсов.

Системы коллективной человеческой деятельности, опираю­щиеся на телекоммуникационные технологии, разделяются на две группы:

•  системы с разделением времени (СРВ) — Time Sharing System, в которых каждый участник как бы пользуется собственной ЭВМ и основной задачей администраторов и разработчи­ков  является  защита данных  от  несанкционированного доступа и взаимная изоляцияучастников;

•  системы обеспечения групповых решений (СОГР) — Computer Supported Cooperative Work, groupware — ориентированные на прямо противоположную задачу — обеспечить взаимо­действие  пользователей  в  процессе   принятия  решений. СОГР сочетают коммуникационную, вычислительную тех­нологии и технологию принятия решений для облегчения формулирования и решения проблем группой лиц.

Мар

31

Сокеты, датаграммы и каналы связи

Автор: 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 предоставляет программи­сту набор функций высокого уровня (и в то же время гибких в использова­нии), достаточный для самостоятельного создания сетевого приложения практически любой (необходимой в конкретном случае) сложности.

Мар

31

Инструментальные средства создания клиентской части

Автор: 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.

Мар

31

Типовые задачи, решаемые клиентской частью

Автор: admin

Типовые задачи, решаемые клиентской частью

Создание пользовательского приложения требует разработки так называемого дружественного интерфейса пользователя, т.е. организации диалога между пользователем и компьютером (кли­ентом и сервером).

Основным способом организации диалога является разработка диалоговых форм, которые по назначению можно подразделить на следующие группы:

• для ввода данных в таблицы;

• для ввода условий обработки информации в запросы;

• для автоматизации работы с объектами базы данных. Формы для ввода данных в таблицы предназначаются для такой

организации процедур внесения информации, которые могли бы свести к минимуму возможность ошибок оператора. Кроме того, такие формы могут служить для проведения анализа имеющихся в таблицах данных.

Формы для ввода условий обработки информации в запросы имеют назначение, аналогичное формам для ввода данных в таблицы

Формы для автоматизации работы с объектами базы данных имеют различное назначение, например это формы-заставки, формы-меню, кнопочные формы и др.

Все эти формы и представляют собой интерфейс пользователя.

Разработка форм может производиться различными средства­ми визуального проектирования, например:

с помощью языков программирования (C++, Delphi, VBA);

с помощью специальных компонентов СУБД (конструкторов форм Microsoft Access, Oracle и др.).

Однако, какими бы средствами не разрабатывались формы ин­терфейса пользователя, необходимо учитывать следующие советы и рекомендации:

• прежде чем приступать к проектированию форм, необходимо продумать «сценарий» пользовательского интерфейса, т.е. опре­делить последовательность появления форм на экране компьюте­ра пользователя в соответствии с выполняемыми задачами. Фак­тически разработчик форм должен научиться создавать сценарии аналогично сценаристу художественных фильмов;

•  каждая форма должна иметь название, которое однозначно определяет ее назначение;

• форма должна иметь привлекательный внешний вид, но при этом не должна содержать информации, не относящейся к конк­ретной задаче;

• формы для ввода данных в таблицы или параметров в запро­сы должны обеспечивать:

минимизацию возможных ошибок при вводе данных пользова­телем за счет согласования терминов и сокращений, ввода дан­ных из списков и создания сообщений о допущенной ошибке;

оптимальные способы перемещения курсора (табуляцией, стрелками, указателем мыши);

получение пояснительных сообщений или инструкций при вводе данных в поля таблиц или запросов;

автоматическое закрытие формы и переход к следующей форме.

Мар

31

Математические операторы. Ветвления. Объекты клиента.

Автор: 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. Объекты клиента.

Программный объект обладает:

  • некоторым внешним видом или свойствами, отображаемыми в значениях его переменных.
  • поведением или методами, задаваемыми в виде его процедур.

Свойства и методы объединены вместе, образуя единый объект с новыми качествами.

Методы окружают свойства объекта, не позволяя напрямую обращаться к ним или менять их значения. Говорят, что свойства инкапсулированы в объект. Доступ к ним предоставляют методы объекта.
Методы предоставляют программный интерфейс для доступа к значениям свойств, заключенных в ядре объекта и являются некоторой внешней оболочкой, защищающей их от несанкционированного доступа.
Объекты могут взаимодействовать друг с другом, посылая сообщение с просьбой выполнить какой-нибудь метод или выполняя метод в ответ на запрос системы.
Взаимодействуя, объекты образуют единое целое программу. Любое сообщение состоит из трех компонентов:

  1. Имя объекта, которому оно адресовано.
  2. Имя метода, который объект-адресат должен выполнить.
  3. Необязательные параметры, необходимые для выполнения метода.

Обратиться к свойству или методу объекта можно с использованием точечной нотации.

Иерархия объектов 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=Узнай событие>

Мар

31

Обработчики событий.

Автор: 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

Мар

31

Java Script

Автор: 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>

Мар

31

Описание языка HTML. Теги языка 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>, если документ разбит на несколько окон-фреймов.