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


Архив

Вы сейчас просматриваете архивы рубрики «Программное обеспечение компьютерных сетей».

Мар

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

Мар

31

Развитие языков разметки гипертекста

Автор: admin

Развитие языков разметки гипертекста

1. Понятие о стандартном обобщенном языке разметки SGML.

HTML — основной, но не единственный язык разметки документов. Суще­ствуют как более общие, так и узко специализированные решения.

Исторически первым распространенным форматом был SGML (Standard Generalized Markup Language — стандартный общий язык разметки, произно­сится эс-джи-эм-эль). SGML — наследник разработанного в 1960 г. компа­нией IBM языка GML (Generalized MarkupLanguage) — это метаязык, т. е. на нем можно определять правила построения других языков форматирова­ния документов.

SGML был разработан для совместной разработки машинных документов в больших правительственных и аэрокосмических проектах. Он широко при­менялся в печатном деле и издательской сфере, но его сложность затруднила повседневное использование. Основные наследники SGML — форматы HTML и XML.

2. Версии языка гипертекстовой разметки HTML.

HTML (Hypertext Markup Language — язык разметки гипертекста) — самое распространенное сегодня средство для создания Web-страниц. Технология HTML позволяет связывать между собой документы различных форматов с помощью гипертекстовых ссылок (гиперссылок или линков). Такие связи между документами, расположенными на серверах по всему миру, позволяют системе работать так, будто она представляет собой единую всемирную пау­тину информации (World Wide Web), Документ HTML - это файл, содержащий обычный текст и специальные команды – теги. Теги определяют визуальное форматирование текста (цвет и начертание шрифта, разметку заголовков, таблиц и т. п.), а также связи данного HTML-документа с други­ми ресурсами (изображениями, таблицами стилей, видеороликами, другими HTML-документами и т. д.). В SGML, HTML и XML теги оформляются открывающей (<) и закрывающей (>) угловыми скобками, за которыми следует наименование тега, и затем — уточняющие его действие команды -атрибуты.

HTML был разработан британским ученым Тимом Бернерсом-Ли в 1991 1992 годах в стенах Европейского совета по ядерным исследованиям в Женеве (Швейцария). Поначалу HTML создавался как язык для обмена научной и технической документацией, пригодный для людей, не являющихся специалистами в области верстки.

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

HTML является приложением SGML и соответствует международному стандарту ISO 8879. Текущий стандарт HTML 4.01 существует с 1999 г. В стоящее время опубликован проект пятого стандарта языка. Новая версия HTML обещает дополнить язык многочисленными расширениями и oбecпечить более простую, логичную и удобную систему правил.

Dynamic HTML или DHTML — это способ создания интерактивного Web-сайта. DHTML возник как набор мето­дов динамического создания и изменения Web-страниц путем вызова из HTML- документа сценариев. Однако развитие этих методов привело к пол­ному пересмотру концепции Web-документа и формированию понятия объ­ектной модели документа DOM (Document Object Model).

DOM представляет собой платформенно независимый программный интер­фейс, позволяющий программам и скриптам управлять содержимым доку­ментов HTML и XML, а также изменять их структуру и оформление.

Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый из которых содержит некоторый объект. Узлы связаны между собой отношениями родитель-потомок.

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

3. Понятие о расширяемом языке разметки XML.

XML (extensible Markup Language — расширяемый язык разметки; произно­сится экс-эм-эл) — формат, представляющий собой свод общих синтакси­ческих правил. XML предназначен для хранения структурированных данных (вместо существующих файлов баз данных), обмена информацией между программами, а также для создания на его основе более специализированных языков разметки, иногда называемых словарями. XML — это упрощенное множество языка SGML.

XML создавался для обеспечения совместимости при передаче структурированных данных между системами обработки информации, особенно при передаче данных через Интернет.

