Подтвердить что ты не робот

Каков ваш опыт работы с азотом в Erlang?

Я проверил

4b9b3361

Ответ 1

Я делал очень мало с азотом до сих пор, но я отслеживал список рассылки в течение нескольких месяцев, поэтому я думаю, что у меня есть что-то полезное, чтобы сказать об этом.

В связи с синтаксисом структуры Erlang и Nitrogen я бы ответил, что это звучит как чистый случай незнания, а не непригодность. Объективно HTML не является красивым языком, и в нем много причуд. Ты привык к этому сейчас, так что это не так уж плохо. Дайте Nitrogen/Erlang шанс, и вы также обнаружите, что тоже привыкнете к нему достаточно скоро.

На ваш вопрос о сравнении с другими языками и фреймворками я бы сказал, что самое большое различие заключается в том, что с азотом весь веб-сайт обслуживается непосредственно во время выполнения Erlang. Ruby on Rails имеет такой режим, но предназначен только для тестирования. Многие другие фреймворки даже не предлагают возможности запускать все в течение одного долговременного процесса.

Запуск всего веб-приложения и его базовой инфраструктуры в течение одного долговременного процесса имеет существенные последствия для того, как работает сайт:

  • С Apache каждый ребенок удаляется с каждого N соединений, где N = 500 или около того, и вы не можете сказать, будет ли данный ребенок всегда обрабатывать все заданные клиентские запросы. Поскольку HTTP является апатридом, но веб-приложения почти всегда требуют определенного состояния клиента, ребенок Apache должен перестроить свое представление состояния клиента как часть обработки нового соединения. По умолчанию это означает возврат на диск для постоянных данных, хранящихся в этом клиенте. Существуют альтернативы, такие как memcached, но они не встроены в ядро ​​стека типа LAMP. С Erlang ничего не убивают периодически, и Erlang предлагает стандартные средства, такие как Mnesia, которые обеспечивают резервные базы данных в памяти.

    Кстати, если вы знакомы с nginx, он построен на тех же принципах, что и Erlang, и быстро по той же причине, Основное различие между nginx и экземпляром Erlang, работающим с веб-сервером, заключается в том, что nginx не является средой программирования, поэтому ему по-прежнему приходится делегировать большую часть обработки внешнему коду. Это означает, что он разделяет те же IPC и постоянные проблемы состояния, что и Apache.

  • Поскольку время выполнения остается непрерывным и является полностью функциональной средой программирования, вы, вероятно, можете создать больше частей вашей системы в Erlang, чем с помощью набора типов LAMP-LAMP. Это увеличивает эти преимущества. Различные части вашей системы могут координировать передачу сообщений и Mnesia вместо супертяжелого IPC и MySQL, и все части остаются неизменными и работают постоянно, что приводит к менее трудоемкой реконструкции состояния.

  • Десять или около того детей Apache, которые обращаются к хранилищу данных постоянного состояния клиента, являются зависанием на основе блокировки. Все фреймворки управляют блокировкой и для вас прозрачно, но то, что они не могут скрыть, - это время, необходимое для правильного выполнения всего этого.

    Erlang - нечистый функциональный язык, который подразумевает, но не требует чистоты данных; он также построен с многопроцессорной обработкой, и он проясняется до ядро ​​дизайна исполнения. Эти два факта означают, что вы менее склонны тратить время на блокировки на сервере, основанном на Эрланге, чем на наивно построенный на одной из других фреймворков. Конечно, можно оптимизировать задержки блокировки в других системах, но действительно ли это то, что вы хотите делать? Вы хотите быть в тысячной команде, которая должна научиться оптимизировать свой веб-стек после того, как услуга станет популярной, или вы предпочтете оставить все это до инструментария, чтобы вы могли потратить свое время на то, что еще никто еще не сделал

Ответ 2

Я тоже был обеспокоен неуклюжим синтаксисом Erlang. Я создал несколько инструментов, чтобы облегчить его раздражение для повседневного веб-программирования, и, возможно, вы найдете одного или обоих из них полезным:

  • ErlyDTL - это реализация Erlang для языка шаблонов Django; он недоступен в азоте, но доступен в других средах, таких как Zotonic, Erlang Web, BeepBeep и Chicago Boss.

  • Chicago Boss - это полноэкранная структура Erlang, которая делает много генерации кода, чтобы вы могли обращаться к полям данных с помощью (вместо Person#person.name Person:name())

Обратите внимание, что Nitrogen не содержит слоя базы данных, поэтому он не очень сопоставим с Rails или Django. Для всестороннего сравнения баз данных, основанных на базе данных, проверьте мой ответ на этот вопрос StackOverflow:

https://stackoverflow.com/questions/1822518/current-state-of-erlang-web-development-frameworks-template-languages/2898271#2898271

Ответ 3

Я бы посмотрел Webmachine, если бы я был вами. Это довольно просто, быстро и оставляет интерфейс до вас.

Ответ 4

Erlang Web также следует считать зрелым. Это структура MVC, в то время как Nitrogen больше основана на событиях. Это вопрос предпочтения.

Я не использовал другие инструменты, упомянутые здесь, кроме Webmachine, которые я считаю прекрасным инструментом, но это не веб-фреймворк, как другие. Это как HTTP-процессор, и идеально подходит для создания спокойных интерфейсов.

Я также предлагаю вам дать синтаксис Erlang шанс. Эрланг - один из моих любимых языков.