Я люблю писать программы. И поскольку я больше не являюсь разработчиком программного обеспечения, у меня не так много времени для этого, и это всегда доставляло мне невероятный объем работы, необходимый для настройки, обслуживания и в целом управления инфраструктурами, на которых программное обеспечение работает, над чем я действительно хочу работать. Поэтому неудивительно, что я ОГРОМНЫЙ поклонник программирования без сервера, поскольку он предоставляется функциями Azure (и другими, такими как Amazon Lambda или Google Cloud Functions). Поскольку я получаю бесплатные кредиты от Microsoft, мне пришлось попробовать это, и мне это нравится :-).
Я предполагаю, что у вас есть подписка Azure, но если нет, просто перейдите на https://signup.azure.com и получите бесплатную. На момент написания этой статьи вы даже получаете кредит в размере 200 долларов США, действительный в течение 30 дней. Отлично, чтобы начать играть.
Конечная цель этого учебного пособия — создать полноценное приложение для анализа финансовых данных на основе полностью серверной инфраструктуры. Посмотрим, как далеко я смогу зайти. Я очень многословен в своих уроках, потому что я большой потребитель их (как других, так и моих :-)), и я ненавижу это, когда они не показывают все шаги, необходимые для выполнения чего-то, и вам нужно угадывать шаги и много раз заканчиваться в неправильном состоянии, которое нарушает весь поток.
Итак, приступим к созданию нашей первой функции Azure! Перейдите на https://portal.azure.com/ , и после входа в систему вы должны оказаться на портале Azure, который выглядит примерно так:
Чтобы все было организовано, я создал группу ресурсов, чтобы хранить все ресурсы, связанные с учебными пособиями, в одном месте, и это мозаика, показанная на информационной панели (которую я также создал для этих учебных пособий). Группа ресурсов — это логический контейнер ресурсов в Azure, который помогает поддерживать организованную подписку.
Итак, давайте нажмем на приятную синюю кнопку «Создать ресурсы» и посмотрим, куда мы пойдем:
Этот экран, вероятно, отличается для каждого человека в зависимости от того, что у него есть в подписке, и я не вижу здесь функций Azure, поэтому я сделаю поиск:
И да, вот он, первый результат в поиске. Нажатие на строку «Function App» откроет новый «блейд» (да, именно так называются эти вертикальные панели), который дает краткое описание того, что такое Function App:
Это то, для чего я пришел, поэтому я нажму кнопку «Создать», которая, как и ожидалось, открывает новый «блейд» (вы можете увидеть, что новый блейд создается, глядя на горизонтальную полосу прокрутки, которая продолжает расти внизу экрана), где мы можем ввести данные для приложения-функции, которое мы создаем:
Давайте заполним детали для приложения. Во-первых, имя приложения должно быть уникальным для всех веб-сайтов Azure (поверх которых запускаются функции Azure), поэтому давайте назовем его «vainolo-azfun» (как и ожидалось, оно не используется :-)). Я собираюсь использовать мою существующую подписку, чтобы оплатить это приложение и добавить его в группу ресурсов, с которой я начал весь этот процесс (вы можете перейти на этот экран из другого места и там вам нужно будет выбрать группу ресурсов) , План хостинга — это то, как вы платите за приложение. Есть два варианта: Потребление или Сервис приложений. Потребление — это оплата по факту, когда вы оплачиваете количество запросов к приложению, а служба приложений позволяет резервировать вычислительные ресурсы для обслуживания вашего приложения. Для учебников и тестирования я предполагаю, что план потребления дешевле, чем служба приложений (нужно это проверить!), И независимо от этого он также более прост, поэтому я выбрал потребление.
Я оставляю местоположение таким, какое оно есть, потому что мне все равно, но когда вы разрабатываете серьезную услугу, вам нужно, чтобы ваши приложения были ближе к вашим клиентам, поэтому это важно. Наконец, нам нужно создать учетную запись хранения, место, где Azure хранит код, развернутый в функции. Я просто назову это «vainoloazfun» (здесь не должно быть тире! И это также должно быть уникальным для всех сервисов хранилища в Azure). Я не собираюсь включать Application Insights, потому что это не настоящее производственное приложение, но я буду исследовать его возможности в будущем.
Хорошо, вот что у меня сейчас:
Я нажму кнопку «Создать» и посмотрю, что произойдет… Ах, лезвие создания закрывается, и через некоторое время из маленького колокольчика в правом верхнем углу экрана появляется сообщение. Когда я нажимаю на него, я вижу, что развертывание моего приложения функции прошло успешно:
Я просто нажму кнопку «Перейти к ресурсу», чтобы перейти к моему новому, красивому и блестящему функциональному приложению, которое выглядит так:
Отлично. Но поговорим о накладных расходах — для создания простой функции мне нужна группа ресурсов, учетная запись хранения, приложение-функция, и только тогда я могу создать функцию. Чувак, мы могли бы сделать это лучше. Но давайте продолжим.
Давайте создадим нашу первую функцию. Нажмите на текст «Функции» из выпадающего списка в «vainolo-azfun», и вы получите экран «Функции», где можно создать новую функцию:
Я нажму кнопку «+ Новая функция» и получу следующий экран:
Здесь есть много опций, и я обязательно изучу их в будущем, но для нашего первого примера мы создадим простую функцию и ответим «Hello World» на HTTP-запрос. Это делается с помощью шаблона «HTTP-триггер». Я нажму на эту опцию, и откроется новый блэйд с вопросом о названии функции и языке, на котором я хочу ее написать:
Я выберу C #, так как я более знаком с ним, чем JS (где Java ???), и я назову свою функцию «HelloWorld». Как только язык функции определен, в блейде может неожиданно появиться новая опция (плохая практика UX!), Запрашивающая уровень авторизации. Я выберу Anonymous, потому что это самый простой способ проверить функцию:
Теперь я нажимаю «Создать», и после небольшого ожидания вот что я получаю:
Вместо того, чтобы получить пустую функцию (что я и ожидал), Azure уже заполняет мою функцию примером кода, который делает намного больше, чем я хотел, путем анализа запроса и ответа на основе параметров запроса. Я думаю, что это здорово, потому что это дает вам представление о том, что вы делаете :-). Я просто удалю все, кроме первой и последней строки функции, изменив возвращаемое значение на «Hello World»:
1
2
3
4
5
6
7
|
using System.Net; public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { log.Info( "C# HTTP trigger function processed a request." ); return req.CreateResponse(HttpStatusCode.OK, "Hello World" ); } |
Вот и все. Моя функция готова! Но работает ли это? Это легко проверить! Нажав на кнопку «Сохранить и запустить», функция компилируется и выполняется простой тест:
И, как и ожидалось, моя функция возвращает «Hello World» в качестве вывода.
Но я скептик и хочу, чтобы это работало вне портала Azure. Для этого мне нужно получить URL-адрес функции, который выбирается путем нажатия на ссылку «Получить URL-адрес функции» в верхней части редактора, но его также легко создать вручную: https: // vainolo-azfun .azurewebsites.com / api / HelloWorld ( https: // AppURL / api / FunctionName ):
Я открою новое окно браузера и перейду к этому URL, и вуаля!
Не совсем то, что я ожидал… Сервер возвращает XML-сообщение, содержащее «Hello World», и причина этого в том, что клиент (в данном случае Chrome) сначала запрашивает HTML или XML в качестве ответа (и другие вещи позже). ) и сервер автоматически решает преобразовать текстовый ответ в XML, чтобы браузер был доволен. Итак, давайте попробуем другой способ. Используя найденный мной инструмент https://www.hurl.it , я могу протестировать его еще раз, и здесь ответ еще раз, как было показано на портале Azure:
И вот, моя первая функция Azure ;-).
Таким образом, в этом руководстве мы создали приложение-функцию, являющееся контейнером для нескольких функций Azure, и простую функцию Azure, которая при вызове возвращает «Hello World». Это хорошее место для начала!
И я надеюсь получить немного времени, чтобы поиграть с этим очень скоро.
См. Оригинальную статью здесь: Функции Azure. Часть 1. Начало работы
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |