Статьи

Swift на стороне сервера: сравнение Vapor и Perfect

Одна из причин, по которой Swift стал основным игроком в веб-разработке, заключается в том, что существует множество отличных качественных сред для создания веб-приложений. Не все рамки созданы равными, и не все рамки кажутся одинаковыми. Моя цель — сравнить Perfect и Vapor с точки зрения их популярности, простоты использования, возможностей и сообщества; чтобы помочь вам решить, какие рамки подходят именно вам.

Фоны Perfect и Vapor Frameworks

Vapor имеет частную поддержку консультанта, и Perfect собрал $ 1,5 млн в начальном финансировании в прошлом году. С социальной опорой, которую Perfect имеет как по старшинству, так и по количеству, можно сказать, что он самый популярный. С другой стороны, Vapor выпустили версию 1 в сентябре 2016 года (четыре месяца назад на момент публикации), и ее популярность почти соответствовала уровню совершенства в звездах и публичной активности. Популярность сложно измерить, поэтому приведу факты по состоянию на март 2017 года, и я позволю вам решить:

Отлично

  • На GitHub больше звезд (на 25% больше)
  • Намного больше последователей в твиттере (~ 41k до ~ 1.4k)
  • Идеально было дольше (октябрь 2016 г.)
  • Поскольку в Slack меньше шума, основная команда отвечает на вопросы

пар

  • Имеет больше пользователей на Slack (почти вдвое)
  • Больше участников, чем Perfect (71 против 36)
  • Больше активности в каналах Slack

Сообщество Vibe

Для меня одна из самых больших метрик, которую я использую для оценки жизнеспособности любой технологии, — это культура людей, которые ее создают. Если вы проанализируете сообщество, стоящее за какой-либо компанией или техническим проектом, вы обнаружите общую тенденцию: прозрачные и добрые сообщества превзойдут закрытые и абразивные. Я решил присоединиться к Slacks как Vapor, так и Perfect, и занялся кавер-покрытием. То, что я обнаружил, было менее опытным, но открытым сообществом вокруг Vapor, и старшим, но элитарным сообществом вокруг Perfect.

Сообщество Vapor: живое, доброе и прозрачное

Программное обеспечение с открытым исходным кодом (OSS) опирается на открытое сотрудничество, и Vapor обладает лучшей культурой среди всех сред Swift в этой области. Платформа лицензируется как MIT, которая является одной из самых щедрых и открытых лицензий, которые можно назначить для их проекта. Они также поддерживают общедоступную дорожную карту через вехи и проблемы на GitHub. Обе эти точки учитывают быстрые петли обратной связи и итерации от сообщества.

Повторяющаяся тема, на которую я обратил внимание, была о том, что Vapor было «веселым» сообществом, частью которого я был. С активными открытыми вопросами и запросами на GitHub очевидно, что Vapor заботится о том, чтобы включить идеи и мнения сообщества в целом. Я немного поговорил с Джоаннисом, Мэттом и Тимом, которые откровенно поделились своими мыслями и мнениями. У Джоанниса было много общего с рамками и ее будущим, и они проявили преданность делу и заботу о сообществе. Если эти люди являются точной выборкой сообщества Vapor в целом, это предвещает хорошее будущее для этой структуры. Я отредактировал и отредактировал оригинальные стенограммы, для ясности:

Разработчики Vapor и сообщество очень открыты. Тестирование и документы первоклассные. Безопасность типов, очевидно, является большой частью Vapor. Они делают это блестяще; лучше, чем любой другой веб-фреймворк и даже большинство, если не все, библиотеки. У Vapor есть и другие действительно хорошие детали, такие как API. Я думаю, что все, кто действительно участвовал в проекте SwiftX год назад, вовлечены в эту модульность. Это действительно положительный момент здесь.

— Джоаннис

Сообщество Vapor гордится культурой, сотрудничеством и модульностью. Vapor поставляется из коробки со всеми инструментами, необходимыми для создания наиболее типичных веб-приложений. Это поддерживает Rapid Application Development (или «RAD») концепцию, основанную на сообществе Rails. RAD считает, что существует правильный и простой способ масштабирования веб-приложений; фреймворк должен быть продуман в соглашениях и функциях, чтобы помочь разработчикам быстро и безопасно создавать многофункциональные приложения. Принцип RAD был принят Laravel, Django и Vapor.

Мне нравится, как легко написать провайдера или расширить рамки. Сообщество здесь делает отличную работу для пакетов.

— Матиас Людвиг

Идеальное сообщество: опытный, зрелый, разносторонний

Я должен признать, что в начале моего исследования я немного пристрастился к Perfect из-за некоторых сомнительных комментариев к reddit. Несмотря на то, что в сообществе Perfect все еще существует некоторая затяжная конкуренция и горячие настроения, основатели были в основном нейтральными, знающими и настойчивыми. Напряженность между общинами в прошлом, похоже, уменьшилась, и, похоже, теперь обе стороны испытывают взаимное уважение.

Я думаю, что Perfect начинается с тонкого размера, и вы добавляете в него компоненты по мере создания, а Vapor запускается гораздо больше, и вам нужно избавиться от вещей, которые вы не используете (если вас беспокоит вздутость). По крайней мере, это мой отрыв от того, что я видел с [Vapor]. Они могут быть за или против в зависимости от того, что вы ищете.

— Кайл Джессап

Основатели Perfect были очень лаконичны, когда рассказывали о минусах фреймворка. Команда также не согласилась с разработчиками, проводящими параллели с Vapor. В целом, я чувствовал, что был в чате с эго. Сказать, хорошо это или плохо — это вопрос перспективы.

Причудой сообщества Perfect является то, что они не используют проблемы GitHub для отслеживания ошибок или запросов функций. В глубине их readme они показывают, что они поддерживают JIRA, что требует от вас создать отдельную учетную запись. Тем не менее, несмотря на отсутствие публично отслеживаемых проблем, они разделяли открытость для обмена запросами и совместной работы через выделенную комнату Slack.

[Мы] полностью открыты для публичного участия и обратной связи

— Джонатан

Я понял, что в каждом сообществе есть экстремисты и что их взгляды и мнения не обязательно отражают целое. В некоторых моих беседах я обнаружил, что разработчики Perfect совершеннее относятся к Vapor, в то время как другое племя казалось более вежливым. И все же Идеальное сообщество может быть несколько оправданным. Эго изобилуют в других сообществах, и многое из этого сводится к опыту.

Знакомство и простота использования

Hello Worlds

Вот как может выглядеть приложение «Hello, World» Vapor:

let drop = Droplet()

drop.get("hello") { request in
    return "Hello, world!"
}

Я нашел API Vapor очень выразительным и лаконичным, в то время как много абстрагировал.

Вот пример «Hello, World», построенный на Perfect:

 var routes = Routes()
routes.add(method: .get, uris: ["/"], handler: indexHandler)

func indexHandler(request: HTTPRequest, _ response: HTTPResponse) {
  response.appendBody(string: "Hello world")
  response.completed()
}

Первые шаги

При работе с любой новой платформой я считаю, что самым большим препятствием для входа является время установки и настройки. Если процесс создания приложения требует много шагов, то вы, возможно, слишком расстроены, чтобы продолжить. И Vapor, и Perfect имеют богатую документацию и примеры. Кроме того, процесс установки для обеих платформ был «легким» в зависимости от вашей перспективы.

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

Если вы работали в Интернете с другими фреймворками, то Vapor, вероятно, вам понравится больше всего. Он очень похож на другие популярные веб-фреймворки и поставляется с инструментом CLI, который делает системные задачи очень простыми и легкими.

Скриншот идеального помощника

С обеих точек зрения Perfect получает «A» за усилия по разработке Perfect Assistant. Помощник является родным приложением macOS, которое позволяет создавать и создавать новый проект с графическим интерфейсом. В них включены шаблоны шаблонов, с которых вы можете начинать строительные леса и выполнять большую часть процесса установки и настройки. Этот уровень зрелости в установке является редким для новой платформы. Я приветствую их усилия, направленные на то, чтобы в Perfect было легко перейти.

Скриншот панели инструментов Vapor

Vapor не сильно отстают в своей простоте настройки. Можно утверждать, что для более опытного разработчика их процесс еще лучше. Большинство старших разработчиков предпочитают строить через командную строку. Это позволяет вам наблюдать за процессом сборки и в большей степени способствует изучению внутренней работы базовых компонентов. Vapor создала программу CLI для установки, настройки и управления проектами. Несмотря на то, что у Perfect есть хороший GUI Assistant, первоначальный процесс установки и запуска приложения «Hello, World» на самом деле занял намного больше времени, чем с Vapor. Я работал с тремя шагами копирования / вставки из документации Vapor, и каждый шаг был элегантным и простым. Если мне придется выбирать победителя, основываясь на моем собственном опыте преподавания и строительства, то для меня очевидным победителем будет Vapor.

Ориентиры

Когда дело доходит до тестов, между Perfect и Vapor начинает проявляться более широкий разрыв. Они могут выявить недостатки в основе, которые могут оказаться проблематичными в производстве. По аналогии с усилением ядра, если ядро ​​фреймворка не максимально улучшено, то модули, расширяющие эту фреймворк, начнут усугублять проблемы с производительностью. Райан Коллинз (Ryan Collins) провел большое исследование, сравнивая производительность Perfect и Vapor на macOS и Linux.

Райан сообщает, что Perfect превосходит Vapor на Mac практически по всем направлениям. Perfect имеет лучшее время сборки, использование памяти, использование потоков, количество запросов в секунду и задержку.

Завершение

На высоком уровне я могу заключить следующее: Vapor лучше всего подходит для быстрой разработки приложений, а Perfect лучше всего подходит для создания перфорированных приложений. Обе платформы почти одинаково подходят для большинства качественных направлений: популярность, поддержка сообщества и стремление «выиграть» будущее серверного Swift.

Дальнейшее чтение и источники