Различие между гобеленом Apache и калиткой Apache

Я попытался избежать мнения и просто изложить факты из моего опыта, однако сама природа вопроса, конечно, вызывает неопределенность и споры.

Я недавно закончил переход на докер.

Основные преимущества:

  • Обеспечение мышления без учета состояния
  • Масштабирование
  • Простота развертывания
  • Идентичная среда разработки (* массивное предупреждение - см. Ниже) )

Основные недостатки:

  • Кривая обучения
  • Абстракция окружающей среды

Перво-наперво:

[ 1113] Если ваши сервисы с высокой степенью состояния (в файловой системе), вам придется перестроить архитектуру или потерять почти все преимущества Docker. Если это так, я бы решительно сказал вам не беспокоиться на этом этапе и, возможно, рассматривать Docker как среднесрочную и долгосрочную часть более широкого проекта, продвигающегося к 12-факторному приложению. ( https://12factor.net/ )

Даже если ваша базовая архитектура готова к миграции, преимущества сильно перевешиваются недостатком кривой обучения, если ваш сайт никогда не собирается быть "огромным" Горизонтальное масштабирование - это здорово, но большинству сайтов оно никогда не понадобится, и время, затраченное на кривую, в большинстве случаев может быть использовано с большей пользой, уменьшая время выхода на рынок / итерации. Я довольно уверен в компьютерах и новых технологиях, и это заняло у меня 4 довольно солидных месяца, чтобы выглядело так же, как у вас.

Предупреждение о разработке:

Преимущество «разработки» чревато опасностью, особенно если вы на Mac. PHP требует много файлов, работающих в тандеме, для запуска вашего сайта, и различия в файловой системе означают, что это в 4 или 5 раз медленнее на вашем Mac (при запуске Docker), чем на вашем сервере. Это очень расстраивает. Есть решения, но они добавляют к кривой обучения и все еще не совершенны.

Кроме того, «мечта» об идентичных средах также имеет много кошмарных аспектов. Собираетесь ли вы принудить локальные машины использовать SSL? Тогда вам понадобятся «поддельные» самозаверяющие сертификаты на всех ваших компьютерах разработчика, и, следовательно, жалобы от браузеров каждый раз, когда вы пытаетесь посетить его. Кроме того, NGINX работает по-разному с docker-compose, чем с развертыванием стека, и есть много преимуществ для разработки с использованием compose, а не стека, поэтому использование стека на самом деле не вариант. Мне потребовалась неделя, чтобы найти решение этой проблемы.

Однако, как только эти проблемы были исправлены (мы перешли на Linux для разработки, и у нас есть сценарии для решения большинства других проблем, и нам нужно просто сказать Chrome, что я принимаю «поддельные» сертификаты каждые 2 часа или около того) по общему признанию, все очень гладко, и я рад, что у меня был этот опыт. Новые проекты, вероятно, с самого начала будут использовать преимущества докера, когда у меня появилось ощущение того, как он работает, где есть подводные камни и как исправить ситуацию.

Заключение:

Я бы посоветовал изучать докер в течение года или около того в свободное время, а не заниматься им на работе. Есть преимущество сейчас, когда мы прошли через боль, но это было МНОГО боли. И если вы узнаете это в нерабочее время, убедитесь, что вы делаете что-то, что имитирует полномасштабное производственное развертывание, с непрерывной интеграцией, тестированием, работами. С Docker так легко начать, что он обманом заставит вас думать, что освоить его одинаково легко. Это действительно не так.

45
задан Jonas 17 June 2011 в 09:42
поделиться

8 ответов

Некоторые соответствующие различия, как я их вижу:

  • Гобелен использует полустатическую страницу структура, с которой можно работать условные обозначения и циклы для достижения динамическое поведение. Калитка полностью динамичный; вы можете загрузить компоненты динамически, замените их во время выполнения и т. д. Последствия это то, что гобелен легче оптимизировать, и что Wicket больше гибкость в использовании.
  • Обе структуры примерно одинаково эффективны в исполнение, но Wicket полагается на серверное хранилище (по умолчанию текущая страница в сеансе и прошедшая страницы в "кеше второго уровня", который по умолчанию является временным файлом в файле система). Если это вас беспокоит, подумайте о том, сколько одновременных сеансов вы ожидаете получить в часы пик и рассчитать, скажем, ~ 100 КБ за сеанс (что, вероятно, на высоком уровне). Это означает, что вы можете бегать примерно поддержка 20k одновременных сессий для 2 ГБ. Скажите 15k, потому что вам это нужно память и для других вещей. Из конечно, недостаток хранения состояние в том, что это будет работать только хорошо с привязкой к сеансу, так что это ограничение при использовании Wicket. В framework предоставляет вам средства для реализации страниц без состояния, но если вы разрабатываете полностью без гражданства приложения, которые вы могли бы рассмотреть
  • Цель Wicket - в полной мере поддерживать статическую типизацию, тогда как Tapestry больше заботится о сохранении строк кода. Таким образом, с Tapestry ваша база кода, вероятно, будет меньше, что хорошо для обслуживания, а с Wicket вы много статически типизированы, что упрощает навигацию с помощью IDE и проверку с помощью компилятора, что также хорошо для обслуживания. Кое-что сказать обоим, imho.

Я уже несколько раз читал, что люди думают, что Wicket много работает через наследование. Подчеркну, что у вас есть выбор. Существует иерархия компонентов, но Wicket также поддерживает композицию с помощью таких конструкций, как IBehavior (поверх которых, например, построена поддержка Ajax Wicket). Вдобавок ко всему у вас есть такие вещи, как конвертеры и валидаторы, которые вы добавляете к компонентам во всем мире,

41
ответ дан 26 November 2019 в 21:13
поделиться

ПЕРЕСМОТРЕЛ после учащегося Гобелена 5.

целью Калитки является попытка сделать веб-разработка подобный настольному GUI один. Им удалось сделать это действительно хорошо за счет использования памяти (HTTPSession).

Гобелен 5 цель состоит в том, чтобы сделать очень оптимизированный (для ЦП и памяти) , компонент ориентировал веб-платформу.

действительно большая ловушка для меня была ответами "Компонент поддержек калитки не сохраняющий состояние!" к аргументам "Калитка является голодной памятью". В то время как Калитка действительно поддерживает компоненты не сохраняющие состояние, они не "фокус разработки Калитки". Например, ошибка в StatelessForm не была исправлена в течение очень долгого времени - см. StatelessForm - проблема с параметрами после сбоев проверки .

  • , по моему скромному мнению, Калитка использования немного легче, пока Вы не собираетесь оптимизировать параметры веб-приложения подстройки /
  • , по моему скромному мнению, Калитку более трудно изучить, если Вы запрограммировали веб-приложения и хотите думать с точки зрения обработки запросов
  • Гобелен 5 автоматически классы компонента перезагрузок , как только Вы изменяете их. Обе платформы перезагружают разметку компонента.
  • силы Калитки разметка / разделение кода , Гобелен 5 просто дает Вам эту способность. Можно также использовать меньше подробного синтаксиса в Гобелене 5. Поскольку всегда эта свобода требует, чтобы было взято больше предостережений.
  • ядро Калитки легче отладить: пользовательские компоненты основаны на наследовании, в то время как Гобелен 5 пользовательских компонентов основан на аннотациях. С другой стороны, которая могла сделать переходы к будущим версиям легче для Гобелена тогда для Калитки.

, К сожалению Гобелен 5 учебных руководств не подчеркивают что пример кода Гобелена как 't:loop источник = "1.. 10 дюймов...' могут быть плохой практикой. Таким образом, некоторые усилия должны быть приложены к записи конвенций использования Гобелена / хорошие методы, если Ваша команда не является очень малочисленной.

Мои рекомендации :

  • Калитка Использования, когда Ваша структура страниц является очень динамичной и можно предоставить расходам 10-200 КБ памяти HttpSession на пользователя (это грубые числа).
  • Гобелен Использования 5 в случаях, когда Вам нужно более эффективное использование ресурсов
35
ответ дан Sergey 26 November 2019 в 21:13
поделиться

Калитка является очень хорошей веб-платформой. Лучше всего из всех, что я, знают. Я - использование это начиная с версии 1.3 и всегда получаю то, что я, хотят. Калитка имеет превосходную интеграцию с Spring - просто используют @SpringBean аннотацию в Вас код для введения любого пружинного боба к классам.

0
ответ дан Alexey Sviridov 26 November 2019 в 21:13
поделиться

Я думаю, что Wicket - это более простой фреймворк для использования.

Кроме того, Wicket позволяет перезагрузить класс через систему замены горячего кода вашей IDE. Это все, что требуется Wicket для запуска модифицированных версий классов текущего приложения. Для замены горячего кода применяются обычные ограничения, такие как необходимость работать в режиме отладки (Eclipse) и невозможность изменять структурные аспекты класса (например, имя класса, изменение сигнатур методов и т. Д.).

1
ответ дан 26 November 2019 в 21:13
поделиться

Вот довольно подробное сравнение из IBM Developer Works.

http://www.ibm.com/ developerworks / java / library / os-tapestrywicket / index.html? ca = drs

Обновление: ссылка мертва, но вы можете найти страницу на http://web.archive.org/web/20131011174338/ http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index. html? ca = drs

10
ответ дан 26 November 2019 в 21:13
поделиться

Мне не нравится модель программирования гобеленов, и я знаю многих разработчиков, оставляющих гобелен из-за слишком много изменений и несовместимости в развитии. См.: http://ptrthomas.wordpress.com/2009/09/14/rufbench-update-tapestry-5-and-grails/

1
ответ дан 26 November 2019 в 21:13
поделиться

Попробуйте http://incubator.apache.org/click/ . Это удивительна Java Web Framework. Некоторые люди называют это «калитка справа»; -)

0
ответ дан 26 November 2019 в 21:13
поделиться

Как я уже сказал, когда 4.1 была официальной стабильной версией:

Вы должны очень внимательно изучить историю разработки Tapestry, прежде чем приступать к ее использованию. Tapestry претерпела множество несовместимых обновлений, без продолжения поддержки более старых версий. Исправления до 4.1 больше не обрабатываются в разумные сроки. На мой взгляд, это неприемлемо для официальной стабильной версии.

Обязательство использовать Tapestry 5 означает:

вы должны стать коммиттером; нужно идти в ногу со всеми новыми разработками, как можно быстрее отказываться от старых версий; поддерживайте стабильные версии самостоятельно.

0
ответ дан 26 November 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: