Back-End

21 jun, 2018

Utilizando métodos de uma Class Library no Azure com o Azure Functions

Publicidade

Introdução

Continuando com os artigos sobre Arquitetura Serverless no Azure, hoje vou demonstrar como podemos utilizar dentro do Azure, métodos contidos dentro de uma Class Library.

Imagine uma dll utilizada na sua empresa com “N” métodos que são utilizados em diversas aplicações e agora surge a necessidade de utilizar essa mesma gama de métodos, porém, em uma aplicação Serverless no Azure. As primeiras perguntas que você se faz, são: Será que vou ter que reescrever todos os métodos novamente? Como reutilizar esses métodos na nuvem? Com as functions do Azure esse problema é facilmente resolvido.

Class Library de cálculo

Para fins de demonstração, vou criar uma Class Library que contém os métodos de Somar e Subtrair para que possamos estender esses métodos dentro de uma Function no Azure.

Então, primeiramente vamos criar uma Class Library clicando em “File” > “New Project” > “ClassLibrary”, conforme a figura abaixo:

Figura 1

Após a criação do projeto, vamos utilizar o código abaixo:

namespace CalculadoraiMasters
{
 public static class Calcular
 {
 public static int Somar (int num1, int num2) { return num1 + num2; }
 public static int Subtrair(int num1, int num2) { return num1 - num2; }
 }
}

Note que o código é bem simples e possui apenas dois métodos, sendo um para somar e outro para
subtrair, conforme mencionado anteriormente.

Feito isso, vamos colocar em modo Release e dar um Build nessa Class Library para que ela gere uma dll
dentro da pasta do projeto “bin” > “release” > “nomedasuasolution.dll”.

Agora que já temos nossa dll, vamos para o portal do Azure para começar a segunda parte do nosso artigo.

Microsoft Azure

Primeiramente, caso ainda não tenha uma subscription no Azure, será necessário criar uma (caso queira
um passo a passo, clique aqui). Já com a nossa subscription em mãos, vamos acessar o Portal do Azure
através do link: https://portal.azure.com e efetuar o nosso login.

Feito isso, vamos clicar em “Create Resource” e em seguida em “Serverless Function App”, conforme a
figura abaixo:

Figura 2

Agora vamos preencher os dados necessários conforme nos mostra a figura 3, e em seguida clicar em
“Create”.

Figura 3

Assim que finalizar a criação do nosso recurso, vamos abri-lo para criarmos a nossa Azure Function clicando no símbolo de adição (+) ao lado de “Functions”, e em seguida vamos clicar na opção “Create your own Custom Function” e então selecionaremos a primeira opção, que é a HTTP Trigger, conforme nos mostra a figura 4 logo abaixo:

Figura 4

Agora preencha todos os dados conforme figura abaixo e clique em “Create” para que o Azure crie a sua Function.

Figura 5

Nosso próximo passo agora é colocar nossa dll na nuvem para que possamos utilizá-la em nossa Function. Para isso, clique na sua App Function, depois clique em Plataform Features e por último em App Service Editor, conforme figura abaixo:

Figura 6

Note que vai abrir uma nova aba no seu browser contendo várias opções. Na guia lateral embaixo de WWWROOT, clique com o botão direito, depois em “New Folder” e em seguida nomeie essa pasta como o nome bin. Agora clique com botão direito sobre a pasta bin e selecione a opção “Upload Files” e seguida selecione nossa dll para que o upload seja realizado, conforme nos mostra a imagem 7, abaixo:

Figura 7

Volte agora para a aba do Portal do Azure e clique sobre a Function que criamos anteriormente para que possamos codificá-la. Substitua todo o código padrão que veio nela com o código abaixo (comentários no próprio código pra melhor entendimento):

//Chamada da nossa dll através da diretiva #r
#r "../bin/CalculadoraiMasters.dll"
//Usings que vamos utilizar no nosso código assim como faríamos no Visual Studio (observe que nossa dll está
sendo chamada também)
using System;
using System.Net;
using CalculadoraiMasters;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
 log.Info(quot;Calculo iniciado");
 //Recuperação dos parâmetros passados via post para fazermos o calculo
 dynamic data = await req.Content.ReadAsAsync<object>();
 //Conversão dos dois parâmetros pra int
 var valor1 = Convert.ToInt32(data?.valor1);
 var valor2 = Convert.ToInt32(data?.valor2);
 //Chamamos nossos métodos contidos dentro da nossa dll
 int resultdoSoma = Calcular.Somar(valor1, valor2);
 int resultdoSub = Calcular.Subtrair(valor1, valor2);
 log.Info(quot;Calculo finalizado");
 //Retornamos um output com os resultados
 return req.CreateResponse(HttpStatusCode.OK, quot;Soma: {resultdoSoma} - Subtracao: {resultdoSub}");
}

Feito isso, salve as alterações clicando no botão “Save” e então clique na opção “Test” para imputarmos nossos parâmetros via post, e em seguida clique em Run. Feito isso, a função será executada juntamente com os nossos métodos, trazendo com eles o resultado da soma e da subtração dos parâmetros passados, conforme figura abaixo:

Figura 8

Como puderam ver, não tem nenhum segredo em utilizar um dll com o Azure Functions. Para ser sincero, é bem simples e rápido.

Espero que tenham gostado desse artigo e até a próxima!