Онлайн курсы по Swift

Поскольку Apple впервые представила Swift как преемника Objective-C, она произвела революцию в том, как сообщество кодирует приложения iOS, macOS, watchOS и tvOS. Когда Swift стала платформой с открытым исходным кодом, она открыла новые возможности для языка помимо мобильных и клиентских приложений — Swift стал также серверным языком! В этой учебной статье вы узнаете, из себя представляет работа Swift на стороне сервера и почему вы захотите использовать Swift в качестве вашего бекенда.

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

 

Что такое 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, без серверных решений без необходимости написания кода, таких как Firebase от Google и собственный CloudKit от Apple, которые облегчают сложности бэкенда, многие команды и проекты требуют больше возможностей. Именно здесь появляется Swift на стороне сервера, позволяющий создать полноценный многопоточный бэкенд-сервер с открытым исходным кодом и как угодно настраиваемый.

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

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

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

 

Начало работы с Kitura

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

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

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

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

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

 

 

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

 

$ brew tap ibm-swift/kitura
$ brew install kitura

 

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

 

$ kitura init

 

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

 

// Handle HTTP GET requests to "/"
router.get("/") { request, response, next in
    response.send("Hello, World!")
    next()
}

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

 

Начало работы с 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 Notification от Apple, а также поддерживает SMTP для отправки уведомлений по электронной почте.

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

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

 

$ brew install vapor/tap/vapor

Когда установка завершена, вы можете подтвердить, что Vapor успешно установлен, выполнив vapor -help. Для создания проекта, введите следующее, вставив ваше имя проекта:

 

$ vapor new <PROJECT_NAME>

 

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

 

.
├── Public
├── Sources
│   ├── App
│   │   ├── Controllers
│   │   ├── Models
│   │   ├── boot.swift
│   │   ├── configure.swift
│   │   └── routes.swift
│   └── Run
│       └── main.swift
├── Tests
│   └── AppTests
└── Package.swift

 

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

 

$ vapor xcode

 

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

 

Server starting on http://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 — это CLI, но феймворк компенсирует это с помощью нативного приложения macOS.

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

Установка и выполнение
Запуск и выполнение с помощью Perfect очень просто. Во-первых, склонируйте репозиторий PerfectlySoft, введя следующее:

 

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

 

Находясь внутри клонированной директории выполните сборку проекта:

 

$ swift build

 

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

 

.build/debug/PerfectTemplate

 

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

 

$ swift package generate-xcodeproj

 

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

 

Заключение

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

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

Пролистать наверх