Прототип аналога jRebel на Немерле
От: ionoy Эстония www.ammyui.com
Дата: 28.04.12 11:27
Оценка: 190 (4)
В мире Java есть такой удобный инструмент, который называется jRebel. В двух словах, он позволяет изменять код веб приложения без перезагрузки домена. То есть исправил ты значение переменной в контроллере, нажал ctrl+s и можешь уже обновлять страницу в браузере. Так же как если бы ты кодил на PHP или другом интепретируемом языке.

Прямой аналог на дот нете сделать нереально. В джаве есть некоторые механизмы, которых нет в CLR.
Однако варианты есть, и одним из них я решил воспользоваться.
Упрощённая схема такая:
1. Отслеживаем сохранение файлов с кодом
2. Програмно пересобираем проект
3. Подгружаем новую сборку в наш домен
4. Из ControllerFactory даём ссылку на уже новый контроллер, который в свою очередь обращается к новым типам

На практике, конечно, всё оказалось значительно сложнее, но тем не менее прототип работает.
Посмотреть можно тут: https://bitbucket.org/ionoy/easymvc_nemerle/

Хочу напомнить, что это прототип, так что скорее всего содержит кучу багов. Тем не менее, на некоторых достаточно крупных проектах я его уже тестировал.

Из-за непредсказуемости ошибок, некоторые части писались в стиле Debug Driven Development, так что качество кода пока хромает.

Первоначально писал на C#, но довольно быстро понял, что нервов не хватит чтобы на нём же и закончить. Поэтому я принял решение перевести всё Немерле. Это сильно упростило написание и поддержку кода, так как я смог формализовать задачу и отразить её в примитивах языка.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.