Каковы недостатки создания веб-сайта исключительно в Eiffel с использованием EWF (Eiffel Web Framework)?
Мы стремимся создать веб-сайт поверх существующего ядра бизнес-уровня Eiffel, которое размещается над базой данных MS SQL Server. В настоящее время я рассматриваю преимущества и недостатки написания веб-и мобильных уровней либо просто на Eiffel, либо на типичных веб-стеках, либо на некотором гибриде.
Для нас есть явные преимущества для чистого Eiffel, не последним из которых являются:
- Наследование и другие механизмы обозначения языка не встречаются в других языках.
- Компилятор не может заглянуть в код других языков, поэтому у нас тот же недостаток, что мы вычеркиваем из Эйфеля что-то другое.
- Auto-Test - это то, на что мы в значительной степени опираемся в нашем коде Eiffel, в котором явно используются преимущества Design by Contract. На других языках мы теряем эту силу и остаемся с TDD (например, их версия Auto-Test на Eiffel).
- Теперь нам нужно узнать больше, чем: Eiffel, HTML-5, CSS-3, JS и все, что мы используем в рамках JS.
- Каждый новый язык и инструмент увеличивают сложность проекта.
- Программы Eiffel компилируются в C -> EXE-файлы, которые намного быстрее, чем их скриптовые и интерпретируемые аналоги.
Я думаю, что есть также некоторые явные преимущества для существующих, не Эйфелевых языков:
- Существующие фреймворки и инструменты могут довольно быстро разрабатывать простые и умеренные веб-сайты и мобильные приложения.
- Существующие "лучшие практики" не являются ужасными и создают достаточно надежный и поддерживаемый код.
Я не уверен, что все преимущества и недостатки, поэтому я спрашиваю. Однако, в конце концов: наш основной бизнес-пакет - это чистый Eiffel. Это никогда не изменится.
Заранее спасибо за отзыв!
2 ответа
Следующий список недостатков с моей наивной точки зрения:
- Пакет EWF еще не закончен, в будущем у него появятся более приятные возможности, поэтому вам, возможно, придется следовать новым разработкам, чтобы воспользоваться преимуществами новой функциональности.
- Компилятор Eiffel делает невозможным обновление веб-программы на лету, ее необходимо перекомпилировать и повторно развернуть.
- Если программа будет многопоточной, вам нужно изучить структурированный способ борьбы с параллелизмом, основанный на модели SCOOP.
- Некоторые инструменты (например, процессоры XSLT) нелегко интегрируются в EWF, вам может потребоваться сделать это самостоятельно.
- Текущий API-интерфейс EWF довольно низкоуровневый, поэтому, прежде чем высокоуровневые фреймворки, построенные на основе EWF, получат широкое распространение, вам может потребоваться выполнить больше низкоуровневого программирования, чем ожидалось (под низкоуровневым я в основном имею в виду способ генерации HTML/XML/ или какой-либо другой формат, который ваш веб-сервис собирается создать).
- Необходимость использования только одного языка для выполнения как логики приложения, так и генерации HTML, которая позволяет легко отлаживать, может снизить требования к разработчикам и их навыкам, что может повлиять на вашу бизнес-модель.
- Есть несколько инструментов, которые отвечают определенным потребностям, таким как вики, простое создание веб-страниц, авторизация и т. Д., Но вам может потребоваться улучшить их, чтобы получить более богатые функциональные возможности, а также для разработки архитектуры вашего программного обеспечения, потому что некоторые идиомы и шаблоны использования еще не установлены.
Вот что я могу сказать из своего собственного опыта (я создал несколько веб-приложений в разных средах, в том числе одно в Eiffel). Во-первых, Eiffel Web Framework вполне пригоден для использования прямо сейчас. Преимуществом других фреймворков являются их особенности. Вот список основных проблем, с которыми я сталкиваюсь при создании своего веб-приложения с помощью Eiffel:
- Мне пришлось самому создавать дизайн MVC (другие фреймворки, такие как Django, Rails или Laravel, делают это автоматически).
- Недостаток Eiffel - хорошая система шаблонов. Библиотека Smarty в порядке, но ей действительно не хватает некоторых действительно хороших шаблонных функций, которые есть у других. Кроме того, попытка работать с файлом UTF-8 в Smarty может быть довольно сложной (это было болезненно для меня).
- Мне нужно было управлять сеансом на основе файлов cookie, потому что в Eiffel Web Framework он был довольно примитивным.
- Процесс выпуска (удаление Nino) был непростым и не имел хорошей документации (я использовал Apache, я не знаю, что такое IIS)
Вот и все, кроме этого, все прошло довольно гладко.