Я попытался избежать мнения и просто изложить факты из моего опыта, однако сама природа вопроса, конечно, вызывает неопределенность и споры.
Я недавно закончил переход на докер.
Основные преимущества:
Основные недостатки:
Перво-наперво:
[ 1113] Если ваши сервисы с высокой степенью состояния (в файловой системе), вам придется перестроить архитектуру или потерять почти все преимущества Docker. Если это так, я бы решительно сказал вам не беспокоиться на этом этапе и, возможно, рассматривать Docker как среднесрочную и долгосрочную часть более широкого проекта, продвигающегося к 12-факторному приложению. ( https://12factor.net/ )
Даже если ваша базовая архитектура готова к миграции, преимущества сильно перевешиваются недостатком кривой обучения, если ваш сайт никогда не собирается быть "огромным" Горизонтальное масштабирование - это здорово, но большинству сайтов оно никогда не понадобится, и время, затраченное на кривую, в большинстве случаев может быть использовано с большей пользой, уменьшая время выхода на рынок / итерации. Я довольно уверен в компьютерах и новых технологиях, и это заняло у меня 4 довольно солидных месяца, чтобы выглядело так же, как у вас.
Предупреждение о разработке:
Преимущество «разработки» чревато опасностью, особенно если вы на Mac. PHP требует много файлов, работающих в тандеме, для запуска вашего сайта, и различия в файловой системе означают, что это в 4 или 5 раз медленнее на вашем Mac (при запуске Docker), чем на вашем сервере. Это очень расстраивает. Есть решения, но они добавляют к кривой обучения и все еще не совершенны.
Кроме того, «мечта» об идентичных средах также имеет много кошмарных аспектов. Собираетесь ли вы принудить локальные машины использовать SSL? Тогда вам понадобятся «поддельные» самозаверяющие сертификаты на всех ваших компьютерах разработчика, и, следовательно, жалобы от браузеров каждый раз, когда вы пытаетесь посетить его. Кроме того, NGINX работает по-разному с docker-compose, чем с развертыванием стека, и есть много преимуществ для разработки с использованием compose, а не стека, поэтому использование стека на самом деле не вариант. Мне потребовалась неделя, чтобы найти решение этой проблемы.
Однако, как только эти проблемы были исправлены (мы перешли на Linux для разработки, и у нас есть сценарии для решения большинства других проблем, и нам нужно просто сказать Chrome, что я принимаю «поддельные» сертификаты каждые 2 часа или около того) по общему признанию, все очень гладко, и я рад, что у меня был этот опыт. Новые проекты, вероятно, с самого начала будут использовать преимущества докера, когда у меня появилось ощущение того, как он работает, где есть подводные камни и как исправить ситуацию.
Заключение:
Я бы посоветовал изучать докер в течение года или около того в свободное время, а не заниматься им на работе. Есть преимущество сейчас, когда мы прошли через боль, но это было МНОГО боли. И если вы узнаете это в нерабочее время, убедитесь, что вы делаете что-то, что имитирует полномасштабное производственное развертывание, с непрерывной интеграцией, тестированием, работами. С Docker так легко начать, что он обманом заставит вас думать, что освоить его одинаково легко. Это действительно не так.
Некоторые соответствующие различия, как я их вижу:
Я уже несколько раз читал, что люди думают, что Wicket много работает через наследование. Подчеркну, что у вас есть выбор. Существует иерархия компонентов, но Wicket также поддерживает композицию с помощью таких конструкций, как IBehavior (поверх которых, например, построена поддержка Ajax Wicket). Вдобавок ко всему у вас есть такие вещи, как конвертеры и валидаторы, которые вы добавляете к компонентам во всем мире,
ПЕРЕСМОТРЕЛ после учащегося Гобелена 5.
целью Калитки является попытка сделать веб-разработка подобный настольному GUI один. Им удалось сделать это действительно хорошо за счет использования памяти (HTTPSession).
Гобелен 5 цель состоит в том, чтобы сделать очень оптимизированный (для ЦП и памяти) , компонент ориентировал веб-платформу.
действительно большая ловушка для меня была ответами "Компонент поддержек калитки не сохраняющий состояние!" к аргументам "Калитка является голодной памятью". В то время как Калитка действительно поддерживает компоненты не сохраняющие состояние, они не "фокус разработки Калитки". Например, ошибка в StatelessForm не была исправлена в течение очень долгого времени - см. StatelessForm - проблема с параметрами после сбоев проверки .
, К сожалению Гобелен 5 учебных руководств не подчеркивают что пример кода Гобелена как 't:loop источник = "1.. 10 дюймов...' могут быть плохой практикой. Таким образом, некоторые усилия должны быть приложены к записи конвенций использования Гобелена / хорошие методы, если Ваша команда не является очень малочисленной.
Мои рекомендации :
Калитка является очень хорошей веб-платформой. Лучше всего из всех, что я, знают. Я - использование это начиная с версии 1.3 и всегда получаю то, что я, хотят. Калитка имеет превосходную интеграцию с Spring - просто используют @SpringBean аннотацию в Вас код для введения любого пружинного боба к классам.
Я думаю, что Wicket - это более простой фреймворк для использования.
Кроме того, Wicket позволяет перезагрузить класс через систему замены горячего кода вашей IDE. Это все, что требуется Wicket для запуска модифицированных версий классов текущего приложения. Для замены горячего кода применяются обычные ограничения, такие как необходимость работать в режиме отладки (Eclipse) и невозможность изменять структурные аспекты класса (например, имя класса, изменение сигнатур методов и т. Д.).
Вот довольно подробное сравнение из 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
Мне не нравится модель программирования гобеленов, и я знаю многих разработчиков, оставляющих гобелен из-за слишком много изменений и несовместимости в развитии. См.: http://ptrthomas.wordpress.com/2009/09/14/rufbench-update-tapestry-5-and-grails/
Попробуйте http://incubator.apache.org/click/ . Это удивительна Java Web Framework. Некоторые люди называют это «калитка справа»; -)
Как я уже сказал, когда 4.1 была официальной стабильной версией:
Вы должны очень внимательно изучить историю разработки Tapestry, прежде чем приступать к ее использованию. Tapestry претерпела множество несовместимых обновлений, без продолжения поддержки более старых версий. Исправления до 4.1 больше не обрабатываются в разумные сроки. На мой взгляд, это неприемлемо для официальной стабильной версии.
Обязательство использовать Tapestry 5 означает:
вы должны стать коммиттером; нужно идти в ногу со всеми новыми разработками, как можно быстрее отказываться от старых версий; поддерживайте стабильные версии самостоятельно.