Каковы были бы недостатки создания веб-сайта исключительно в Eiffel с использованием EWF (Eiffel Web Framework)?

Мы хотим создать веб-сайт на основе существующего ядра бизнес-уровня Eiffel, которое работает над базой данных MS SQL Server. В настоящее время я рассматриваю преимущества и недостатки написания веб-уровня и мобильного уровня либо исключительно в Eiffel, либо исключительно в типичных веб-стеках, либо в каком-то гибриде.

Для нас у чистого Eiffel есть явные преимущества, не последними из которых являются:

  1. Механизмы наследования и других языковых обозначений, которых нет в других языках.
  2. Компилятор не может заглянуть в код других языков, поэтому мы находимся в том же невыгодном положении, когда вычеркиваем Eiffel во что-то другое.
  3. Auto-Test — это то, на что мы сильно полагаемся в нашем коде Eiffel, который использует явное преимущество Design by Contract. В других языках мы теряем эту силу и остаемся с TDD (например, их версия Auto-Test в Eiffel).
  4. Теперь нам нужно узнать больше, чем: Eiffel, HTML-5, CSS-3, JS и любые другие JS-фреймворки, которые мы используем.
  5. Каждый новый язык и инструмент усложняют проект.
  6. Eiffel-программы компилируются в C --> EXE-файлы, которые работают намного быстрее, чем их скриптовые и интерпретируемые аналоги.

Я думаю, что есть также некоторые явные преимущества для существующих языков, отличных от Eiffel:

  1. Существующие фреймворки и инструменты позволяют довольно быстро разрабатывать простые и модерируемые веб-сайты и мобильные приложения.
  2. Существующие «лучшие практики» не так уж ужасны и позволяют создавать достаточно надежный и удобный в сопровождении код.

Я не уверен, каковы все преимущества и недостатки, поэтому я спрашиваю. Однако, в конце концов: наш основной бизнес-пакет — чистый Eiffel. Это никогда не изменится.

Заранее спасибо за отзыв!


person Larry    schedule 19.03.2015    source источник


Ответы (2)


Вот что я могу сказать по своему опыту (я создал несколько веб-приложений в разных фреймворках, в том числе одно в Eiffel). Во-первых, Eiffel Web Framework уже вполне пригоден для использования. Преимуществом других фреймворков являются их особенности. Вот список основных проблем, с которыми я столкнулся, когда создавал свое веб-приложение с помощью Eiffel:

  • Мне пришлось самому создать дизайн MVC (другие фреймворки, такие как Django, Rails или Laravel, делают это автоматически).
  • Отсутствие Эйфеля — хорошая система шаблонов. Библиотека Smarty хороша, но ей действительно не хватает некоторых действительно хороших функций шаблонов, которые есть у других. Кроме того, попытка работать с файлом UTF-8 в Smarty может быть довольно сложной (для меня это было проблемой).
  • Мне пришлось управлять сеансом на основе файлов cookie, потому что в Eiffel Web Framework он был довольно примитивным.
  • Процесс выпуска (удаление Nino) был непростым и не имел хорошей документации (я использовал Apache, я не знаю о IIS)

Вот и все, кроме этого, все прошло довольно гладко.

