Комплексный сценарий использования Функций Azure в качестве серверной части для приложения iOS, написанного на Swift.

Учиться, смеясь, — это самый веселый способ провести тяжелые часы, пытаясь освоить что-то новое. Наука говорит нам, что лучше всего мы учимся через повторение и удивление. Я надеюсь, что это упражнение докажет, что более поздняя теория верна :-D

Видение

Рассмешите своих пользователей, предоставив им ежедневную деловую цитату — или, другими словами, фразу, достойную бредового бинго.

Соревнование

Предложите пользователю простое в использовании приложение — предпочтительно iOS и Swift3. Предоставьте серверную часть с функциями Azure, чтобы приложение могло получать ежедневные котировки.

Используйте этот веб-сайт http://cbsg.sourceforge.net/cgi-bin/live для получения очень эффективных ежедневных фраз, достойных бинго, деловых цитат :D

Конечно, мы будем делать все это на Mac. Я знаю, что вы это знали, но на всякий случай…

Давайте начнем!

Итак, сначала я настроил шаблон ARM для автоматической подготовки функции Azure. Это можно сделать и на портале (посмотрите этот небольшой туториал: https://medium.com/@codeprincess/serverless-in-sea-in-azure-f6c5d2b0b2ec#.1i41gd7u4). Но эй, с инструментами CLI это намного веселее, верно? :D

Установите интерфейс командной строки Azure

Поэтому, если вы еще не установили Azure CLI, вы можете скачать и установить его здесь — см. Вариант 2 https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/.

Как только установка будет завершена, откройте приложение терминала по вашему выбору.

Войти в Azure

Сначала нам нужно войти в Azure, прежде чем мы сможем начать автоматическую подготовку функций. Так что просто введите

Вход в Azure

в командную строку и следуйте инструкциям на экране. Используйте интерактивный вход в систему (это своего рода магия :D), открыв указанный URL-адрес и введите указанный код. Теперь происходит волшебство, и вы вошли в Azure в терминале. Так. Прохладный.

Если вам нужна дополнительная помощь, просто загляните на эту страницу: https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/

Создать группу ресурсов

Возможно, у вас уже есть одна или несколько групп ресурсов в Azure. Чем они хороши? Чтобы просто сгруппировать ресурсы. Ха. Как только вы начнете работать с, например. Service Fabric или ресурсов, которые имеют множество сопутствующих служб, вы совершенно упустите из виду, что для чего нужно. Так что действительно используйте группы ресурсов, когда это возможно. Мы делаем это в этом примере, чтобы сделать это привычкой для вас;)

Так что просто введите

группа azure create -n HereGoesYourGroupName -l «Западная часть США»

в терминал и дождитесь успешного ответа от Azure. Конечно, вы можете выбрать любое местоположение, но в этом примере мы будем использовать Запад США для начала.

Список групп ресурсов

Чтобы убедиться, что ваша группа теперь доступна для вас, просто введите

список групп Azure

в терминал и видите — ваша только что созданная группа ресурсов уже ждет, когда вы ею воспользуетесь.

Шаблон ARM

Теперь пришло время проверить первый репозиторий GitHub https://github.com/codePrincess/dailyQuoteFunctions. Просто клонируйте или загрузите исходники и перейдите в папку /dailyQuoteFunctions/ARM deployment и сосредоточьтесь на двух файлах JSON: arm_func_parameter.json и arm_func.json.

Сам шаблон ARM — arm_func.json — уже настроен. Вам просто нужно настроить некоторые биты в файле arm_func_parameter.json. И это всего лишь название функции Azure, которая будет развернута с помощью этого шаблона. Измените текущее имя «yourfunctionnamegoeshere» на более осмысленное и сохраните файл.

3..2..1 развертывание!

Вернувшись в терминал, перейдите в папку репозитория, который вы только что загрузили, прямо в папку /dailyQuoteFunctions/ARM deployment. А затем выполнить команду для запуска развертывания этого самого ARM-шаблона с его заданными параметрами в группу ресурсов, которую вы только что создали минуту назад. Последний параметр вызова — это имя развертывания — выберите здесь какое-нибудь имя.

развертывание группы Azure create -f arm_func.json -e arm_func.paramter.json -g HereGoesYourGroupName -n YourDeploymentsName

Теперь Azure начинает развертывание функции Azure. Это займет минуту или две, и если все прошло хорошо, вы увидите красивый и жадный УСПЕХ, указанный в вашем терминале.

Прикрепите код — и устраните проблему

Теперь пришло время перейти на портал Azure portal.azure.com. Войдите в систему и перейдите к созданной ранее группе ресурсов HereGoesYourGroupName. Ваше функциональное приложение уже должно быть там. Круто, да?

Теперь у вас есть два варианта присоединения кода к функции:

  1. Просто создайте две новые функции HttpTrigger-Node и загрузите код (или скопируйте/вставьте) в функцию. Нет удаленного обновления, но есть возможность быстро что-то изменить на портале.
    Как только вы создадите новую функцию и войдете в режим редактирования кода, нажмите кнопку «Просмотреть файлы» прямо под видом редактора кода. Это открывает список файлов, которые содержит функция. Вы можете загружать файлы на этом этапе очень легко. Так что просто загрузите index.js и function.json для каждой из двух функций (SeedBingo, BullshitBingo) в репозиторий, и вы готовы к работе!
  2. Свяжите код напрямую с GitHub
    Это здорово. При каждом нажатии на данную ветку функция будет автоматически обновляться. НО: вы больше не можете использовать редактор кода на портале. Это будет доступно только вам для чтения, как только код будет получен из удаленного репозитория.
    Теперь вам нужно выполнить здесь последнюю ручную часть, потому что привязка репозитория Git к настоящему моменту не работает из коробки через Развертывание ARM. Это должно быть исправлено в самое ближайшее время. Итак, давайте сделаем это на портале. Откройте функциональное приложение и найдите Настройки функционального приложения в левом нижнем углу экрана.
    Затем выберите параметр Непрерывная интеграция и нажмите кнопку Настройка на верхней панели. В этом случае мы будем использовать репозиторий, которым вы не владеете, поэтому выберите Внешний репозиторий и введите URL-адрес https://github.com/codePrincess/dailyQuoteFunctions и ветку MASTER. Затем развертывание кода должен запуститься, и вскоре после этого вы должны увидеть две новые функции, уже упакованные со своим кодом и готовые к использованию :)

Дымовой тест — первый запуск функции!

На данный момент мы сделали очень много! Но работает ли это все уже. По идее должно! :D Откройте функцию «SeedBingo» и скопируйте URL-адрес функции с самого верха страницы на новую вкладку браузера. И нажмите Enter.

Вы должны увидеть что-то подобное в своем браузере. Функция получает новые строки цитаты с заданного сайта, приводит их в нужный вид и сохраняет в JSON-файл прямо в директории functions. В качестве возвращаемого значения функция сообщает вам, сколько новых строк теперь доступно для вас.

Это хорошая возможность проверить, работает ли вторая функция. Вторая функция называется «BullshitBingo» и принимает два необязательных параметра. «число» принимает INT и указывает функции вернуть это значение строки. И «maxLength» принимает INT и указывает функции просто возвращать строки с количеством символов меньше, чем maxLength. Довольно просто.

Бэкенд: ГОТОВО

Имея эти две конечные точки, мы теперь можем использовать их в очень простом и небольшом приложении для iOS. Чтобы мои быстрые знания оставались свежими и сочными, я сделал упражнение со Swift3. Все остальное было бы не так :D

Исправление проблем

Если что-то пойдет не так, как должно. Без слез! Я вставил свои работающие конечные точки в приложение для iOS, чтобы вы могли использовать и попробовать их для сравнения своего собственного развертывания.

Направляем клиентскую сторону в нужное русло

В дело вступает второй репозиторий: https://github.com/codePrincess/dailyQuote.

В этом маленьком приложении используются обе серверные конечные точки. Просто в образовательных целях (а не в крупномасштабных значимых целях) конечная точка SeedBingo вызывается один раз в день для обновления котировок в бэкенде (да, не так умно, когда каждый клиент делает это каждый день… но, как я уже сказал — в образовательных целях!) .

Вторая конечная точка вызывается каждый раз, когда загружается основной контроллер представления приложения и когда пользователь нажимает на текст цитаты. Здесь снова: просто иллюстрирую использование конечной точки;)

Заворачивайся — и радуйся!

Вау! Вы действительно написали серверную часть, развернули ее в облачной службе и прикрепили к ней свое приложение, чтобы их можно было часто использовать. Я бы сказал, что этого достаточно на день. Отпразднуйте себя пивом, джин-тоником или любым другим праздничным напитком на ваш вкус. И присылайте фото :D

Люблю получать ваши отзывы!

И запросы на включение, чтобы исправить мои глупости в моих репозиториях :D