LINUX.ORG.RU

Написать свой веб-фреймворк

 ,


0

1

Первое правило написания своего веб-фреймворка - не пишите его.

Согласны ли вы с этим? Писали ли вы свой веб-фреймворк и почему?

Вопрос навеян веб-фреймворками для Scala, ни один из них не соответствовал моим критериям. Начал хотеть странного и ловить себя на мыслях, о которых запрещено думать... :)

★★★★★

ни один из них не соответствовал моим критериям

сразу видно опытного программиста и архитектора, одного уровня с Фаулером, Бучем, Блохом
однако при реализации вы вполне можете сломаться уже на этапе разбора uri и генерации страниц ошибок

anonymous
()
Ответ на: комментарий от anonymous

сразу видно опытного программиста и архитектора, одного уровня с Фаулером, Бучем, Блохом

ООП-шники такие пафосные. У них, чтобы просто написать удобную и полезную программу, нужно быть великим архитектором, рождающимся раз в сто лет.

однако при реализации вы вполне можете сломаться уже на этапе разбора uri и генерации страниц ошибок

Ну да, если делать это через жООПу, то лучше и не начинать.

anonymous
()
Ответ на: комментарий от anonymous

сразу видно опытного программиста и архитектора, одного уровня с Фаулером, Бучем, Блохом

Нигде нет одновременно Cake Pattern, DRY, statically typed parsing, composite view.

Уже написал базовую реализацию, запросы парсит, связывается через cake, параметр указывается оди раз

  trait BookController{ self: Controller with BookRepository =>

  implicit def bookProvider = booksDao

  route /"store"/string/"books"/classOf[Book]/"view" -> { (storeName, book)=>
      view("index", book, "store"->storeName, new Date)
  }

  route /"compose" -> compose("page1")
}

Первое парсит запрос по шаблону, в замыкании типы storeName и book вычислены автоматически их того как написан запрос. Обратите внимание, функция строго (String,Book)=>Unit. Иначе ошибка компиляции. Book получен из своего id, который был в запросе. Если его нет, то 404. Способ конвертации кастомный, мол «используй вот это dao». Если использовать Option, то не будет 404.

view покажет jsp. Имя атрибута book вычислено из типа, для store указано явно.

Интересная штука compose. С нуля через scala xml и scala xpath написан композитинг визуально похожий facelets. Особенностью будет то, что если ваша страница статическая, то она будет собрана один раз, сжата в gzip и будет отдаваться с памяти с поддержкой Etag.

vertexua ★★★★★
() автор топика
Последнее исправление: vertexua (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.