person Louis M    schedule 19.03.2015
comment
Привет Луи! Спасибо за очень быстрый и полезный ответ. Я с нетерпением жду ответа от других. Возможно, я смогу задать вам дополнительные вопросы, основываясь на ваших ответах выше: - person Larry; 19.03.2015
comment
1. Eiffel не хватает хорошей системы шаблонов. Глядя на Smarty, можно понять, что это просто система замены тегов, в которой HTML-шаблоны загружаются с замещающими тегами, которые затем передаются клиенту сервером. Это в принципе? Если да, то я не понимаю, почему такие шаблоны нельзя хранить как константы {STRING} класса Eiffel с тегами и заменять при вызовах {STRING}.replace_substring_all(s). - person Larry; 19.03.2015
comment
2. Меня беспокоит управление сеансом, и я спрошу об этом команду EWF. 3. Почему вы решили использовать Apache Vs. Нино? Кажется, что если вы используете Нино, то процесс выпуска довольно прост. 4. Что насчет процесса выпуска было сложным? Сердечно благодарю за ответы! P.S. — Я слышу ГРОМКО И ЯСНО разглагольствования о плохой документации и СОГЛАСЕН! Это область крайней нужды. - person Larry; 19.03.2015
comment
1 - Smarty - это не только система замены строк. Вы можете добавить к нему некоторую логику, например, перебирать список или условие. Итак, нет, я не думаю, что это можно заменить простым вызовом replace_substring_all. 2 - Хорошо. 3 - Насколько я понимаю, Нино - это только средство отладки (чтобы можно было отлаживать прямо в EiffelStudio). Поэтому я думаю, что с точки зрения функций и безопасности я больше доверяю Apache. 4. Трудно заставить виртуальный хост принять программу Eiffel. Но опять же, возможно, я сделал это неправильно (документация не очень помогла мне в этом процессе). - person Louis M; 19.03.2015
comment
Что касается Smarty, это больше, чем просто замена тегов. Он был вдохновлен smarty.net и имеет условие, цикл, поддержку переменных и другие. Это потребует улучшения, связанного с юникодом или utf-8, но сейчас его можно использовать. Но я также согласен с Луи, что если бы у нас была лучшая библиотека шаблонов, это не помешало бы. - person Jocelyn; 23.03.2015
comment
Что касается проблем с развертыванием EWF с использованием apache и libfcgi, ничего особенного для Eiffel или EWF. Вы можете обратиться к любой документации по libfcgi и apache2. Однако я согласен, что проект EWF должен предоставить больше документации для этой конкретной задачи и, в конечном итоге, инструмент для создания параметров конфигурации apache2. - person Jocelyn; 23.03.2015
comment
Что касается управления сессиями, Луис, было бы здорово, если бы вы могли поделиться своей системой управления сессиями в виде отдельной библиотеки или внести свой вклад в проект EWF. Не стесняйтесь обращаться ко мне, если это необходимо. - person Jocelyn; 23.03.2015
comment
Конечно, я могу поделиться своей работой по управлению сессиями в будущем. Но пока у меня нет времени документировать это и создавать настоящую библиотеку. Когда я это сделаю, я выложу его на свой гитхаб. - person Louis M; 24.03.2015

Следующий список минусов с моей наивной точки зрения:

  1. Пакет EWF не закончен, в будущем у него будет больше хороших возможностей, поэтому вам может потребоваться следить за новой разработкой, чтобы воспользоваться преимуществами новых функций.
  2. Компилятор Eiffel делает невозможным обновление веб-программы на лету, ее необходимо перекомпилировать и повторно развернуть.
  3. Если программа будет многопоточной, вам необходимо изучить структурированный способ работы с параллелизмом на основе модели SCOOP.
  4. Некоторые инструменты (например, процессоры XSLT) не сразу интегрируются в EWF, вам может потребоваться сделать это самостоятельно.
  5. Текущий API EWF является довольно низкоуровневым, поэтому, прежде чем высокоуровневые фреймворки, построенные на основе EWF, станут широко распространенными, вам может потребоваться больше низкоуровневого программирования, чем ожидалось (под низкоуровневым я в основном подразумеваю способ генерации HTML/ XML/или какой-либо другой формат, который будет создавать ваш веб-сервис).
  6. Необходимость использовать только один язык для выполнения логики приложения и генерации HTML, что упрощает отладку, может снизить требования к разработчикам и их навыкам, что может повлиять на вашу бизнес-модель.
  7. Существует несколько инструментов, предназначенных для решения конкретных задач, таких как вики, простое создание веб-страниц, авторизация и т. д., но вам может потребоваться усовершенствовать их, чтобы получить более богатую функциональность, а также разработать архитектуру вашего программного обеспечения, поскольку некоторые идиомы и шаблоны использования еще не установлены.
person Alexander Kogtenkov    schedule 19.03.2015
comment
Если развернуто в Unix (например, Gnu/Linux), вы можете сделать 2, используя системные вызовы fork и exec. Вы в основном создаете новый процесс, который прослушивает те же порты, и выполняете новую программу, а затем сигнализируете выход старого процесса. - person ctrl-alt-delor; 26.07.2015