• Nenhum resultado encontrado

2.4 Frameworks de desenvolvimento (REST)

2.4.11 Spark

Desenvolvida por: -

Desenhada por: Per Wendel

Desenvolvida em: Java

Criada em: Julho de 2000

Última versão estável: 2.6.0 / 25 de abril, 2017 Sistema operativo / Plataforma: Multi-plataforma

Licença: Apache License 2.0

Repositório: https://github.com/perwendel/spark

Notas:

Spark (Wendel, 2011) é uma framework desenvolvida para Java e Kotlin173. É

executada num servidor embebido web Jetty, mas pode ser congurada para ser executada noutros servidores web. Não é baseada no modelo MVC, mas sim num modelo de criação rápida de aplicações através do menor esforço. Também suporta vários sistemas de modelos (templates).

Outras características:-

2.4.12 Sinatra

Desenvolvida por: Konstantin Haase

Desenhada por: Blake Mizerany

Desenvolvida em: Ruby

Criada em: Setembro de 2007

Última versão estável: 2.0.3 / 8 de junho, 2018 Sistema operativo / Plataforma: Multi-plataforma

Licença: MIT License

Repositório: https://github.com/sinatra/sinatra/

Página ocial: http://www.sinatrarb.com/

Notas:

Sinatra (Mizerany, 2007) é uma framework desenvolvida em Ruby on Rails174 e o

seu nome é em homenagem a Frank Sinatra175. É desenvolvida em código aberto,

suporta multi-plataforma e é executada sobre a interface do servidor web Rack176.

Tal como a framework Spark não utiliza o modelo MVC (ao contrário do Ruby on 173Linguagem de programação de tipagem estática que é executada na máquina virtual Java

(JVM) e também pode ser compilada em código-fonte JavaScript ou usar a infraestrutura do compilador LLVM.

174Framework livre que promete aumentar velocidade e facilidade no desenvolvimento de sites

orientados a base de dados (database-driven web sites), uma vez que é possível criar aplicações com base em estruturas pré-denidas.

175Cantor, ator e produtor americano, sendo considerado um dos mais populares e inuentes

artistas musicais do século 20.

Rails), mas sim um modelo de desenvolvimento rápido. Outras características:-

2.4.13 Restify

Desenvolvida por: Restify team

Desenhada por: -

Desenvolvida em: Javascript; Node.js

Criada em: Maio de 2011

Última versão estável: 7.2.1 / 7 de junho, 2018 Sistema operativo / Plataforma: Multi-plataforma

Licença: MIT License

Repositório: https://github.com/restify/node-restify

Página ocial: http://restify.com/

Notas:

Restify (Team, 2011) é uma framework desenvolvida em Node.js. Está otimizada para desenvolver serviços web RESTful de alta performance. Assenta em características como: facilidade de produção de aplicações, mesmo modelo de middleware que a framework Express, facilidade de depuração e semanticamente correta (apoiada em RFC177).

Outras características:-

