На проходящей в Лондоне встрече "Hacker News", разработчики компании AOL представили web-фреймворк SocketStream, реализующий парадигму разработки одностраничных web-приложений, в которых базовая страница представляет собой приложение на языке JavaScript, которое загружается один раз и динамически формирует содержимое экрана в процессе работы, подгружая с сервера данные и код по мере необходимости. По заявлению разработчиков, такой подход позволит значительно увеличить скорость работы и отзывчивость web-приложений, так как взаимодействие с сервером сведено к минимуму и данные могут обрабатываться в асинхронном режиме с использованием постоянно открытого двухстороннего канала связи.
SocketStream основан на сервере Node.js, использует для хранения данных пользователей NoSQL БД Redis и библиотеку Socket.io для организации двустороннего обмена данными между web-приложением и сервером при помощи механизма WebSockets, доступного в современных браузерах. SocketStream отходит от традиционного подхода к разработке web-приложений, при котором всё общение между сервером и клиентом производится с помощью протокола HTTP. Вместо этого фреймворк использует постоянный двунаправленный канал между сервером и клиентом, через который передаются все данные приложения, тогда как HTTP используется только для получения загрузчика и некоторых библиотек, которые будут использованы для создания канала, последующей загрузки самого приложения (HTML, CSS и JS-код) и обмена сообщениями. Такой подход позволяет писать клиент-серверные приложения, которые хоть и работают в браузере, но совершенно не зависят от web-сервера и медлительного HTTP.
Обмен сообщениями между приложением и сервером производится в формате JSON, однако всю низкоуровневую логику SocketStream скрывает, позволяя программисту использовать вызовы методов специального объекта SS, реализующего механизм удаленного вызова процедур (RPC). Чтобы сделать определенную функцию сервера доступной клиенту, достаточно просто добавить ее в список экспортируемых, после чего функция станет доступной через объект SS на стороне клиента (такой же подход действует и в обратном направлении). Предусмотрен механизм оповещений, приватных сообщений, а также возможность вызова функций сервера используя протокол HTTP.
Из других особенностей SocketStream можно отметить следующие:
- Поддержка браузеров Safari (в том числе мобильной версии для iOS) и Chrome, а также Firefox и IE с помощью flashsockets (реализация WebSockets на Adobe Flash).
- Поддержка языков CoffeeScript или JavaScript.
- Возможность использования общего кода клиентом и сервером.
- Встроенный упаковщик кода и ресурсов приложения.
- Поддержка HTTPS.
- Расширяемый механизм аутентификации.
- Консоль для отладки/прототипирования кода клиента и сервера.
- Интеграция с библиотеками JQuery и jQuery templates.
- Простой механизм расширения.
- Использование Jade и Stylus для написания HTML и CSS-кода.
Пока SocketStream находится в стадии разработки, но по заявлению разработчиков уже вполне пригоден для использования. Исходный код распространятся на условиях лицензии MIT. Видео-запись доклада, прозвучавшего на Hacker News meetup можно найти на сайте Skills Matter.
|