• Nenhum resultado encontrado

4 FERRAMENTAS, ANÁLISE E PROJETO DO SISTEMA

4.2 TECNOLOGIAS UTILIZADAS

4.2.2 LINGUAGEM JAVASCRIPT E FRAMEWORKS

Uma vez definida que a arquitetura da solução será baseada na utilização de um serviço web e que será adotada a metodologia Domain-Driven Design, se- guiu-se na escolha da tecnologia sobre a qual o desenvolvimento seria calcado.

Um dos principais fatores levados em consideração foi o parque tecnoló- gico já existente no Ministério da Saúde. A inserção de novas exigências de hardwa- re e softwares de infraestrutura seria um complicador, tanto em questão de custos, como no tempo de desenvolvimento.

O parque tecnológico do Ministério da Saúde, à época do desenvolvimen- to da solução descrita neste trabalho, possuía servidores em ambiente Microsoft Windows Server 2012 e CentOS Linux Server com os servidores web Internet Infor- mation Services (IIS) e Apache HTTP Server, respectivamente. Neste ponto, o custo foi o determinante, uma vez que os softwares de infraestrutura fornecidos pela Mi- crosoft possuem um custo considerável comparando-se os softwares de infraestrutu- ra Linux que são gratuitos. Tendo a infraestrutura definida, chegou a hora de definir a linguagem de programação a ser utilizada.

As linguagens de programação utilizadas e suportadas no Ministério da Saúde eram C#, Java e Delphi. A linguagem Delphi foi descartada de imediato devi- do a sua inadequação para o uso em serviços web. A linguagem C# também foi descartada devido a escolha da infraestrutura Linux. Restou a linguagem Java que também foi descartada pelo nível de complexidade que traria a infraestrutura, uma vez que necessita de um servidor de aplicação. Um servidor de aplicação é um componente de software de infraestrutura que centraliza vários elementos de softwa-

re e faz a orquestração da comunicação entre eles [24]. A linguagem Java possui

vários componentes para os mais diversos propósitos, como por exemplo, acesso a banco de dados e geração de páginas em HTML. Um exemplo de um servidor de aplicação é o JBoss. Na Figura 5 podemos ver um exemplo do funcionamento deste servidor de aplicação.

Figura 5: Exemplo de Funcionamento do JBoss.

Com todas as linguagens de programação utilizadas sendo descartadas, foi necessário encontrar uma que não trouxesse complexidade quanto a infraestrutu- ra e nem tivesse uma curva de aprendizagem grande para não atrasar o desenvol- vimento, cujo prazo já era bem reduzido. Neste contexto, a linguagem escolhida foi a

JavaScript.

JavaScript é uma linguagem de programação de scripts criada em 1996

pela Netscape para melhorar a experiência do usuário na exibição de páginas web dinâmicas [1]. Por ter a sintaxe comum ao Java, o nome JavaScript ficou populariza- do, no entanto, este nome era uma marca registrada da empresa Sun Microsys-

tems9, que também detinha o registro do nome Java. A Netscape submeteu a lin- guagem para que fosse feita uma padronização pela European Computer Manufac-

turer’s Association (ECMA) e, desta forma, o nome oficial da linguagem é ECMAS-

cript [25].

À primeira vista parece um contrassenso escolher uma linguagem criada para melhorar a exibição de páginas web para criar um serviço web que, apesar de ter a possibilidade de fornecê-las, geralmente não fornece páginas web. A resposta para esta escolha está na plataforma de desenvolvimento JavaScript Node.js.

A plataforma Node.js foi criada no final de 2009 por Ryan Dahl com a aju- da de 14 colaboradores tomando como base a engine JavaScript V8 da Google [26]. Com o objetivo de tornar o seu navegador web Chrome mais performáti- co, a Google criou uma engine que permitia compilar o código JavaScript em código de máquina nativo. Desta forma, já não é mais necessário o uso de um navegador web para a execução de códigos escritos na linguagem JavaScript.

Node.js possui uma arquitetura não bloqueante baseada em fila de even- tos que são tratados de forma assíncrona. Eventos são todas as ações que ocorrem no sistema. Diferente da programação de páginas web dinâmicas onde temos even- tos como click do mouse e seleção de itens em listas, o Node.js trata de eventos do entrada e saída no servidor como a conexão de bancos de dados e a abertura de arquivos. Ao identificar que um evento ocorreu e foi posto em sua fila, o Node.js pro- cessa esse evento e não aguarda a sua finalização para que possa processar algum outro evento que ocorra. Isso dá ao Node.js o poder de atender a um grande número de eventos sem causar um impacto negativo significativo em sua performance. Além disto, não são necessários requisitos adicionais de infraestrutura, já que a plataforma Node.js pode ser executada tanto em ambientes Linux quanto em ambientes Win- dows sem que seja preciso instalar nenhum outro software de infraestrutura.

Por ser uma plataforma de desenvolvimento, o Node.js possui suporte a diversas bibliotecas e frameworks JavaScript que podem ser instalados para facilitar o desenvolvimento de funcionalidades específicas. São tantos que existe um geren- ciador de componentes na plataforma, o Node.js Package Manager (NPM). Este ge- renciador baseia-se num arquivo de configuração existente no projeto em formato

JSON para fazer o download e a instalação dos componentes necessários ao proje- to, chamados de dependências.

Dentre os muitos frameworks existentes na plataforma, foi escolhido o Express.js para auxiliar no desenvolvimento do serviço web proposto.

O Express.js é um framework que fornece as funcionalidades de um ser- vidor de aplicação, tais como tratamento de requisições HTTP, tratamento de exce- ções e um pipeline de execução baseado em middlewares, que são funções que podem ser executadas antes ou depois do processamento de uma requisição HTTP, passando o resultado do seu processamento para o pipeline em execução. Isto se torna bastante útil no registro das operações realizadas, já que uma função de regis- tro pode ser inserida no pipeline sem alterar seu processamento.

Documentos relacionados