Клиентское программирование. Выбор метода решения задачи

Бурно развивающийся раздел программирования, ориентированный на разработку динамических Internet приложений. Языки веб программирования это соответственно языки, которые в основном предназначены для работы с интернет технологиями. Языки веб… … Википедия

Запрос «сайт» перенаправляется сюда; см. также другие значения. Веб сайт (от англ. website: web «паутина», «сеть» и site «место», букв. «место в сети») или просто сайт в компьютерной сети объединённая под одним адресом (доменным … Википедия

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

Веб приложение клиент серверное приложение, в котором клиентом выступает браузер, а сервером веб сервер. Логика веб приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен… … Википедия

У этого термина существуют и другие значения, см. Служба. Веб служба Веб служба, веб сервис (англ. web service) идентифицируемая веб адресом программная система со стандартизированными интерфейсами. Веб службы могут взаимодействовать… … Википедия

Развитие Интернет сделало веб браузеры доминирующим ПО для доступа к содержанию, приложениям и системам по всему миру. В компаниях уже сложилась тенденция предоставлять своим сотрудникам, партнерам и клиентам доступ ко всем типам информации и… … Википедия

Веб разработка процесс создания веб сайта или веб приложения. Термин включает в себя веб дизайн, программирование для веб на стороне клиента и сервера, а также конфигурирование веб сервера. Содержание 1 Основные этапы веб разработки … Википедия

Веб разработка процесс создания веб сайта или веб приложения. Термин включает разработку приложений электронной коммерции, веб дизайн, программирование для веб на стороне клиента и сервера, а также конфигурирование веб сервера. Содержание 1… … Википедия

Является инструментом для отделения содержимого от визуального представления в веб дизайне, для массового создания веб документов. Это основной компонент системы веб шаблонов (англ.)русск.. Веб шаблоны используют для создания сайтов любого… … Википедия

Веб мастер человек, занимающийся разработкой веб сайтов в Интернете или корпоративных приложений в интернете. Веб мастер это «управляющий» сайтом. В зависимости от размера коллектива разработчиков, он может объединять в себе… … Википедия

Книги

  • Веб-программирование для чайников , Никхил Абрахам. Хотите научиться программированию, но не знаете, с чего начать? Эта книга - именно то, что вам нужно! Ознакомьтесь с возможностями языков программирования HTML, CSS, JavaScript, Ruby и…
  • Веб-программирование для мобильных устройств , Фиртман М.. Каждый сайт создает мобильную версию для отображения на карманных устройствах. На наших глазах формируется новый огромный рынок. Чтобы извлечь из этого максимальную пользу веб-разработчик…

Технологии создания web-приложений. Языки HTML, DHTML, технология Flash. Достоинства и недостатки.

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

HTML (язык разметки гипертекста) - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц создаются при помощи языка HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде документа, в удобной для человека форме.

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

DHTML построен на объектной модели документа (Document Object Model, DOM ), которая расширяет традиционный статический HTML-документ. DOM обеспечивает динамический доступ к содержимому документа, его структуре и стилям. В DOM каждый элемент Web-страницы является объектом, который можно изменять. DOM не определяет новых тэгов и атрибутов, а просто обеспечивает возможность программного управления всеми тэгами, атрибутами и каскадными листами стилей (CSS).

Технология Flash основана на использовании векторной графики в формате Shockwave Flash (SWF) разработанная компанией Macromedia. Это далеко не первый векторный формат, но именно его создателям удалось найти наиболее удачное сочетание между изобразительными возможностями графики, инструментальными средствами для работы с ней, а также механизмом включения результата в Web-страницы. Основным преимуществом Flash технологии является его межплатформенность, то есть этот формат может использоваться на любой аппаратно-программной платформе (в частности, как на компьютерах Macintosh, работающих под управлением операционной системы MacOS, так и на компьютерах IBM с ОС Windows). И еще одна весомая особенность Flash технологии: созданные на его основе изображения могут быть не только анимированы, но еще и дополнены интерактивными элементами и звуковым сопровождением.



HTML – hyper text markup language – язык гипертекстовой разметки (НЕ ЯЗЫК ПРОГРАММИРОВАНИЯ)

Тэги – инструмент оформления web-страниц ( текст - оформление текста в виде ссылки)

DHTML – Dynamic HTML

DHTML=HTML+CSS+Java Script+(XML) (НЕ ЯЗЫК ПРОГРАММИРОВАНИЯ)

CSS – Cascadin Style Sheets – язык таблиц каскадных стилей (для задания внешнего вида (шрифтов, цветов, расположения, отступов…)) web-страниц и применяется для отделения основного содержимого документа от оформления этого содержимого.

Преимущества DHTML:

Поддерживается всеми браузерами;

Использует стандартные технологии;

Файлы загружает быстрее, чем flash/java;

Не требует модулей расширения;

Прост в изучении;

Высокая скорость разработки web-страниц;

Недостатки DHTML:

Разный вид web-страниц в разных браузерах;

Ненадежная работа в связи с ошибками в браузерах;

Java Script и CSS чувствительны к ошибкам в синтаксисе.

Flash – платформа для создания мультимедийных приложений.

Преимущества Flash:

Платформенная независимость;

Распространенность и предоставление разработчикам огромнейшего количества инструментов.

Недостатки Flash:

Сложна в изучении;

Несовместимость программных компонентов.

Технологии создания web-приложений. Языки программирования (на стороне сервера и пользователя)

1 группа языков программирования в интернет – на стороне пользователя (в браузере)

Java Script, VB Script, java-апплеты

Программы, написанные на этих языках встраиваются в код web-страниц или выносятся в отдельный файл с вызовом web-страниц.

2 группа языков программирования в интернет – программы на которых выполняются на стороне сервера: PHP, CGI, ASP, Perl

Клиентские языки программирования

Самые распространённые из них - JavaScript и Visual Basic. Особенность таких языков заложена в их названии. Программы, написанные на клиентских языках программирования обрабатываются на клиентском компьютере. Говоря проще, скрипты обрабатывает браузер, стоящий на Вашем компе. Из этой особенности вытекают их плюсы и минусы.

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

Недостатки клиентских языков программирования также вытекают из особенностей. Разные браузеры могут интерпретировать скрипты, исходя из своих индивидуальных предпочтений. Поэтому, результаты показа одних и тех же документов могут отличаться. Хотя, последнее время работа различных браузеров всё более унифицируется. Так же к недостаткам можно отнести и открытость кода таких языков для пользователей.

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

Упрощённая схема такой работы изображена на рисунке:

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

Наиболее распространённые серверные языки программирования : C++, Perl, Java, Php, Python.

Что? Какое еще серверное программирование? Что это за беда? И зачем она нам нужна?

Мы, вроде бы, научились создавать Web-страницы в среде Dreamweaver. Мы даже научились создавать с его помощью целые Web-сайты и публиковать их на Web-сервере. Мы изучили две разновидности дизайна страниц: фреймовый, когда сайты строятся на основе наборов фреймов, и табличный, когда содержимое страницы помещается в большую сложную таблицу. Мы познакомились с таблицами стилей, метатегами и серверными директивами. И, наконец, узнали о Web-программировании и Web-сценариях, позволяющих добавить "жизни" нашим статичным страничкам. Что же еще надо для счастья?

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

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

Но давайте по порядку. И начнем мы с того, что выясним, зачем нужны эти серверные программы.

Что такое серверное программирование

Действительно, что это такое и с чем его едят?

Зачем нужны серверные программы

Вы когда-нибудь посещали интернет-магазин? Например, популярнейший "Озон" (http://www.ozon.ru) . Помните, как там выполняется заказ товара?

Если не помните или вообще не знаете, что такое интернет-магазин, давайте вспомним (или узнаем).

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

Что происходит при этом? Как обрабатываются введенные вами данные? Неужели самим Web-обозревателем?

Отнюдь. Эти данные обрабатываются на Web-сервере.

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

Как это происходит на деле? Сейчас мы это выясним. И первым делом ответим на вопрос...

Как Web-сервер обрабатывает данные пользователя

Итак, каким же образом программа Web-сервера обрабатывает данные, отправленные ей пользователем?

Да никак. Web-сервер не приспособлен их обрабатывать. Его задача: прием от Web-обозревателя запроса на файлы (Web-страницы, таблицы стилей, графические изображения, фильмы, звуки, архивы, исполняемые файлы и т. п.), поиск этих самых файлов на жестких дисках серверного компьютера и отправка найденных файлов назад Web-обозревателю. Это его основная задача. Конечно, некоторые особо мощные серверы могут выполнять дополнительные действия над отправляемыми файлами перед собственно их отправкой (в частности, выполнять серверные директивы). Есть и программы-"многостаночники", выполняющие функции не только Web-сервера, но и сервера FTP, почты, новостей UseNet и бог знает чего еще. Но основная функция: простая выдача файлов по требованиям клиентов -и не более того.

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

Из этого следует, что Web-сервер умеет-таки принять данные от пользователя. Да, это входит в его основную задачу: принять данные и перенаправить их серверной программе. В свою очередь серверная программа их обработает и вернет Web-серверу результат.

Вот тут-то и начинается самое интересное. Дело в том, что результат, возвращаемый серверной программой Web-серверу, - это не что иное, как обычный HTML-код! Фактически серверная программа возвращает готовую Web-страницу, сформированную на основе данных, введенных посетителем. Такая страница называется динамической, в отличие от статических страниц, написанных Web-дизайнером и сохраненных в файлах на дисках серверного компьютера. А уж эту динамическую страницу Web-сервер и направляет клиенту в качестве ответа на введенные данные.

Серверные программы делятся на следующие четыре вида.

  1. Исполняемые программы, работающие через интерфейс CGI (Common Gateway Interface - общий интерфейс обмена), так называемые CGI-npoграммы. Эта разновидность серверных программ - самая старая, однако отнюдь не устаревшая.
  2. Расширения Web-сервера (приложения формата ISAPI, NSAPI, модули расширения Apache и т. п.). Новый способ, позволяющий встраивать серверные программы в сам Web-сервер, делая их его составными частями. Впервые предложен фирмой Microsoft для их сервера Microsoft Internet Information Server (интерфейс ISAPI) и разработчиками популярного бесплатного Web-сервера Apache.
  3. Активные серверные страницы (ASP, JSP и др.). Фактически это обычные статические Web-страницы, сохраненные в файлах, Которые, кроме обычного HTML-кода, включают в себя команды, обрабатываемые либо самим Web-сервером, либо его расширением. Также новый способ, впервые предложенный Microsoft для того же Internet Information Server.
  4. Серверные сценарии, написанные на интерпретируемом языке (Perl, Python, VBScript, JavaScript и др.). Обычные сценарии, работающие через интерфейс CGI или ISAPI на стороне сервера.

Теперь рассмотрим все это разнообразие подробнее.

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

К достоинствам CGI-программ можно отнести легкость создания (многие среды разработки программ поддерживают создание таких приложений, в частности популярнейший Borland Delphi, начиная с версии 3) и простоту отладки. Также, поскольку CGI-приложения представляют собой независимые программы, они выполняются отдельно от Web-сервера (как говорят программисты и системные администраторы, выполняются в другом адресном пространстве). Это значит, что при сбое в CGI-программе завершается только она - сам Web-сервер остается "на плаву". А недостаток у CGI-программ всего один: большой расход системных ресурсов, поскольку для обработки каждого набора данных запускается отдельная копия серверной программы. И если Web-серверу поступит слишком много запросов на обработку данных, серверный компьютер может и зависнуть.

Расширения Web-сервера - более новая разновидность серверных программ. Они представляют собой обычные библиотеки DLL, в которых реализована вся логика серверной программы. Такие библиотеки как бы встраиваются в программу Web-сервера и работают как ее неотъемлемая часть. Поскольку библиотеки DLL работают только в среде Windows, для того чтобы создавать расширения в иных операционных системах, были придуманы и другие форматы. В частности, модули расширения сервера Apache не являются библиотеками DLL,

Именно в виде библиотек DLL создаются расширения Web-серверов Internet Information Server фирмы Microsoft и Netscape Web Server фирмы Netscape. В первом случае расширения имеют формат ISAPI (Internet Server Application Programming Interface - интерфейс программирования приложений интернет-сервера), а во втором - NSAPI (Netscape Server Application Programming Interface - интерфейс программирования приложений сервер^ Netscape). Формат модулей расширения Apache так и называется - модули Apache.

Достоинство у расширений Web-сервера одно: бережный расход системных ресурсов. Дело в том, что для обработки всех наборов данных пользователя запускается всего один экземпляр расширения, который отнимает существенно меньше ресурсов, чем уйма запущенных CGI-программ. Однако расширения труднее создавать и отлаживать, к тому же они не так безопасны.

Как CGI-программы. Поскольку они работают как часть Web-сервера, любая ошибка в расширении приведет к зависанию сервера.

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

Как уже говорилось, активные серверные страницы - это обычные Web-страницы, включающие в себя особые серверные сценарии, выполняемые самим Web-сервером или специальной серверной программой (CGI-приложением или расширением Web-сервера). В частности, ASP (Active Server Pages - активные серверные страницы), поддерживаемые Microsoft Internet Information Server, и JSP (Java Server Pages - серверные страницы, написанные на JavaScript), поддерживаемые рядом других Web-серверов, работают именно таким образом. Серверные страницы ASP пишутся на языках JavaScript и VBScript, a JSP - только на JavaScript.

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

Серверные сценарии подобны активным серверным страницам тем, что являются интерпретируемыми, однако представляют собой "чистый" программный код, без HTML-""примесей". Интерпретатор практически всегда представляет собой CGI-программу, однако ничто не мешает разработать его в виде расширения Web-сервера. Сценарии обычно пишутся на языке программирования Perl, специально предназначенном для обработки текста; также используются языки Python, JavaScript, VBScript и даже (как говорят) язык командных файлов MS-DOS. Фактически писать сценарии можно на любом языке программирования, для которого есть интерпретатор.

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

В табл. 15.1 приведены расширения файлов серверных программ.

Таблица 15.1. Расширения файлов серверных программ

Вид серверных программ

Подвид

Расширение

CGI-программы

-

exe

Расширения Web-сервера

ISAPI и NSAPI Модули Apache

dll Нет расширения

Активные серверные страницы

Серверные сценарии

ASP JSP

asp jsp

Язык Perl JavaScript VBScript Другие языки

pl, cgi js, cgi vbs, cgi cgi

Вот мы и рассмотрели, как Web-сервер обрабатывает (точнее, не обрабатывает) данные пользователя. Теперь переместимся в начало цепочки и рассмотрим, как Web-обозреватель отправляет данные пользователя серверной программе.

Как Web-обозреватель отправляет введенные данные

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

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

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

Например:

Здесь мы рассмотрели идеальный случай, когда значения каждого элемента управления содержат только допустимые с точки зрения протокола HTTP символы: буквы латинского алфавита, цифры, тире, подчеркивания и некоторые другие знаки. (Как вы помните, HTTP - протокол передачи файлов, используемый Web-сервером.) Если же вы передаете данные, содержащие недопустимые символы, скажем, пробелы или буквы русского алфавита, каждый такой символ будет представлен в виде шестнадцатеричного кода, которому предшествует знак процента, например, так (закодированные символы пробела выделены полужирным шрифтом):

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

Представленные в вышеуказанном виде данные впоследствии кодируются с использованием одного из предопределенных методов кодирования и отправляются по Сети серверной программе. Всем этим фактически занимается форма (но не элементы управления).

Сам процесс отправки данных начинается после того, как пользователь нажмет особую кнопку. Эта кнопка носит название Отправить (Submit -в англоязычных программах) и обязательно должна присутствовать в форме. Также в форме может присутствовать кнопка Сброс (Reset), обнуляющая введенные пользователем данные. Как правило, эти кнопки располагаются в самом низу формы.

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

  • интернет-адрес серверной программы, которая будет обрабатывать данные формы;
  • метод кодирования отправляемых данных;
  • один из двух методов отправки данных.

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

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

http: //www. somesite. ru/bin/program.exe Так - адрес расширения Web-сервера: http: //www.somesite.ru/bin/extension.dll Это - адрес активной серверной страницы:

http: //www. somesite . ru/asps/active_page . asp

А это - адрес программы-сценария, написанной на языке Perl:

http: //www. somesite. ru/scripts/perl_script.pl

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

Для кодирования передаваемых по Сети данных обычно используются три наиболее популярных метода: application/x-www-form-urlencoded, multipart/form-data и (значительно реже) text/plain. Возможно применение и других способов кодирования, но в абсолютном большинстве случаев используются три перечисленных. Вдобавок эти три метода кодирования поддерживаются большинством программ Web-обозревателей.

Примечание

Если вы еще помните, что такое тип данных MIME, то, взглянув на приведенные выше названия методов кодирования данных, сразу увидите, что это как раз типы MIME. Именно с их помощью задаются методы кодирования.

В подавляющем большинстве случаев используется метод кодирования application/x-www-form-uriencoded. Кстати, именно он применяется по умолчанию, если метод кодирования не задан. Метод кодирования multipart/form-data используется, если вы собираетесь отправить на Web-сервер файлы; он обеспечивает соответствующее такому случаю преобразование двоичных данных. Последний метод - text/plain -- представляет данные в виде обычного текста, что может быть полезно, если данные формы будут отправляться по электронной почте (иногда применяется и такой способ передачи данных).

Итак, с кодированием данных разобрались. Остается выяснить, как же эти данные передаются по каналам Сети.

Как данные передаются по Сети

Как вы уже знаете, для пересылки данных по Интернету, да и по любой локальной или глобальной компьютерной сети, используется особый набор.правил, называемый протоколом. Протокол определяет, каким образом данные будут шифроваться и упаковываться для последующей передачи по сети. Естественно, что и передающая, и принимающая программы должны поддерживать один и тот же протокол, чтобы "понять" друг друга. (Иначе возникнет так называемая несовместимость по протоколу передачи данных, штука весьма неприятная.) Собственно, уже говорилось об интернет-протоколах и повторяться сейчас нет смысла.

Также вы знаете, что для пересылки по Сети Web-страниц и связанных с ними файлов (графических изображений, звуков, архивов и т. п.) используется протокол HTTP. Он же применяется и для передачи данных, причем для этого предусмотрены два метода передачи данных. Оба способа широко используются в интернет-программировании и имеют свои преимущества и недостатки. Давайте их рассмотрим.

Первый способ носит название GET по значению соответствующего параметра формы. При его использовании данные передаются как часть интернет-адреса в HTTP-запросе.

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

Возьмем, например, такой набор данных, приведенный чуть выше:

name1 = Ivan surname = Ivanovich name2 = Ivanov age = 30

Теперь подготовим его для пересылки по методу GET (сами данные выделены полужирным шрифтом):

http://www.somesite.ru/bin/program.exe?name1=Ivan&surname2=Ivanovich&name2=Ivanov&age=30

Как видите, пересылаемые по методу GET данные помещаются в самый конец интернет-адреса и отделяются от него вопросительным знаком. При этом пары "имя" = "значение" отделяются друг от друга знаком "коммерческое и" ("&"). Все очень просто и наглядно.

Такая простота и наглядность представления данных - основное преимущество метода GET. Как говорится, все на виду. Также значительно упрощается отладка Web-страниц: поскольку передаваемый Web-серверу адрес отображается в строке адреса Web-обозревателя, вы всегда сможете увидеть, что именно было передано. (Однако, как вы понимаете, конфиденциальные данные таким методом не передашь - их увидят все, кто стоит за вашей спиной.)

http://www.mysite.ru/bin/choose.exe?chapter=3

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

К несчастью, метод GET обладает огромным недостатком: с его помощью невозможно передавать большие объемы данных. Это происходит из-за ограничения, накладываемого стандартами на длину интернет-адреса: не более 256 символов. Вычтите отсюда длину собственно адреса серверной программы - и вы получите максимально допустимый размер ваших данных. Второй недостаток метода GET - обратная сторона его достоинства. Данные, пересылаемые им, открыты для всеобщего обозрения и могут быть легко прочитаны в строке адреса Web-обозревателя.

Метод GET стоит использовать, если пересылаемые серверной программе данные заведомо невелики и не являются секретными. В частности, он используется для пересылки ключевых слов поисковым машинам, в сайтах, построенных на основе серверной программы (см. выше) и т. п. Если же вам нужно пересылать объемистые либо конфиденциальные данные, используйте второй метод передачи, называемый POST.

Метод POST передает данные серверной программе все в том же HTTP-запросе, но уже не частью интернет-адреса, а в виде так называемых дополнительных данных. Поскольку размер дополнительных данных не ограничен (по крайней мере, он может быть очень велик), вы можете передавать все, что угодно, в каких угодно количествах. В частности, именно этим способом Web-серверу могут передаваться даже файлы.

Достоинства метода POST: отсутствие ограничения на объем передаваемых данных и "невидимость" их. Недостатки: сложность расшифровки данных и трудность отладки. Методом POST передаются, например, анкетные данные, адреса покупателей в электронных магазинах, литературные произве дения на сайты http://www.stihi.ru и http://www.proza.ru и т. п. В общем, то, что имеет большие объемы.

Как говорят, комитет WWWC намерен вообще со временем отказаться от метода GET и все данные передавать с помощью метода POST. Пока что метод GET просто объявлен не рекомендованным для использования во вновь создаваемых сайтах, реально же он еще поддерживается Web-обозревателями.

Вот мы и выяснили все о серверных программах. Ну, может, не все, но пока нам этого достаточно. Теперь поговорим о том, насколько полно все это поддерживается Dreamweaver MX.

Серверное программирование - подход Dreamweaver

Трудно ли писать серверные программы? Да, трудно. Вероятно, даже труднее, чем Web-страницы.

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

И неужели нам теперь придется писать серверные программы вручную?! Нет, совсем не обязательно.

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

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

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

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

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

  1. ASP. Эта технология вам уже знакома.
  2. ASP.NET. Дальнейшее развитие ASP.
  3. PHP. Бесплатная технология, распространяемая с открытыми исходными текстами. Довольно популярна и часто используется с бесплатными же Web-серверами, например Apache.
  4. Macromedia ColdFusion. Собственная разработка фирмы Macromedia.

Какую же из них выбрать? Ведь нам надо будет создавать примеры Web-страниц.

Давайте выберем ASP. И вот почему.

Для того чтобы работать с серверными страницами, нам понадобится Web-сервер. Без него серверные страницы просто не будут работать. А, возможно, вы знаете, что со всеми более-менее новыми версиями Windows поставляется небольшой Web-сервер. В системах Windows 95/98/ME это Personal Web Server, а в Windows NT/2000/XP - Internet Information Server. Его возможностей нам вполне хватит для экспериментов с серверным программированием.

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

Технологию ASP.NET пока что не поддерживает практически ни один Web-сервер; фирма Microsoft пока что не выпустила ни один продукт с поддержкой этой технологии. Для работы с PHP-страницами вам придется искать и загружать по Сети довольно большой дистрибутивный комплект, содержащий обработчик РНР, а потом долго его настраивать. Что касается технологии ColdFusion, то вряд ли вы в состоянии выложить за нее несколько тысяч долларов. Так что вариантов у нас практически нет.

Введение в базы данных

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

Что такое база данных? Ничего особенного, обычный файл или группа файлов, содержащих данные, организованные особым образом. Если база данных состоит из множества файлов, она все равно остается единым целым. Данные, содержащиеся в базе, обрабатываются при помощи особой программы, называемой процессором баз данных. Процессор баз данных может быть как совершенно отдельной программой, работающей на том же компьютере, что и использующая данные программа, так и входить в ее состав.

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

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

На рис. 15.1 приведен пример такой таблицы. Как видите, эта таблица имеет три поля:

  • NAME - название технологии создания серверных страниц, текстовое;
  • PRICE - цена программы-обработчика, числовое;
  • USING - поддерживается ли эта технология в настоящее время, логическое ("да-нет").

Кроме того, эта таблица имеет четыре записи, соответствующие технологиям, поддерживаемым Dreamweaver MX: ASP, ASP.NET, PHP и ColdFusion.

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

Пример таблицы, входящей в базу данных

Как получить доступ к отдельному полю, вы уже знаете, - по его имени. А как получить доступ к нужной записи?

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

Также программа может использовать поиск нужной записи по какому-либо критерию. Очень часто такой поиск выполняется по значению ключевого поля.

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

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

  1. Программа открывает базу данных, выполняя операцию открытия. Это необходимая операция, без которой невозможно получить доступ к базе.
  2. Программа открывает нужную таблицу базы. После этого процессор возвращает ей так называемый набор записей (по-английски -- recordset), с которым и работает программа.
  3. Программа выполняет собственно работу с данными.
  4. Программа закрывает таблицу, после чего процессор убирает соответствующий этой программе набор записей из памяти.
  5. Программа закрывает базу данных, разрывая все связи с ней.

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

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

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

Чтобы получить доступ к серверу баз данных и самим данным, клиентская программа посылает ему особые команды. Для составления таких команд был разработан язык описания запросов SQL (Structured Query Language -язык структурированных запросов). С помощью команд, составленных на этом языке, клиентская программа может открыть нужную таблицу, считать данные, добавить, изменить, удалить запись и, в конечном счете, закрыть базу данных, когда нужда в ней отпадет.

Серверы баз данных применяются сейчас очень часто, а в Web-программировании - почти повсеместно. К наиболее популярным можно отнести Oracle, Microsoft SQL Server, Sybase, мощнейший IBM DB2, Borland InterBase (в России он продается под названием IBase), набирающий популярность PostgressSQL и бесплатный сервер MySQL, распространяющийся с открытыми исходными текстами. Последний сервер, кстати, очень часто используется в связке с Web-сервером Apache и технологией серверных страниц РНР.

На этом рассказ о базах данных и о серверном программировании можно считать законченным.

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

19 сентября 2018 в 08:06

«Сделано в России» - язык программирования WBASIC для разработки серверных веб-приложений

Здравствуй, Хабр!

Предлагаю Вам обратить внимание на проект «Сделано в России» - отечественного языка для веб-разработки. Проект разработан в Екатеринбурге, а не является локализация западного, что большая редкость, так как языков программирования разрабатываемых у нас не много.

WBASIC - Акроним Web Beginner"s All-purpose Symbolic Instruction Code.
Высокоуровневый язык программирования применяемый для разработки серверных веб-приложений.

Это диалект языка BASIC, разработаный с учетом работы в сети Интернет в 2017 году, а сам синтаксис языка в 1964.

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

История проекта

Начало разработки - 23 Марта 2017. Прототип написан примерно за месяц
После того как были закончены все основные языковые конструкции и операторы, на этой версии удалось разработать сайт и справочник по языку. После этого я пришел к выводу что у меня все таки есть на руках первая рабочая версия языка. Всего в языке поддерживалось 34 команды и ключевых слова. Помимо этого сделан режим отладки DEBUG, и упрощеный ввод больших текстовых переменых и массивов в многострочном режиме.

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

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

Основные недостатки предыдущей версии - отсутствие кэширования у компилятора, код все время компилировался перед запуском. Так же маленький набор собственных функций. В этой версии сделан прозрачный кэш на временных файлах, что существенно увеличило быстродействие. Для этого пришлось полностью переписать команды DEBUG, INCLUDE не считая самого компилятора. INCLUDE теперь подключает файлы в только в момент выполнения этой команды, с проверкой на наличие КЭШа, как в PHP.

Кроме того, улучшен парсер служебных символов, с просмотром символов вперед и назад, что изменило действие "=" и "(", появились команы IS, ISNOT, ISSET и EMPTY. Теперь "=" означает присвоение аргументов в определенных командах и проверку на равенство в выражениях типа IF… как в Бейсике. По имени и следующим за ним "(" определяется вызов подпрограммы. Также появилась проверки переменных на существование, наличие данных и их типов и их удаление.

Появились также служебные константы. В общем добавилось около 200 команд и зарезервированных слов с константами.

Преимущества и недостатки

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

Производительность примерно равна PHP7, стиль разработки такой же как на PHP – правите файлы на сервере, открываете страничку, смотрите результат, компилятор работает сам по себе полностью прозрачно.

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

На сервере должен быть установлен PHP, можно 5 или 7 версии. Но, поскольку компилятор написан на PHP вы можете использовать помимо 200 команд WBASIC любые из 1500 функций PHP, хотя это выглядит как хак и возможно вам это даже не понадобится, поскольку набор уже существующих функций перекрывает потребности среднего приложения. PHP тоже изначально был написан на Perl, однако это не помешало его распространению.

Все строковые команды языка полностью поддерживают UTF-8, а документация полностью на русском.

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

FOR I = 100 STEP -1 TO 0 FOR I = 0 TO 100 STEP 10
Если вы изучали Visual Basic, то перейти на WBASIC можно без проблем, большинство команд и синтаксис те же.

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

Исходники проекта и релиз выложены на

Языки программирования, позволяющие работать с Интернет-технологиями, называют языками веб-программирования (далее для удобства - ЯВП). Некоторые из них когда-то создавались специально для конкретных ресурсов и широко известны стали гораздо позже. PHP, например.

WEB програмированиеВсе ЯВП делятся на серверные и клиентские:

Клиентские языки web-программирования


Программы, написанные на клиентских языках, обрабатываются браузером. Иначе говоря, обрабатываются они клиентом пользователя. Отсюда и название. Отсюда же и недостаток: то, каким образом обрабатывается программа (скрипт), напрямую зависит от браузера. Пользователь даже может настроить его на полное игнорирование вашего скрипта.

К тому же браузер слишком ранней версии может не поддерживать язык или версию языка, на котором программа написана. Но тут, правда, стоит сказать, что случается это довольно редко, так как обновляются ЯВП не так уж и часто.

Программный код скрипта, созданного на клиентском ЯВП, может просмотреть кто угодно, например, щёлкнув правой кнопкой мыши на странице и выбрав в контекстном меню пункт «Просмотр кода страницы» или подобный ему (в зависимости от браузера).


Преимуществом клиентских скриптов является скорость работы. Скажем, программа должна проверить введённые пользователем вконтакте данные на корректность. В этом случае проверка выполнится тут же, не отправляя проверяемое на сервер и не принимая обратно отчёт. Экономия времени очевидна.

Но в этом и минус – клиентский скрипт вообще ничего записать на сервер не может. Поэтому создать, допустим, гостевую книгу с помощью клиентского ЯВП не получится, ведь для этого нужно сохранять сообщения в файле на сервере.


В пример ЯВП можно привести Java Script, который оказал значительное влияние на становление Си-Шарп (вот c# форум), и Visual Basic Script. Для изучения клиентских ЯВП и работы с ними необходим браузер, их поддерживающий. Подойдут, например, Internet Explorer, Mozilla или Opera.

Серверные языки web-программирования


Сервер – это компьютер, на котором размещён сайт, и программное обеспечение, обрабатывающее запросы браузера к страницам сайта.

Обработка скриптов на серверных ЯВП отличается от клиентских:
пользователь пытается перейти на страницу (вводит url в адресную строку или переходит по ссылке);
все скрипты, связанные с этой страницей обрабатываются на сервере;
пользователю отображается html-документ.

То есть, увидеть код скрипта на серверном ЯВП посетителю страницы не удастся. Таким образом, работоспособность скрипта напрямую зависит теперь не от пользовательского браузера, а от сервера, на котором размещён сайт.


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

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

Функциональность серверных ЯВП практически безгранична, но изучение их достаточно трудоёмко, что бы не говорили создатели языков.


В последнее время широкое применение получили СУБД, обращение к которым происходит посредством структурированного языка запросов - Structured Query Language (SQL). Очевидно, что для работы с такими базами данных необходимо непосредственное знание SQL. К таким СУБД относятся, например MySQL и PostgreSQL .

Среди серверных ЯВП наиболее распространены PHP, SSI и Perl.

Для изучения серверных ЯВП и работы с ними нужно несколько больше, чем для клиентских – сервер, интерпретатор языка и СУБД.

В целом, из всего вышесказанного можно сделать вывод о том, что для несложных скриптов или для начинающих web-мастеров прекрасно подойдёт какой-либо из клиентских ЯВП. Для более же серьёзных разработок придётся изучать язык серверный.