XML не вытеснил HTML. Более того, можно с уверенностью прогнозировать, что в обозримом будущем этого не случится. Причинами являются как очевидные недостатки XML (большие размеры документов, избыточный синтаксис и ограниченность заложенной в формат иерархической модели данных), так и практически важный факт, говорящий в пользу HTML — для большинства задач не нужна вся мощь синтаксиса XML, достаточно простых и производительных решений HTML.

Мар

31

Web-сервис

Автор: admin

Web-сервис

1. Протоколы прикладного уровня: HTTP, FTP, TCP, IP, ICMP, SMTP Теlnet. Их назначение и применение. Взаимодействие с сервером HTTP.

Традиционно различают два основных способа подключения к Интернету:

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

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

Компьютеры, подключенные к Интернету, могут иметь самую различную архитектуру и программное обеспечение. Возможность обмена информацией и совместимость достигаются за счет использования коммуникационных протоколов, т. е. наборов правил, касающихся передачи информации по се­тям. Главный протокол Интернета называется ТСР/IР (Transmission Control Protocol — InternetProtocol). На самом деле под названием TCP/IP скрывает­ся целое семейство протоколов, решающих те или иные частные задачи. Основные из них:

-        транспортные протоколы TCP и UDP (User Datagram Protocol) — управ­ляют процессом передачи данных между компьютерами;

-        протоколы маршрутизации IР, ICMP (Internet Control Message Protocol), RIP (Routing Information Protocol) — обрабатывают адресацию данных, обеспечивают их физическую передачу и отвечают за выбор наилучшего маршрута до адресата;

-        протоколы поддержки сетевого адреса DNS (Domain Name System), ARP (Address Resolution Protocol) — обеспечивают идентификацию компьюте­ра в сети по его уникальному адресу;

-        шлюзовые протоколы EGP (Exterior Gateway Protocol), GGP (Gateway-to-gateway protocol), IGP (Interior Gateway Protocol), GCP (GatewayControl Protocol) — отвечают за передачу информации о маршрутизации данных и состоянии сети, а также обрабатывают данные для взаимодействия с ло­кальными сетями;

-        протоколы прикладных сервисов FTP (File Transmission Protocol), Telnet и др. — обеспечивают доступ к различным услугам и службам Сети (на­пример, передачу файлов между компьютерами);

-        протокол SMTP (Simple Mail Transfer Protocol) — отвечает за передачу сообщений электронной почты;

-        протокол NNTP (Network News Transport Protocol) — предназначен для работы с группами новостей.

-        протокол HTTP (HyperText Transfer Protocol) — протокол прикладного уровня, который разработан для обмена гипертекстовой инфор­мацией в сети Internet и используется в World Wide Web с 1990 г. Реальная информационная система требует гораздо большего количества функций, чем только поиск данных. HTTP позволяет реализовать в рамках обмена информацией широкий набор ме­тодов доступа. Сообщения по сети при использовании протоко­ла HTTP передаются в формате, схожем с форматами почтового сообщенияInternet (RFC-822 и MIME). HTTP используется для взаимодействия программ-клиентов с программами-шлюзами, разрешающими доступ к ресурсам электронной почты Internet (SMTP), спискам новостей (NNTP), файловым архивам (FTP), системам Gopher иWAIS. Протокол разработан для доступа к этим ресурсам посредством промежуточных программ-серверов (proxy), которые позволяют передавать информацию между раз­личными информационными службами без потерь. Протокол реализует принцип «запрос — ответ». Запрашивающая програм­ма-клиент инициирует взаимодействие с отвечающей програм­мой-сервером и посылает запрос, включающий в себя метод доступа, адрес URL, версию протокола, сообщение с модифика­торами типа передаваемой информации, информацию клиента и, возможно, тело сообщения клиента. Сервер отвечает строкой состояния, включающей версию протокола и код воз­врата, за которой следует сообщение в формате, аналогичном MIME. Данное сообщение содержит информацию сервера и тело сообщения.

2. Web-сервис, его  функциональные блоки и конструктивные решения. Протокол SOAP, применение и преимущества.

