ObjectScript в качестве нового языка для веб разработки

от автора

ObjectScript — новый встраиваемый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby, Python и PHP. Вы можете ознакомится с синтаксисом языка в этой статье.

За последнее время была существенно увеличена производительность виртуальной машины, стабилизировано ядро и спецификация, в язык добавлена поддержка исключений (try, catch, throw), поддержка UTF-8 BOM, вышел релиз языка OS 1.0, готовится документация и открытый сайт проекта.

ObjectScript в качестве нового языка для веб разработки

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

Для сайтов с высокой нагрузкой, использующих, например, PHP, хорошо известна связка nginx + php-fpm (fastcgi). Nginx сам по себе хороший продукт и отлично себя зарекомендовал, он отдает статику (картинки, css и т.п.), а выполнение скриптов перенаправляет на php-fpm по протоколу fastcgi. Такое решение обеспечивает высокую стабильность и быструю обработку запросов. Кроме этого, fastcgi, можно подключить к апачу и др. веб-серверам.

В качестве реализации протокола fastcgi на C++ была выбрана кроссплатформенная библиотека fastcgi, с использованием которой был разработан OS-FCGI.

OS-FCGI — это сервис, работающий по протоколу FastCGI, для разработки сайтов на ObjectScript.

Установка OS-FCGI под linux из исходников

1. склонируйте репозиторий https://github.com/unitpoint/os-fcgi

git clone https://github.com/unitpoint/os-fcgi.git 

2. выполните из под root следующие команды:

cd ./os-fcgi/ mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/ .. make make install service os-fcgi restart 

Сервис os-fcgi будет работать в 8-потоком режиме и слушать порт 9000 для обработки fastcgi-запросов.

Поддержка веб разработки

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

1. Автоматическое определение UTF-8 BOM — это три невидимых служебных байта (EF BB BF) в начале документа с кодировкой UTF-8. Если BOM присутствует, то он не будет отправлен в выходной поток (проблема с отправкой BOM встречается, например, в скриптах на PHP, которая блокирует отправку заголовков HTTP).

2. Добавлены теги <% ... %> и <%= ... %>

3. OS работает с двумя своими расширениями файлов: os и osh.

При использовании расширения os, парсер в начале файла активирует режим распознавания скрипта ObjectScript, т.е. это обычный скрипт OS.

При использовании osh (спроектировано специально для веб-разработки), файл начинается с выходного содержимого (т.е. то, что отправляется в output). Чтобы переключиться в режим скриптования, нужно использовать тег <% или <%=. Для переключения обратно в режим выходного содержимого, нужно использовать тег %>.

Тег <%= выводит в output следующее за ним значение, например, <%=value%> или <%=sprintf("%.2f", num)%>.

Также можно использовать расширения html и htm, которые обрабатываются аналогично osh. Это может быть полезно при использовании редакторов html с подсветкой синтаксиса. Для подсветки синтаксиса OS, лучше всего подходит правила подсветки синтаксиса языка JavaScript.

Первая веб страница на OS

Создадим документ index.osh в корне нашего сайта:

<!doctype html> <html>     <head>     <title>OS-FCGI FastCGI demo</title>     </head> <body>     <h1>Hello world!</h1>     <h2>ObjectScript FastCGI demo</h2>     <p>     <%         echo "Добро пожаловать!"     %>     </p> </body> </html> 

Также можно загрузить полный репозиторий сайта objectscript.org по ссылке https://github.com/unitpoint/objectscript.org с примерами, например, core.os — стартовый скрипт для веб-приложения, буферизованный вывод, автоматическая подгрузка классов при первом использовании в коде и мн. др.

Как подключить OS-FCGI к NGINX и APACHE

Пример базового конфигурационного файла для подключения сервиса OS-FCGI к NGINX:

server {     listen          80;     server_name     mydomain.com www.mydomain.com;     root            /home/myuser/mydomain.com/www;     error_log       /var/log/nginx/error.mydomain.com.log;     access_log      off;     location ~ /\.ht {         deny all;     }     location ~ /\.git {         deny all;     }     location / {         try_files $uri $uri/ /index.osh /index.os;     }     location ~* \.(jpg|jpeg|png|gif|swf|flv|mp4|mov|avi|wmv|m4v|mkv|ico|js|css|txt)$ {         access_log off;         expires 7d;     }     charset utf-8;     location ~ ^.+\.osh? {         fastcgi_split_path_info ^(.+\.osh?)(.*)$;         fastcgi_pass    127.0.0.1:9000;         fastcgi_index   index.osh;         include fastcgi_params;         fastcgi_intercept_errors    on;         fastcgi_ignore_client_abort on;         fastcgi_read_timeout    360;     } }  

Пример базового конфигурационного файла для подключения сервиса OS-FCGI к APACHE:

<VirtualHost mydomain.com:80>     ServerAdmin webmaster@mydomain.com     DocumentRoot "/home/myuser/mydomain.com/www"     ServerName mydomain.com      FastCgiExternalServer "/home/myuser/mydomain.com/www" -host 127.0.0.1:9000      <Directory "/home/myuser/mydomain.com/www">         # SetHandler fastcgi-script         AddHandler fastcgi-script .osh         AddHandler fastcgi-script .os         Options Indexes FollowSymLinks MultiViews ExecCGI         AllowOverride all         Order Deny,Allow         Deny from all         Allow from 127.0.0.1     </Directory> </VirtualHost> 

Тестирование OS-FCGI на Windows

Для того, чтобы опробовать веб программирования на OS под Windows, необходимо:

1. склонировать репозиторий проекта OS-FCGI по ссылке github.com/unitpoint/os-fcgi

2. открыть в Visual Studio решение os-fcgi\win32\os-fcgi.sln

3. выбрать конфигурацию win32 или x64, скомпилировать и запустить проект os-fcgi

4. настроить веб-сервер для обработки запросов через fastcgi

После запуска os-fcgi, он будет полностью готов для обработки запросов по протоколу fastcgi на порту 9000 в однопотоковом режиме. Примечание: под linux платформы os-fcgi реализован, как сервис и работает в 8-потоком режиме.

Использование OS-FCGI под Денвером

Чтобы быстро запустить веб приложение на OS, можно воспользоваться программным пакетом Денвер.

Создать конфигурационный файл c:\WebServers\usr\local\apache\conf\extra\httpd-oscgi.conf следующего содержания:

<VirtualHost oscgi:80>     ServerAdmin webmaster@oscgi     DocumentRoot "c:/Sources/objectscript.org/www"     ServerName oscgi 	 	FastCgiExternalServer "c:/Sources/objectscript.org/www" -host 127.0.0.1:9000 	 	<Directory "c:/Sources/objectscript.org/www"> 		# SetHandler fastcgi-script 		AddHandler fastcgi-script .osh 		Options Indexes FollowSymLinks MultiViews ExecCGI 		AllowOverride all 		Order Deny,Allow 		Deny from all 		Allow from 127.0.0.1 	</Directory> </VirtualHost> 

Примечание: c:\WebServers — это стандартный путь при установке Денвера, нужно его заменить на ваш путь при необходимости, вместо c:/Sources/objectscript.org/www необходимо правильно прописать путь к тестовому сайту.

Отредактировать c:\WebServers\usr\local\apache\conf\httpd.conf, необходимо найти фразу: Если вы вручную хотите создать виртуальный хост и добавить подключение httpd-oscgi.conf. Пример части httpd.conf со сделанными изменениями:

# Если вы вручную хотите создать виртуальный хост со специфическими  # настройками, то сделайте это сразу же после данного комментария.   Include conf/extra/httpd-oscgi.conf 

Теперь можно перезапустить Денвер и открыть в браузере адрес oscgi/ (только не забудьте добавить в папку сайта файл index.osh, описанный ранее).

Приветствуются коментарии, отзывы, пожелания. Удачи!

Спасибо: Игорю Богомолову за разработку cmake конфигурации и настройку сервиса os-fcgi под linux.

Другие релевантные статьи об ObjectScript:

ссылка на оригинал статьи http://habrahabr.ru/post/167387/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *