Swift - сложный серверный язык

Swift - сложный серверный язык

Поскольку Apple первоначально представила Swift как преемника Objective-C, она изменила способ кодирования в сети приложений iOS, macOS, watchOS и tvOS.

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

Активность Swift на стороне сервера продвигается тремя известными проектами: Vapor от Qutheory, IBM Kitura и Perfect, с целью дать разработчикам Swift возможность осуществлять полноценное административное администрирование. Это, по сути, превратит таких инженеров в разработчиков полного стека, аннулируя требование зависимости от Node или PHP или предлагая управление этапу BaaS, например, Google Firebase.

Цели этой статьи

В этой статье вы узнаете о серверном Swift. Сначала я поясню, как работает серверный Swift, а затем продемонстрирую вам лучшие практики, чтобы начать с систем Kitura, Vapor и Perfect.

Введение в Server Side Swift

Swift был впервые анонсирован Apple в 2014 году и быстро превратился в один из самых быстроразвивающихся языков программирования. Swift использует огромное количество лучших современных языков, например Python, что обеспечивает элегантность и простоту использования. Он освобождает инженеров от особых оков Objective-C, позволяя работать более плавно и инстинктивно.

В декабре 2015 года Apple сделала еще одно фантастическое заявление и сделала язык Swift вместе с его поддерживающими библиотеками, отладчиком и диспетчером пакетов проектом с открытым исходным кодом под лицензией Apache 2.0, открыв платформу для людей в целом, чтобы они могли делать запросы на вытягивание и вносить свой вклад. Уход от Objective-C не только соблазнил многочисленных разработчиков Objective-C, вносящих свой вклад в App Store, но и упростил разработчикам всех навыков и основ вход в экосистему Apple с помощью Swift.

В любом случае, хотя усовершенствованные устройства Apple, несомненно, облегчили разработчикам разработку внешне убедительных и привлекательных приложений для App Store, одним заметным узким местом было то, что проекты по-прежнему требовали специализированных серверных разработчиков для разработки сложных приложений, управляемых информацией. Таким образом, разработчикам iOS и macOS потребуется либо привлечь разработчиков на Python, PHP или Node, чтобы создать свою внутреннюю базу данных, либо получить такую возможность самостоятельно, что приведет к еще более сложной оставшейся задаче для достижения поставленных целей.

Хотя back-end-as-a-service (BaaS) выступил героем разработчиков iOS с помощью серверных решений без кода, например, Google Firebase и собственного специального CloudKit от Apple, которые уменьшают сложность back-end, многочисленные группы и предприятия требуют большего. Это то место, где появляется Swift на стороне сервера, позволяя вам создать полноценный многопоточный внутренний сервер с открытым исходным кодом и бесконечно настраиваемым.

Серверный Swift дает вам возможность выбрать, как у вас будет внутренний сервер, независимо от того, используете ли вы AWS, RackSpace или ваши собственные физические серверы. Вы также можете выбрать, как сбалансировать нагрузку на свои серверы (например, с помощью известных серверных решений, например, NGINX) и как сохранить вашу информацию в базе данных (будь то механизмы NoSQL, например, MongoDB, или традиционные базы данных, например , Postgres, MySQL или Oracle). Это, помимо того, что вы никогда не привязаны к какой-то одной части, вы можете переключаться, не влияя на всю кодовую базу вашего приложения.

Дело в том, что, решив использовать Swift на стороне сервера с открытым исходным кодом, например, Vapor от Qutheory, IBM's Kitura или Perfect, вы используете огромное количество модулей, которые позволяют вам проектировать серверную часть только для способ, которым вам это нужно, используя для этого возможности вашей текущей группы в Swift.

Серверный Swift звучит убедительно, но какая структура вам подходит? Затем мы исследуем каждого таким образом, начиная с Китуры.

Начиная с Китуры

Начиная с Китуры, у вас есть этап, который сначала был завершен в феврале 2016 года и вскоре приобрел безошибочное качество на WWDC Apple, говоря о вторжении IBM в поддержку серверной сети с помощью Swift, который затем должен был перейти из рук Apple в открытый источник.

Как правило, в центре внимания Китура - традиции, а не конфигурация. Он создает ваш базовый проект из заглушек, прежде чем вы выберете явные фреймворки и библиотеки, которые вы надеетесь построить. Процесс аутентификации Kitura поддерживается исключительно собственной структурой промежуточного программного обеспечения Kitura-Credentials, позволяющей вам просматривать набор систем проверки, от обычного имени пользователя / пароля до входа в онлайн-сеть и унифицированной проверки, с использованием OpenID, который обрабатывает веб-токены JSON (JWT). .