Идея веб сервисов была разработана такими гигантами компьютерной индустрии как Sun, Oracle, HP, Microsoft и IBM. В этой идее нет ничего нового, но это большой шаг вперед к упрощенному доступу к программам через сеть.

Принципы, лежащие в основе веб-сервисов, достаточно просты.

-        лицо, ответственное за веб-сервис, определяет формат запросов к своему веб-сервису и его ответов

-        любой компьютер в сети делает запрос к веб-сервису

-        веб-сервис обрабатывает запрос, выполняет какое-либо действие, а затем отправляет ответ.

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

Условно говоря, веб-сервисами называют приложения, которые могут быть опубликованы, обнаружены и запущены с помощью Интернет. Классическими примерами веб-сервисов являются:

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

Для выполнения своих задач одни веб-сервисы могут использовать другие веб-сервисы.

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

Поскольку веб-сервисы представляют просто еще одно средство для распределенных приложений, они состоят их тех же самых трех компонентов:

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

Язык XML

Язык XML играет важную роль в Web-сервисах — он является основой для такой технологии, как SOAP, а также определяет формат данных, используемый для обмена информацией между потребителем сервиса и самим сервисом. XML не является языком как таковым — это синтаксис для описания структур данных, позволяющий осуществлять обмен данными с помощью стандартных методов для кодирования и форматирования информации. В отличие от HTML, XML позволяет не только описывать структуру информации, но и ее контекст. Посредством XML структуру документа, ее содержимое и способы ее отображения можно представить в виде трех различных компонентов. Таким образом, один и тот же документ может быть отображен различными способами, например в зависимости от типа клиента или от типа запрашиваемого документа. Следует отметить, что все средства создания и потребления Web-сервисов содержат библиотеки для обработки XML-документов. Это могут быть библиотеки, поддерживающие XML Document Object Model (DOM), SAX или, как в случае с .NET Framework, — «pull»-модель для извлечения и обработки информации из XML-документов.

SOAP

SOAP (Simple Object Access Protocol, хотя более актуальным следует считать название Services-Oriented Architecture Protocol) — это основанный на языке XML стандарт для взаимодействия между сервисами и их потребителями. Версия SOAP 1.0 была разработана рядом компаний, таких как Userland, Microsoft и Developmentor, и содержала элементы, специфичные для COM и HTTP, — протокол SOAP обязан своим рождением прототипу XML-RPC, использовавшемуся для реализации удаленных вызовов процедур через XML Предложенная в апреле 2000 года версия SOAP 1.1 пополнилась вкладом от таких фирм, как IBM и Lotus, и содержала следующие изменения:

  • нейтральность к транспортному уровню (возможно использование не только протокола HTTP);
  • нейтральность к языку программирования и платформе (Java);
  • нейтральность к кодировке данных;
  • полная независимость от компаний;
  • полная независимость от объектных моделей и операционных систем.

В настоящее время развитием протокола SOAP занимается комитет World Wide Web Consortium — в сентябре 2000 года была создана рабочая группа под названием XML Protocol (XMLP), задачей которой является разработка протокола, нейтрального ко всему (транспортному уровню, языку программирования, объектной модели, операционной системе и т.п.), кроме языка XML, используемого для представления данных. На сегодняшний день в различной степени готовности находятся стандарты:

Протокол SOAP базируется на сообщениях, которые разделяются на два типа: запросы (вызов метода удаленного объекта) и ответы (результат работы удаленного метода). SOAP поддерживает два механизма доступа — SOAP RPC и SOAP Message. SOAP RPC представляет собой простой протокол «запрос-ответ» и базируется на объекте Call. Этот объект (и некоторые низкоуровневые методы для создания и отсылки сообщений) используется для синхронного удаленного вызова методов Web-сервисов.

SOAP Message — это протокол для отсылки и обработки SOAP-сообщений, который может использоваться для асинхронных коммуникаций и подразумевает немедленный или отложенный ответ на запрос. Протокол SOAP Message базируется на объекте Message. Разработчики могут использовать низкоуровневые интерфейсы SOAP API для создания и отсылки сообщений.

Протокол SOAP основан на понятии «конвертов», внутри которых и располагаются сообщения со специфичными для того или иного приложения данными. Ниже показан пример SOAP-запроса, посылаемого потребителем сервиса сервису.

Мар

31

Серверы приложений

Автор: admin

Серверы приложений

1. Серверы приложений: типы, назначение, функции.

Cерверы приложений — это программное обеспечение, предназначенное для создания систем с выделенными сервисами бизнес-логики. Чаще всего серверы приложений выполняются под управлением серверных операционных систем (различных версий UNIX, Windows NT Server, Windows 2000 Server). Компоненты, реализующие бизнес-логику распределенного приложения и выполняющиеся под управлением сервера приложений, могут представлять собой COM- или CORBA-объекты, Java-серверы либо Enterprise Java Beans (EJB) — Java-компоненты. Многие серверы приложений позволяют реализовать приложения, устойчивые к сбоям. В настоящее время серверы приложений являются основой многих корпоративных решений, например распределенных приложений, реализующих следующие схемы:

  • «предприятие — потребитель» (B2C, business-to-consumer), такие как онлайновая продажа товаров, бронирование билетов и мест в гостиницах, услуги страхования;
  • «предприятие — предприятие» (B2B, business-to-business), такие как виртуальные торговые площадки, позволяющие заключать торговые сделки между предприятиями;
  • «предприятие — сотрудник» (B2E, business-to-employer), такие как корпоративные порталы.

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

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

Из технологий, поддерживаемых современными серверами приложений, следует в первую очередь отметить средства интеграции приложений, созданных на различных платформах, в том числе поддержку Web-сервисов, средства разработки приложений, наличие продуктов специализированного назначения, основанных на данном сервере приложений (например, средств управления информационным наполнением), поддержку беспроводных Лидерами рынка серверов приложений на данный момент является компания IBM. Из других наиболее известных продуктов, относящихся к категории серверов приложений, следует отметить серверы компаний Oracle, Sun Microsystems, Borland, Sybase,.

Borland Enterprise Server 5.0 (Borland Software Corporation)

Borland Enterprise Server довольно широко применяется в телекоммуникационном и банковском секторах. Этот продукт обладает некоторыми уникальными технологическими особенностями, такими как Borland Application Partitioning. Данная технология позволяет определить детальные характеристики сервисов и Web-серверных приложений, описать собственный набор сервисов для каждой конфигурации (partition), выделить для каждой конфигурации самостоятельный системный процесс. Все это упрощает конфигурирование распределенных систем и управление ими и в целом повышает надежность и доступность приложений, созданных на основе этого сервера.

Семейство серверов Microsoft .NET (Microsoft Corporation)

Наиболее часто применяемыми серверами приложений являются продукты семейства корпоративных серверов Microsoft .NET, предназначенные, как и другие серверы приложений, для создания и развертывания интегрированных корпоративных приложений. Все эти серверы характеризуются поддержкой стандартов Интернета, поддержкой кластерной архитектуры, высокой степенью взаимной интеграции, а также интеграции с операционной системой Windows и средствами разработки Microsoft.

К семейству корпоративных серверов Microsoft .NET сама компания Microsoft относит:

  • Microsoft SQL Server — сервер баз данных, являющийся одним из лидирующих продуктов данного класса для платформы Windows и обычно применяющийся совместно со многими другими серверами Microsoft .NET;
  • Microsoft Application Center — средство управления кластерами серверов для осуществления горизонтального масштабирования;
  • Microsoft BizTalk Server 2002 — сервер интеграции приложений и создания инфраструктуры их взаимодействия, основанный на обмене документами между приложениями, принадлежащими разным организациям;

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

Oracle9i Application Server (Oracle Corporation)

Oracle9i Application Server (Oracle9iAS) — это сервер приложений, предназначенный для создания широкого спектра корпоративных приложений, начиная от динамических Web-сайтов и заканчивая корпоративными порталами и системами, интегрирующими разнородные корпоративные приложения.

Особенностью данного сервера приложений является наличие в его составе широкого набора специальных сервисов и готовых специализированных решений, использующих СУБД Oracle9i и Oracle9iAS, таких как:

  • Oracle9iAS Portal — готовое структурное решение для быстрого развертывания и поддержки работы информационного портала организации, поддерживающее применение портлетов — компонентов портала, содержащих механизмы работы с определенными информационными источниками;
  • Oracle9iAS Wireless — программное обеспечение, предназначенное для создания и развертывания приложений беспроводного доступа, в том числе и беспроводных порталов;
  • Email Server — решение для организации сервера электронной почты, доступ к которому возможен из любых клиентских программ, поддерживающих Интернет-стандарты POP3 и IMAP. Архитектура, лежащая в основе продукта, ориентирована на множество одновременно работающих пользователей и большой объем хранимых почтовых сообщений;

Enterprise Application Server 4.1 (Sybase)

Sybase Enterprise Application Server (EAServer) — это сервер приложений для создания порталов и корпоративных решений. Этот продукт, как и другие подобные продукты, предоставляет широкий набор инструментов для развертывания Web-приложений и распределенных систем.

Особенностью данного сервера приложений является универсальная по отношению к клиентским компонентам программного обеспечения поддержка широкого спектра технологий построения распределенных систем, включая CORBA, XML, HTML, DHTML, ActiveX, PowerBuilder, COM, а также средства интеграции различных приложений. Многие пользователи этого продукта отмечают высокое качество управления транзакциями и надежные средства обеспечения безопасности. Sybase EAServer позволяет использовать бизнес-логику унаследованных приложений, интегрируя их программный код в среду EAServer при помощи технологии Application Integrators.

2. Серверы Интернет. Web-сервер, его функции и предъявляемые к нему требования. Microsoft Internet Information Services (MIIS).Web-сервер Apaсhe.

Web-сервер — это программа, обрабатывающая сообщения, и работающая с протоколом HTTP (Hypertext Transfer Protocol). Именно этот протокол является основным для WWW. Он представляет собой набор правил для обмена данными и основан на принципе «запрос-ответ». Запрос идет от клиента к серверу и содержит служебную информацию о типе запроса (данные, заголовок, форма), заголовок запроса (допустимые типы файлов, авторизация, версия клиента, адрес, где была активирована ссылка на данный ресурс, и сам адрес) и запрос данных. Ответ идет от сервера к клиенту. В нем находится служебный код (число), показывающий состояние обработки запроса, ответный заголовок (версию сервера, дату, длину и тип данных) и сами данные.

В последнее время увеличилось количество Web-серверов, выпускаемых различными производителями. Естественно, любой Web-сервер поддерживает некоторый минимальный набор функций – поддержка протокола HTTP, настройка на разные порты, создание log-файлов, пользовательские директории, функции защиты. Планирование своей системы вы вряд ли начнете с Web-сервера: скорее вы будете выбирать операционную систему. Тут нужно иметь в виду, что не всякий сервер реализован для конкретной операционной системы. Далее, прежде чем установить сервер, необходимо понять, что он поддерживает, а что нет. Любой сервер поддерживает протокол HTTP, но не всякий сервер изначально поддерживает, например, работу с базами данных. Плюс к этому сейчас любой разработчик Web-серверов создает свой API (Application Program Interface) для работы с сервером. Удобство средств разработки программ для сервера тоже играет немалую роль. Наиболее распространен сервер Apache, который, по оценкам, установлен примерно на 60% всех WWW-серверов, причем является бесплатным, свободно распространяемым и считается одним из самых надежных и стабильных. Сейчас в мире существуют довольно много Web-серверов (несколько десятков), но популярностью пользуются лишь несколько. Самых популярных три: Apache от ASF (Apache Software Foundation), Internet Information Server от Microsoft и iPlanet server (бывший Netscape Enterprise server) от Netscape и Sun.

