KLone: тотальный Веб

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


Самый маленький фреймворк

Фреймворки - это, в первую очередь, средства для упрощения и ускорения разработки приложений. Они представляют собой некий универсальный каркас и концепцию приложения, универсальную структуру каталогов, а также набор типовых функций и компонентов. Различных фреймворков уже создано немало. Становятся всё более и более популярны специальные веб-фреймворки для создания веб-проектов, о чём косвенно свидетельствуют зарождающиеся "священные войны" в Интернете между поклонниками того или иного решения. Так, например, широко известны и обсуждаются Codeigniter на языке PHP, Django на языке Python, Catalyst на Perl, Rails на Ruby, Wicket на Java.

KLone - самый маленький и, наверное, самый оригинальный из своих собратьев веб-фреймворков. Он создан компанией KoanLogic, которая специализируется на проектах для embedded-систем - до сих пор не знаю, как это правильно перевести на русский язык. Этот фреймворк не может похвастать огромной функциональностью, зато он позволяет создавать компактные, заключённые в один бинарный файл веб-приложения, совмещённые с http-сервером. То есть никакого сервера Apache для функционирования приложений на основе KLone не требуется.

Языком программирования KLone является старый добрый Си, и, соответственно, получаемые программы компилируются и не требуют внешнего интерпретатора вроде PHP, Ruby и т.д. Язык Си, кстати, предполагает, что приложения можно писать даже на ассемблере. Так что, возможно, не за горами время, когда и веб-проекты на машинном коде тоже писать будут.

Особенности этого фреймворка накладывают свои особенности на сферу применения. Приложения, созданные на базе KLone, хорошо подойдут для небольших устройств, имеющих доступ к Интернету. Например, простенький веб-сервис непосредственно на вашем мобильнике - почему бы и нет? Также подобные приложения можно использовать для удалённого мониторинга и управления различными устройствами через веб-интерфейс. Естественно, могут оценить KLone и хакеры. Для обычных же громоздких проектов уровня Enterprise со всеми этими ужасными базами данных Klone, естественно, не подойдёт.

Кстати, очень интересно экспериментировать с этим фреймворком как с платформой для локальных веб-приложений наподобие AdobeAIR. По крайней мере, создавать под "Линукс" фронтенды с html-интерфейсом для консольных утилит при помощи KLone в порядке экспериментов вполне возможно.


Структурный вопрос

Чтобы не изобретать велосипед, создатели KLone предлагают использовать при написании приложения привычную структуру файлов PHP. То есть исходный файл представляет собой мешанину html-кода и вставок кода на Си. Можно вообще без Си обойтись, создав исключительно простой сайт из обычных html-страниц, который фреймворк скомпилирует в исполняемый файл. Для вставки Си-кода в html-страницу KLone использует привычные угловые скобки <%!, <%, %>. Простой пример:

<%! #include <string.h> %>
<html> <head></head> <body>
<% io_printf(out, "Hello"); %>
</body> </html> 

Как видите, мало чем отличается от структуры файла PHP. Но различие в том, что KLone использует два типа блоков для вставки Си-кода. Для include, глобальных переменных, объявления функций предназначен блок <%! ... %>. Этот блок, как и положено стандарту Си, должен находиться в самом начале. Остальные же вставки используют блок <% ... %>.

В функциональном плане фреймворк содержит собственные библиотеки приёма и обработки запросов GET/POST, вывода данных, работы с сессиями и т.д. Вот, например, как выглядит функция приёма данных из формы:

name = request_get_arg(request, "Name"); 

В общем, для освоения фреймворка KLone потребуются начальные базовые знания языка Си и основы разметки HTML.


Как оно работает

Для работы нужно скачать архив SDK с исходными файлами непосредственно с сайта проекта www.koanlogic.com. Архив небольшой - размером чуть менее мегабайта.

Фреймворк KLone - это, конечно же, продукт из мира UNIX, и поэтому отлично подходит для систем "Линукс". Возможна работа этого SDK и на системах Windows, но эту возможность я не проверял, и ниже будет приведено описание работы только для линуксоидов.

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

Компиляция SDK обычная: ./configure & make. В результате будет создано рабочее окружение для создания KLone-приложений, а также скомпилируется бинарный файл kloned на основе содержимого каталога webapp. Также в каталоге build\target\klone-core-*\doc можно найти подробную документацию по всем функциям фреймворка.

Директория webapp, в свою очередь, содержит два каталога - etc и www. В первом находится конфигурационный файл, в котором задаются параметры ведения лога, а также параметры http. По умолчанию kloned использует порт 8080 на localhost. А в директории www находятся непосредственно исходники с расширением kl1. Изменив эти файлы, проект можно тут же пересобрать командой make.

Запускается kloned как демон:

#./kloned 

После чего к нему можно получить доступ через браузер по адресу http://local-host:8080.

В среде Debian и Ubuntu этот фреймворк существует в виде готового пакета. Здесь вместе с самим SDK установятся некоторые дополнительные инструменты разработки, при помощи которых из создаваемых приложений можно создавать полноценные deb-пакеты.

Следует добавить, что для более комфортной работы с фреймворком в KoanLogic создали плагин KLide для Eclipse. Скачать его можно также с сайта разработчиков.

И, конечно же, нужно сказать о лицензиях на этот фреймворк. KoanLogic распространяет KLone под двойной лицензией. Для некоммерческого употребления фреймворк распространяется по лицензии GPL. Если же продукт используется для получения прибыли, то следует поделиться оной с создателями фреймворка.


Философское заключение

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

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

Но, конечно, должно произойти ещё много открытий, прежде чем прояснятся все основные грани грядущего Веб-3.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

02 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Eugene
embedded-системы в русском языке называются встроеные системы.