Многие из вас хотели бы быстро создать прототип мобильного/веб-приложения и развернуть или продемонстрировать свою блестящую идею. Но не слишком ли сложно одновременно изучать Android, iOS, веб и сервер? Если вы так думаете, вы пришли в нужное место. В этом руководстве вы узнаете, как создать приложение, которое работает на Android, iOS и в Интернете только на одном языке (Javascript), и позволит вам контролировать, как обычно структурировано кросс-платформенное приложение.

Это руководство предназначено для людей, которые уже знают, как использовать командную строку, но мало знакомы с javascript. В этом руководстве вы будете создавать веб-приложение, которое получает доступ к вашей камере и определяет черты лица, а также мобильное приложение, которое анализирует настроение. Общий обзор проекта представлен на графике ниже.

Чему этот учебник не научит вас:

  • Как разработать мобильное, веб-приложение или серверное приложение

Что вы узнаете к концу этого руководства:

  • Как настроить кроссплатформенное приложение
  • Контейнеризация веб-приложений, мобильных и серверных приложений
  • Развертывание вашего контейнера в Azure
  • Использование Когнитивного API Azure

Что вам понадобится:

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

Часть 1 — Подготовка рабочего пространства

Сначала клонируйте проект из этого репозитория GitHub.

> git clone https://github.com/charlieangriawan/cross_platform_tutorial.git

Часть 2. Подготовка наших ключей для распознавания изображений и анализа текста

Войдите в свою учетную запись Azure через интерфейс командной строки:

> az login

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

> az group create --name <workspace-name> --location "West Europe"

Создайте когнитивный сервис Computer Vision и перечислите ключ:

> az cognitiveservices account create -n <resource-name1> -g <workspace-name> --kind ComputerVision --sku S1-l WestEurope –yes
> az cognitiveservices account keys list --name <resource-name1> -g <workspace-name>

Скопируйте значение key1 и сохраните его в надежном месте. Теперь мы сделаем то же самое для Text Analytics и скопируем значение его key1.

> az cognitiveservices account create -n <resource-name2> -g <workspace-name> --kind  TextAnalytics --sku S1-l WestEurope –yes
> az cognitiveservices account keys list --name <resource-name2> -g <workspace-name>

Часть 3. Развертывание нашего приложения узла

Откройте каталог node_api и замените ключи в файле .env.

Теперь, когда приложение готово к использованию, вы можете попробовать запустить его на своем локальном компьютере с помощью npm start, и мы можем начать развертывание.

> docker build -t cross_platform_tutorial/node_api:v1.0.0 .
> docker run -v ${PWD}:/usr/src/app -v /usr/src/app/node_modules -p 49160:8080 -d cross_platform_tutorial/node_api:v1.0.0
> az acr create --name <server-container-name1> --resource-group <workspace-name> --sku Basic --admin-enabled true
> az acr credential show --name <server-container-name1>
// copy down the password and use it for docker logins
> docker login <server-container-name1>.azurecr.io --username <server-container-name1>
> docker tag cross_platform_tutorial/node_api <server-container-name1>.azurecr.io/node_api:v1.0.0
> docker push <server-container-name1>.azurecr.io/node_api:v1.0.0

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

> az acr repository list -n <app-service-name>

После того, как контейнер будет помещен в реестр. Мы можем создать лазурную веб-службу и связать ее с контейнером.

az appservice plan create --name <app-service-name> --resource-group cross_platform_tutorial --sku F1 --is-linux
az webapp create --resource-group <workspace-name> --plan <app-service-name> --name <web-app-name1> --deployment-container-image-name <server-container-name1>.azurecr.io/node-server:v1.0.0
az webapp config container set --name <web-app-name1> --resource-group <workspace-name> --docker-custom-image-name <server-container-name1>.azurecr.io/node_api:v1.0.0 --docker-registry-server-url https:// <server-container-name1>.azurecr.io --docker-registry-server-user <server-container-name1> --docker-registry-server-password <docker-password>
az webapp config appsettings set --resource-group <workspace-name> --name <web-app-name1> --settings WEBSITES_PORT=8080

Вы можете получить доступ к своему веб-сайту по адресу ‹app-service-name›.azurewebsites.net.

Часть 4. Развертывание нашего веб-приложения

Откройте каталог react_web. В файле .env замените свою конечную точку только что созданной конечной точкой API сервера узла. Затем поместите приложение в контейнер так же, как вы делали это для сервера узлов.

В случае успеха вы должны увидеть одностраничное приложение, которое анализирует ваше окружение и отслеживает лица и отображает их возраст при обнаружении.

> docker build -t cross_platform_tutorial/react_web:v1.0.0 .
> docker run -v ${PWD}:/usr/src/app -v /usr/src/app/node_modules -p 49161:8080 -d cross_platform_tutorial/node_api:v1.0.0
> az acr create --name <server-container-name2> --resource-group <workspace-name> --sku Basic --admin-enabled true
> docker tag cross_platform_tutorial/node_api <server-container-name2>.azurecr.io/react_web:v1.0.0
> docker push <server-container-name2>.azurecr.io/react_web:v1.0.0
az appservice plan create --name <app-service-name> --resource-group cross_platform_tutorial --sku F1 --is-linux
az webapp create --resource-group <workspace-name> --plan <app-service-name> --name <web-app-name2> --deployment-container-image-name <server-container-name1>.azurecr.io/react_web:v1.0.0
az webapp config container set --name <web-app-name2>--resource-group <workspace-name> --docker-custom-image-name <server-container-name2>.azurecr.io/react_web:v1.0.0 --docker-registry-server-url https:// <server-container-name2>.azurecr.io --docker-registry-server-user <server-container-name2> --docker-registry-server-password <docker-password>
az webapp config appsettings set --resource-group <workspace-name> --name <web-app-name2> --settings WEBSITES_PORT=8080

Часть 5. Запуск мобильного приложения

Откройте каталог react_native. В файле .env замените свою конечную точку API-интерфейсом сервера узла и только что созданной конечной точкой веб-приложения. Затем поместите приложение в контейнер так же, как вы делали это для сервера узлов.

> react-native run-android
or
> react-native run-ios

Вы должны иметь возможность анализировать настроения и обнаруживать лица с помощью приложения.

Поздравляем, вы создали кроссплатформенное приложение!