Организация ORM базы данных Китуры управляется Kuery, чтобы упростить сложность управления SQL в частности, поддерживая базовые рациональные базы данных, например, MySQL, SQLite и PostgreSQL локально, и, кроме того, другие механизмы баз данных, включая базы данных NoSQL, с помощью различных других плагинов.

Kitura дополнительно предоставляет другие ценные плагины для вещей, например, HTML-шаблоны, используя хорошо известные плагины, например, Stencil и Markdown. Созданная IBM, серверная система дополнительно выигрывает от возможности подключения к IBM Watson API и дополнительной поддержки macOS для прямой координации с их облачной платформой Bluemix. Это дает вам дополнительный выбор, наряду с другими традиционными альтернативами развертывания на серверах Linux / Unix и macOS.

Платформа абсолютно предоставляет необычный набор функций от Kuery до возможности интеграции с различными библиотеками IBM API. У него нет такого сетевого влияния, как у Vapor. Получение Kitura требует признания и понимания его собственных нестандартных методов выполнения задач, от того, как работает Kuery, до его механизма аутентификации. В любом случае, учитывая, что он спонсируется обширной организацией, уделяющей внимание этому начинанию, есть некоторые утверждения, запечатывающие будущее.

Установка и запуск Kitura

Самый быстрый способ начать - использовать интерфейс линии направления Kitura (CLI), поддерживаемый как в macOS, так и в Linux. Используя известную утилиту управления пакетами Homebrew, установите Kitura и Kitura CLI, введя следующее:

Кран для варки $ ibm-swift / kitura

$ brew installkitura

Внутри незаполненного органайзера, который вы будете использовать в качестве своего предприятия, запустите сопровождающий, чтобы создать свое предприятие:

$ kitura init

Когда будет завершено создание вашего каркасного приложения, вы увидите еще один проект под названием HelloKitura.xcodeproject. Вы можете узнать больше о создании проектов, обратившись к документации Китуры. Вы можете открыть недавно созданный проект в Xcode и изменить основной класс приложения, Application.swift , чтобы обрабатывать все вызовы корневого сервера вашего сервера https: // localhost: 8080 / URL :

// Обработка HTTP-запросов GET к "/"

router.get ("/") {запрос, ответ, следующий в

response.send ("Привет, мир!")

следующий()

}

Приведенный выше фрагмент кода реагирует, восстанавливая образцовый Hello, World! . Прежде чем вы наконец сможете запустить проект, измените схему Xcode, чтобы она указывала на HelloKitura (ваш активный проект), и начните свое начинание, нажав Command-R . Пока ваш сервер работает, в браузере по вашему выбору перейдите по адресу https: // localhost: 8080, и вы должны увидеть приветственный мир в своем браузере.

Начиная с Vapor

Выпущенный через пару месяцев после Kitura, в сентябре 2016 года, Vapor от Qutheory, как правило, считается самым заметным по размеру сообщества и количеству модулей. Он построен на основе Swift-nio от Apple, что делает его настоящим локомотивом исполнения. Совсем не похоже на Kitura и другие этапы, которые создаются не просто в Swift, а на Node.js или других парсерах среднего уровня, Vapor отделяется от любой из этих зависимостей, чтобы предоставить синтаксический анализатор Swift и предоставить четкие и согласованные API.

Vapor оказывает всестороннюю помощь по базам данных поставщикам SQL, например, MySQL и PostgreSQL, и поставщикам NoSQL, например, Redis и MongoDB, как Kitura. Хотя у Kitura есть свои собственные ORM-решения Kuery, Vapor использует Fluent ORM для поддержки баз данных, на которые я только что ссылался, что позволяет довольно просто распространить ORM на других сторонних поставщиков баз данных. Vapor изолирует себя от альтернативных фреймворков, изначально поддерживая службу push-уведомлений Apple, а также поддерживая SMTP для отправки уведомлений по электронной почте.

В то время как Kitura реализует свою собственную структуру аутентификации, Vapor имеет встроенную библиотеку аутентификации Turnstile от Stormpath. Как и Kitura, платформа также поддерживает соблазны Mustache и Markdown, и в дополнение к собственному встроенному в Swift выразительному языку шаблонов Vapor дополнительно сопровождает свой собственный механизм интерфейса командной строки, как и другая серверная платформа Swift, с возможностью расширения команд приложения. -строчные аргументы с настраиваемыми флагами.

Установка и запуск

