Меня попросили рассказать как сделать Windows приложение для управления серверной базой и контентом.
Дано: есть серверный движок галереи, который позволяет пользователям регистрироваться и постить свои картинки. Ну и показывает запощенное всем, позволяя выбирать критерии показа (когда запощено, кем запощено и пр.). Итак, движок работает сам по себе, в процессе работы создавая базу данных пользователей, базу данных картинок и собственно картинки.
Задача: нужно создать Windows приложение, которое сможет просматривать/изменять базы данных и добавлять/удалять картинки. Предположим, что прямое подключение к базам данных невозможно или неудобно (например, используется свой движок БД, или внешние подключения к движку запрещены), то же касается и файлов. В таком случае, нужно писать маленькую CMS - Content Managment System (систему управления контентом), которая будет принимать команды от нашей клиентской Windows программы и исполнять их на сервере. Лично я считаю, что для небольших систем лучше всего подходит web-интерфейс управления, но некоторым хочется именно Windows, что ж, вольному - воля. У Desktop интерфейса есть преимущество в траффике - ему не надо качать страницы, а только полезную информацию на них. С другой стороны, web интерфейс ничего не требует, кроме подключения - даже свой компьютер не обязателен.
Решение: писать обе части (серверную и клиентскую) полностью мне лень, поэтому рассмотрим только основные блоки и одну функцию управления базами и одну - файлами. Остальные пишуться по образу и подобию. Тем более, что вариантов написания интерфейса - несколько десятков. Постараюсь хотя бы упомянуть основные в статье.
В самом начале предстоит выбрать один из двух основных путей - общение между двумя частями ведется через стандартный протокол, или через наш собственный? Стандартный протокол, выгоден тем, что серверную часть можно просто разместить в cgi-bin сервера и обращаться у ней по мере надобности, тогда скрипт работает только когда он нужен. Собственный протокол обеспечивает (или может обеспечить) большую мобильность, меньший траффик, иногда большую безопасность, но требует постоянно висящего демона на сервере, который будет слушать клиентские обращения. Само собой разумеется, что использование стандартного (web) протокола позволяет писать программы значительно быстрее и дешевле. Перед выбором - подумайте, будет ли для вас критично увеличение траффика на 10% при каждом запросе? будут ли вас пытаться взломать профессиональные хакеры или спецслужбы? если нет - защищенные протоколы и, тем более, собственные, вам не нужны.
Рассмотрим сначала серверную часть, с ней проблем меньше. Пишем обычный perl скрипт для web обращения.
[code]#!/usr/bin/perl
if ($ENV{'REQUEST_METHOD'} eq "POST") { #метод может быть GET если угодно
read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); #считываем входящие параметры для POST
# $in = $ENV{'QUERY_STRING'}; # считываем входящие параметры для GET
if (!$in || $in =~ /
бесплатная система управления сайтом