Apache от ASF

Без преувеличения можно сказать, что это самый распространенный Web- сервер в мире. Сейчас имеются версии фактически для всех известных платформ и операционных систем, в том числе и для Windows NT. Поддержка Windows NT появилась лишь в последней версии, и это еще больше повысило популярность Apache в мире. Его несомненными достоинствами являются надежность, исключительная производительность и огромный набор функций и дополнительных модулей. Версия 1.3.x считается одной из самых стабильных и быстрых среди всего семейства Apache. Основными свойствами Apache являются поддержка кросс-платформ, протокол HTTP/1.1, модульная структура, защита, запись log-файлов.

Краткие характеристики Web сервера Apache:

  • последняя версия: 2.0 alpha 4;
  • последняя официальная версия: 1.3.12;
  • бесплатный, открытый код;
  • операционные системы: NetBSD, Digital UNIX, BSDI, AIX, OS/2, SCO, HPUX, Novell NetWare, Macintosh, Be OS, Windows NT, Linux, Windows 95, FreeBSD, Windows 98, IRIX, Solaris;
  • HTTP/1.1; есть функция автоматического ответа при изменении документа; возможен запрет доступа с конкретных адресов, к конкретным документам, доступ конкретных пользователей; допускаются изменения без перезапуска сервера;
  • поставляется вместе с полным исходным кодом; поддерживает другие протоколы (ftp, telnet); имеет настройку на пользовательские директории; содержит модуль proxy.

iPlanet server (бывший Netscape Enterprise server) от Netscape и Sиn

Не так давно произошло объединение Netscape и Sun в области создания Web- сервера, а именно: бывший Netscape Enterprise server теперь перешел в новое качество – iPlanet server. Это не просто смена имени. Теперь ко многим качествам предыдущего сервера добавилась тесная интеграция с Java- технологиями. Последней версией является 4.1. iPlanet Server, который поставляется на компакт-диске или может быть загружен по Сети. При этом он не является бесплатным. Есть версии как под Windows NT, так и под некоторые UNIX-системы. Привлекает простота установки, конфигурирования и управления. Базовая установка занимает не более 15 минут. Вся дальнейшая настройка производится с использованием Java-программы, запускаемой в браузере откуда угодно. Что касается Java, то, как и следовало ожидать, сервер поддерживает новейшие Java-технологии, такие как Java Servlets 2.1, Java Server Pages .92, JVM, JavaScript 1.4. На сегодняшний день это единственный сервер такого плана. В дополнение к этому iPlanet server включает в себя возможности по управлению доступом к базам данных. В его поставке содержатся драйверы для работы с Oracle, Informix, DB2, и Sybase. С точки зрения программирования для iPlanet server, сейчас наметилась тенденции к объединению с iPlanet Application Server. Это позволит существенно расширить возможности по созданию программ для Web-сервера iPlanet. Все перечисленные свойства делают Web-сервер iPlanet привлекательным для использования в разных областях. Также ведется работа над сервером FastTrack, который будет ограниченным по возможностям аналогом полного сервера, но при этом бесплатным (при полной аналогии с Netscape FastTrack). Что касается технической поддержки, то все описания, справочники и другие материалы относительно iPlanet server сделаны на высоком уровне (впрочем, как и любая документация, находящаяся на сервере Netscape).

Сформулируем кратко основные характеристики сервера:

  • последняя версия: 4.1;
  • цена: 60 дней бесплатно, далее 1495 долл.;
  • операционные системы: HPUX 11.0, Solaris 2.6/7.0, IBM AIX 4.2.1, Compaq Tru64 Unix 4.0d, SGI IRIX 6.5, NT 4 SP4;
  • ·поддержка Java Servlets 2.1, Java Server Pages .92, JVM, JavaScript 1.4; Oracle, Informix, DB2, и Sybase; преобразование PDF в HTML; поддержка LDAP;
  • может создавать несколько log-файлов, протоколировать производительность, создавать log-файлы для каждого CGI-скрипта; под Windows NT запускается как сервис и/или программа, под UNIX может запускаться из inetd; допускает настройку на несколько портов;
  • в поставку включен SNMP агент; поддерживает Windows CGI, HTTP/1.1, в том числе и HTTP/1.1 PUT; есть функция автоматического ответа при изменении документа; поддерживает Netscape Server API;
  • возможен запрет доступа с конкретных адресов, доступ конкретных пользователей; есть поддержка S-HTTP; допускаются изменения без перезапуска сервера; есть поддержка SSL второй и третьей версий и авторизации.
  • графическая программа установки; графическая программа управления; присутствует программа для оценки производительности во время работы; поддержка директорий пользователей; встроенный алгоритм поиска; возможность удаленного управления.

Internet Information Server (IIS) от Microsoft

Сервер IIS является лучшим для Windows NT. Это и понятно, потому что вряд ли кто-нибудь, кроме разработчиков операционной системы, может сделать программу, полностью использующую возможности этой системы. Версия 4.0 поставлялась бесплатно вместе с Service Pack, а версия 5.0 поставляется исключительно как часть Windows 2000. Версия 5.0, по мнению специалистов, отличается более высокой надежностью, более тесной интеграцией с Windows и целым набором новых свойств. Установка и конфигурирование занимают не более 10 минут. Особенно приятно, что теперь ненужно устанавливать какие-либо Service Pack и не нужно перегружать систему после установки. При всем этом сам сервер занимает около 30 Мбайт на диске и вполне работает на машине Pentium 200 МГц с объемом памяти 128 Мбайт. Однако установить и запустить сервер можно только на Windows 2000 Server. Помимо удобной установки, удобно реализована и система управления сервером. Существует несколько полезных программ шаблонов (Wizards) для выполнения частых и рутинных операций. Вообще, справедливости ради нужно отметить следующее: в том, что касается удобства, мало кто сможет соревноваться с программами Microsoft. К тому же IIS поддерживает известные и включает в себя новые стандарты защиты. Так, есть поддержка известных методов SSL 3.0, Kerberos 5.0, и нового метода Fortezza (новый стандарт безопасности). Наиболее интересной и отличительной чертой IIS является поддержка WebDAV (Web-based Distributed Authoring and Versioning). Это недавно появившийся стандарт, который позволяет превращать внутренние сети в единое пространство, используя ресурсы соседних компьютеров как свои. Для пользователей IIS это означает, что они могут c большим удобством разделять свои рабочие файлы и иметь при этом возможность блокировать файлы. Вместе с тем существуют и некоторые проблемы, и несовместимость. Не совсем корректно происходит работа одновременно с Front Page Server, иногда при изменении конфигурации приходится перезапускать систему, встречаются ошибки при использовании системы удаленного администрирования. Но в целом версия 5.0 является значительным шагом вперед по сравнению с 4.0 в плане надежности и удобства.

Приведем кратко основные характеристики:

  • последняя версия: 5.0;
  • цена: поставляется вместе с Windows 2000 Server;
  • операционные системы: Windows 2000 Server, Advanced Server;
  • может создавать несколько log-файлов; протоколирование производительности;
  • поддерживает HTTP/1.1;
  • возможен запрет доступа с конкретных адресов, к конкретным документам, доступ конкретных пользователей; допускаются изменения без перезапуска сервера;

·  графическая программа установки; графическая программа управления; поддерживает другие TCP-протоколы (ftp, telnet); присутствует программа для оценки производительности во время работы; поддержка директорий пользователей; встроенный алгоритм поиска; возможность удаленного управления.