Чтобы начать с Vapor, вы начинаете с установки набора инструментов Vapor, который включает в себя все зависимости библиотеки и набор инструментов CLI. Установите его с помощью Homebrew, введя в терминал следующее:

$ brew installvapor / кран / пар

По завершении установки вы можете подтвердить успешную установку Vapor, набрав steam —help. Чтобы создать проект, введите следующее, заменив его собственным именем проекта:

$ steam новый

Движок Vapor создаст структуру папок, подобную следующей:

├── Публичный

├── Источники

│ ├── Приложение

│ │ ├── Контроллеры

│ │ ├── Модели

│ │ ├── boot.swift

│ │ ├── configure.swift

│ │ └── routes.swift

│ └── Беги

│ └── main.swift

├── Тесты

│ └── Тесты приложений

└── Package.swift

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

$ steam xcode

Наконец, чтобы создать и запустить свой проект, в Xcode выберите схему «Выполнить», а также целевое устройство разработки My Mac , а затем нажмите кнопку « Выполнить» , как если бы вы делали это для любого другого проекта Xcode. Поскольку в вашем проекте Xcode нет ошибок, вы должны увидеть следующее подтверждающее сообщение в терминале:

Сервер запускается на https: // localhost: 8080

Идите вперед и введите этот URL-адрес в любом браузере, и вы увидите, что ваше приложение запущено.

Начиная с Perfect

Наконец, мы взглянем на Perfect от PerfectlySoft, многофункциональную серверную платформу, такую как Vapor и Kitura. Perfect включает в себя аналогичные стандартные навороты, которые вы могли обнаружить у предыдущих поставщиков, от создания шаблонов с помощью Mustache или Markdown до сетей с веб-сокетами, а также Apple Push Notification и SMTP.

Как и другая серверная платформа, Perfect имеет свою собственную реализацию ORM, платформу StORM (Perfect StORM), которая обеспечивает встроенную поддержку MySQL, PostgreSQL и других известных реляционных баз данных, а также MongoDB, Redis и других решений NoSQL. Одним из заметных исключений из Perfect является интерфейс командной строки, но фреймворк компенсирует это собственным приложением для macOS.

Как и Vapor, в Perfect дополнительно встроен Turnstile для обеспечения механизма аутентификации, расширенный для более тесного взаимодействия со StORM. Еще одно отличие этого механизма от других заключается в значительном количестве поддерживаемых им собственных библиотек утилит, включая их собственную уникальную оболочку cURL и дополнительные инструменты для работы с файлами и папками. База разработчиков Perfect является второй по величине и почти не уступает Vapor, что означает, что у вас есть сильное сообщество, поддерживающее эту платформу, а также богатый набор образовательных ресурсов, дающих вам уверенность в том, что вы ее выберете.

Установка и запуск

Начать работу с Perfect очень просто. Первоначально клонируйте репозиторий PerfectlySoft, введя следующее:

$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git

Изнутри клонированной папки создайте проект:

$ быстрая сборка

Наконец, запустите проект, который запустит локальный сервер по адресу 0.0.0.0:8181.

.build / debug / PerfectTemplate

Вы также можете запустить свой проект в Xcode, сначала создав новый проект, как показано ниже:

Пакет $ swift generate-xcodeproj

В Xcode перед сборкой и запуском проекта убедитесь, что ваша исполняемая цель указана на « Мой Mac».

Заключение

Появление Swift в сети с открытым исходным кодом подтолкнуло к развитию решений Swift, выходящих за рамки клиентских приложений, при этом фреймворки внутренних серверов превратились в следующие окраины. Вдохновленный тремя известными проектами - Vapor от Qutheory, IBM Kitura и Perfect. Серверный Swift позволил разработчикам iOS (и macOS) стать разработчиками полного стека. Это может свести на нет зависимость от внутренних разработчиков Node.js, PHP или .NET. Серверный Swift дополнительно позволяет группам управлять своей серверной частью, не полагаясь на мобильную внутреннюю часть как серверное решение, такое как Firebase или CloudKit.

Серверный Swift не для всех, вам нужно определиться с тем, какой контроль вам требуется для вашего бэкенда, и имеет ли смысл использовать собственный. Кроме того, я не пытался сказать вам, какое решение Swift на стороне сервера является идеальным. Разработчики, несомненно, терпят неудачу в принятии решения, и каждый из трех дает уникальный и зрелый подход, с которым стоит поэкспериментировать. Я бы посоветовал вам поиграть с каждым из примеров кода, оценить языковую структуру и связаться с их конкретными сообществами, чтобы увидеть, какое решение подходит вам лучше всего.