Новшества и версии
Сейчас есть две актуальные версии 0.0.71 и 0.1.2, которые можно установить соответственно:
npm install impress@0.0.71 # старый стиль приложений с поддержкой развертывания на множество серверов npm install impress@0.1.2 # новый стиль приложений с сендбоксингом и поддержкой множества серверов
Все новогодние праздники были цинично потрачены на реализацию сендбоксинга и глубокий рефакторинг Impress. Переписано до 80% ядра и версия 0.1.2 оттестирована на приложениях, написанных для 0.0.71 с их минимальной коррекцией. Функционально в этих версиях все одинаково, кроме сендбоксинга и особенностей написания приложений. Рефакторинг из старого стиля в новый очень прост и сводится к замене обращения к API сервера приложений. На днях я выпущу небольшую инструкцию по портированию, т.к. есть уже достаточное количество внешних разработчиков, использующих Impress, подложить им такой подарок на НГ не хотелось бы. С инструкцией же они, справятся с портированием за несколько минут, надеюсь.
Итак, функциональные новшества, присутствующие в обоих версиях:
- Реализация межпроцессового взаимодействия в виде трансляции сообщений между процессами через ZeroMQ (межсерверное взаимодействие) и
IPC (в рамках одного сервера). Это необходимо, чтобы пользователи, приклеенные к своему процессу, могли взаимодействовать друг с другом. - Добавлена поддержка WebSocket (ее уже давно просили) и обновлена реализация Server-Sent Events. В демонстрационном приложении есть примеры их использования. Более того, эти протоколы могут быть доступны на том же порту (например 80), на котором приложения отдают свои страницы, просто по другому URL, что позволяет обойтись без CORS (кроссдоменных запросов, а другой порт, почему-то считается уже другим доменом).
- Удалено много зависимостей, и модули используются только если они установлены и добавлены в конфигурацию. Это все благодаря библиотеке geoip-lite, которая решила вдруг оставлять 120Мб временных файлов и тяжелым драйверам БД, которые не все сразу нужны. Патч для geoip-lite я уже отправил автору, в npm его еще нет, но кому критично — ставьте через github, тут он уже доступен.
- Проведена оптимизация кеширования шаблонов, статики и обработчиков бизнес-логики, в том числе оптимизировано слежение за файловос системой и обновление кеша при изменении файлов на диске. А в новой версии, кеширование полностью переписано, чтобы обеспечить экранирование приложений в сандбоксах.
Слайд для заманивания на просмотр презентации (кликабилен)
Теперь, для пущей убедительности покажу крутой слайд, из презентации. Примеры кода в презентации актуальны только для версии 0.0.71, а булшитологические пафосные тексты актуальны и для 0.1.2, так что, просмотрите ее, чтобы получить общее представление о сервере приложений. Есть и англоязычная версия презентации. Я понимаю, что для глубокого ознакомления с Impress совершенно необходимы хорошие скринкасты, разнообразные примеры и статьи с объяснением этих примеров примеров, они готовятся и будут доступны с ближайшее время. По поводу поддержки, интенсивности разработки и выхода версий, активности исправления обнаруженных багов и пожеланий по доработе, вы можете сложить впечатление на Гитхабе. Не стесняйтесь присылать вопросы и постать issues на русском или английском.
Ссылки
На Github: https://github.com/tshemsedinov/impress
В npm: https://npmjs.org/package/impress
ссылка на оригинал статьи http://habrahabr.ru/post/200208/
Добавить комментарий