Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 31. Постановка задачи. План реализации. Используемые технологии.

Дмитрий Иванов, Январь 2007
Статья впервые опубликованна 14 Мая 2012

Данный раздел статей посвящен рассмотрению практической реализации системы удаленного управления портами компьютера (на примере LPT порта) через сеть Internet. Звучит невероятно? Но это более чем реально сделать совоими собственными руками!


Система функционирует следующим образом: в сети размещается специальная Web-страница с помощью которой любой посетитель, зашедший на нее из любой точки мира сможет ввести в форму ввода число, характерезующее состояние линий регистра DATA LPT порта. По нажатии на кнопку формы, на серевер отсылается и сохраняется в базе данных введенное пользователем число с помощью серверного Web-приложения. Далее, на компьютере, подключенного к Internet, портами которого предполагается управлять, запускается приложение, которое переодически устанавливает связь с сервером, считывает текущие задачи на управление портом и выполняет их.

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

Как видно, программный комплкс состоит из трех частей:

  • Web страница с формой ввода
  • серверное Web приложение для сохранения данных, введенных пользователем
  • программа для чтения данных с сервера и управления устройствами через порты

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

Начнем с Web страницы. Здесь практически единственным выриантом является т.н. язык гипертекстовой разметрки - HTML. Это то, на чем построен любой сайт. Языком программирования его назвать трудно даже с натяжкой, поскольку он представляет из себя просто набор специальных "команд" (тэгов) которые не нужно ни компилировать ни транслировать. С помощью этих тэгов описывается внешний вид и содержание страницы, после чего этот файл сохраниется в формате *.html (*.htm). Писать можно хоть в блокноте. Потом этот файл обрабатыавается браузером (Internet Explorer, Opera) и в окне появляется сформированная страничка. Выполнение "операторв этого языка" возможно только на стороне клиента (пользователя).

Поясню поподробнее: когда Вы, например, набираете в браузере адрес www.mysite.ru/1.html будет происходить следующее: браузер посылает запрос на сервер (на котором находится этот сайт) что-то типа "здорово сервер, дай-ка мне страницу 1.html". Серевр проверяет что у него на жестком диске действительно есть такая страница. Обнаружив ее, он говорит браузеру "Ok, сейчас будет" и начинает пересылать к нам содержимое этого файла (набор тэгов). Браузер получив все это содержимое, начинает их (тэги) интерпритировать и строить в своем окне страницу. Как видно, на языке HTML можно написать то что будет происходить на компьютере пользователя (что он будет видеть) но нельзя, например, провести какие-либо дейсвия на сервере (например, создать файл). Для этого существуют другие технологии, а для решения задачи построения первой части комплекса HTML - как раз то что нужно.

Теперь поговорим о серверной части. Нам нужна программа, которая могла бы выполнять какие-либо действия не на стороне клиента а на стороне сервера (ведь введенные пользователем данные нам нужно сохранять именно там). Для решения таких задач существует большое число разнообразных языков и технологий. Например языки PHP, Perl, линейка решений от Microsoft: ASP и ASP.NET, технология CGI программирования на языке Си/C++ и даже такие экзотические вариатны как JSP (Java Server Pages) и язык Pyhton. Из всего этого разнообразия я настоятельно рекомендую язык PHP. Он очень прост в освоении, поддерживается самым распространенным сервером Apache, не требует каких-либо дополнительных инструментов при написании программ - можно хоть в блокноте писать и PHP программа готова. Еще одним интересным свойством PHP является то, что можно писать блоки кода прямо внутри обычной HTML страницы. При этом она приобретает спецефичные свойства, а именно тереят возможность быть запущенной на компьютере клиента без предварительной обработки сервером. (обязательно нужно сменить расширение файла с *.html на *.php). Поясню, как это будет работать. Например, Вы запрашиваете страницу www.mysite.ru/1.php, т.е. в файле 1.php могут содержатся записи как на языке HTML так и PHP. Серевер смотрит наличие этого файла, но сразу его клиенту не отсылает. Он замечает что расширения файла - *.php. Он берет этот файл и начинает исакать в нем команды PHP. Кагда находит, выполняет ее и двигается дальше, пока не пройдет весь файл. Результатом работы PHP кода могут быть новые строки на HTML, тогда они добавляются в содержимое формируемого файла для отправки клиенту. В результате, в составе файла не остается записей на PHP а только HTML код. Вот теперь он отсылается на машину к клиенту и его браузер показывает страницу, содержимое которой было сформировано сервером при выполнении PHP команд.

Что же касается программы для чтения данных с сервера и управления устройствами через порты - тут уж проблем особенных при решении нет. Это будет обычное Windows приложение, которое должно уметь считывать с сервера сохраненные там данные, например в виде обычного файла. Это мы сможем легко реализовать с помощью MFC в Microsoft Visual C++ 6.0. Относительно управления портами, тут особенно усложнять не будем и в качестве примера возьмем обычный LPT порт, ведь тут главное сам принцип получения данных с сервера а что с ними делать - это уже зависит от Ваших фантазии и возможностей. Программирование LPT порта, помоему, подробно расписано ранееi, поэтому останавливаться на этом моменте не будем.

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

"тереят возможность быть запущенной на компьютере клиента без предварительной обработки сервером"

ведь у меня на компьютере нет сервера! Как я протестирую работоспособность данной системы? Вы будуте абсолютно правы, задав такой вопрос. В конце концов, после разработки данной системы, если Вы действительно захотите запутить ее в Internet - Вам придется воспользоваться услугами хостинга и разместить страницы на платном сервере. Тогда можно будет оттестировать работоспособность комплекса в "последней инстанции". Но во время разработки все же хочется видеть результат по ходу работы а не в самом конце. Поэтому любой Web-разработчик обязательно устанавливает у себя на компьютере локальный Web-сервер, который может обрабатывать PHP станицы. Мы тоже обязательно сделаем также и поставим этот загадочный "сервер" себе на машину. Это позволит нам без использования реального сервера в сети полноценно протестировать работу комплекса. Не переживайте, установка и работа с серевром очень проста и не требует каких-либо спецефических знаний.



© Дмитрий Иванов
Январь 2007
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2024