177Request for Comments - documentos técnicos desenvolvidos e mantidos pelo IETF (Internet

2.4.14 SailsJS

Desenvolvida por: Mike McNeil e outros

Desenhada por: -

Desenvolvida em: Javascript; Node.js

Criada em: Julho de 2012

Última versão estável: 1.1.0-3 / 24 de agosto, 2018 Sistema operativo / Plataforma: Multi-plataforma

Licença: MIT License

Repositório: https://github.com/balderdashy/sails

Página ocial: http://sailsjs.com/

Notas:

SailsJS (McNeil, 2012) é uma framework desenvolvida em Node.js.

Outras características: desenvolvida completamente em Javascript, suporta vários sistemas de base de dados, associações exíveis na modelação de dados baseadas no modelo relacional (one-to-many, many-to-many)178, auto geração de

API REST, suporte nativo de websockets179, declarativa / reutilizável / políticas

de segurança implementadas, agnóstica no frontend, pipeline180 de desenvolvimento

de assets de frontend, estrutura de base sólida (baseada em Express, socket.io181),

enorme comunidade de desenvolvimento, etc. 178Um para muitos, muitos para muitos.

179Tecnologia que permite a comunicação bidirecional por canais full-duplex sobre um único

socketTransmission Control Protocol (TCP).

180Cadeia de elementos de processamento (processos, threads, corrotinas, funções, etc.),

organizados de modo que a saída de cada elemento seja a entrada do próximo.

2.4.15 LoopBack

Desenvolvida por: StrongLoop (pertence à IBM)

Desenhada por: -

Desenvolvida em: Javascript; Node.js

Criada em: Junho de 2013

Última versão estável: 3.23.2 / outubro, 2018 Sistema operativo / Plataforma: Multi-plataforma

Licença: MIT License

Repositório: https://github.com/strongloop/loopback

Página ocial: https://loopback.io/

Notas:

LoopBack (IBM,2013) é desenvolvida em Node.js. Desenvolvida pela StronLoop182.

Outras características: desenvolvimento da stack completa, rápido desenvolvimento (assente em desenvolvimento modular), suportado pela IBM, multi-ferramentas fornecidas pela StronLoop, ORM com múltiplos connectors disponibilizados pela comunidade, controlo de acessos por utilizador baseado em roles, desenvolvido sobre Swagger, etc.

2.4.16 Gugamarket

Desenvolvida por: -

Desenhada por: Pliik

Desenvolvida em: Javascript; Node.js

Criada em: -

Última versão estável: -

Sistema operativo / Plataforma: Multi-plataforma

Licença: -

Repositório: https://github.com/pliik/gugamarket

Página ocial: https://www.gugamarket.com/

182Empresa americana que pertence à IBM e trabalha com o Node.js para criar e oferecer

Notas:

Gugamarket (Pliik, 2015) é uma framework desenvolvida em Node.js.

Outras características: baseado em várias tecnologias base como: Express, Swagger, Mongoose183, Jade184, Passwordless185 e Mocha186, desenvolvimento da

stack completa, etc.

2.4.17 Grails

Desenvolvida por: Graeme Rocher

Desenhada por: -

Desenvolvida em: Java; Groovy

Criada em: Outubro de 2005

Última versão estável: 3.3.8 / 10 de agosto, 2018 Sistema operativo / Plataforma: Multi-plataforma

Licença: Apache License 2.0

Repositório: https://github.com/grails/grails-core

Página ocial: http://grails.org/

Notas:

Grails (Rocher, 2011) é uma framework desenvolvida em Groovy e baseada em Spring boot.

Outras características: baseada em Spring boot, curva de aprendizagem rápida, fácil integração com Java, integrada com GORM187 / API REST / React188 /

Angular189, extensível através da utilização de plugins, tecnologias de apresentação

183Servidor web embebido multi-plataforma e biblioteca de rede com funções TCP, cliente e

servidor HTTP, cliente e servidor websocket, cliente MQTT, etc.

184Linguagem de programação orientada a objetos que possui uma grande integração com um

sistema de gestão de base de dados orientado a objetos.

185Autenticação por token via correio eletrónico.

186Framework de testes Javasript para programas desenvolvidos em Node.js. 187ORM do Grails.

188Biblioteca JavaScript de código aberto para criar interfaces de utilizador.

189Plataforma de desenvolvimento de aplicações web de código aberto e frontend baseado

em TypeScript liderado pela equipa Angular da Google e por uma comunidade de indivíduos e corporações.

View190, código aberto, capacidades de desenvolvimento assíncrono, linguagens

Domain-Specic191 e suporte para diferentes IDE192.

2.4.18 Conclusão

Framework Linguagem de

programação Especíca para REST Django REST Framework Python Sim

Flask-RESTful Python Sim

Laravel PHP Não

Zend Framework PHP Não

CakePHP PHP Não

Restlet Java Sim

Spark Java Não

Sinatra Ruby on Rails Não

Express Node.js Não

Restify Node.js Sim

SailsJS Node.js Não

LoopBack Node.js Sim

Gugamarket Node.js Sim

Spring boot Groovy Não

Grails Groovy Não

Phoenix Erlang Não

Tabela 2.9  Frameworks de desenvolvimento (REST)

Na resolução de problemas e implementação de novas soluções, os programadores podem enveredar por várias vias: desenvolver uma solução própria ou utilizar bibliotecas cuidadosamente selecionadas ou ainda utilizar uma framework. Como o problema a resolver tem grandes probabilidades de ser um problema com solução já existente, torna-se cara e demorada a implementação de uma solução de raiz, só sendo válida essa implementação se for um problema único e sem solução existente. Normalmente o código fonte das frameworks não pode ser alterado, no entanto costumam ser fornecidos mecanismos de extensão que permitem o desenvolvimento de novos componentes. De entre as frameworks revistas algumas são especícas para

190Tecnologia que permite gerar HTML, JSON e XML a partir de GSP, JSON Views e

Markup Views.

191Linguagem de computador especializada para um domínio de aplicação especíco, em

contraste a uma linguagem de propósito geral.

REST e outras podem facilmente ser estendidas para a utilização em API REST (vid. tabela2.9). A utilização de frameworks também trás facilidade em termos de controlo do uxo de desenvolvimento.

2.5 Microserviços

2.5.1 Introdução

A implementação de serviços web pode utilizar duas abordagens: arquitetura monolítica ou microserviços. Nesta secção serão apresentados os conceitos de arquitectura monolítica e de microserviços e será exposta a sua relevância no desenvolvimento de serviços web.

Documentos relacionados