sábado, 28 de setembro de 2013

REST - Modelo de Maturidade de Richardson

Durante a sua apresentação Justice Will Take Us Millions Of Intricate Moves no QCon San Francisco 2008, Leonard Richardson propos uma classificação para os Web Services. O Modelo de Maturidade de Richardson (RMM - Richardson Maturity Model) propõe três níveis de maturidade com base no suporte deste serviço para URI, HTTP e Hipermídia.

Nível 0 - Service end point communication

É caracterizado pelos serviços que possuem uma única URI, e utiliza um método único HTTP (tipicamente POST). A maioria dos Web Services baseados em (WS-*) utilizam um único URI para identificar um ponto final, e o protocolo HTTP POST para transferir as cargas baseadas em SOAP, efetivamente ignorando o resto dos verbos HTTP.

Nível 1 - Resource based communication

O próximo nível de maturidade emprega muitas URI mas um simples verbo HTTP. A chave da fundamental da divisão entre estes tipos de serviços rudimentares e o Nível 0, é que o nível de um serviço pode expor inúmeros recursos lógicos, enquanto que o Nível 0 todas as interações são realizadas através de um único (grande, complexo) túnel de recursos. Neste nível as interações são através da inserção dos nomes da operação e os parâmetros em uma URI, em seguida, transmitir essa URI para um serviço remoto, normalmente via HTTP GET.

Nível 2 - HTTP verbs based communication

Este nível acolhe inúmeros recursos URI endereçáveis​​. Esse apoio aos serviços vários dos verbos HTTP em cada recurso é exposto. Incluído neste nível serviços como CRUD são realizados, onde o estado dos recursos, que representam tipicamente entidades empresariais, podem ser manipulados através da rede.

Nível 3 - Hypermedia communication

Este nível de serviço suporta a noção de hipermídia como motor do estado para um aplicativo. Ou seja, as representações podem conter links URI para outros recursos que possam ser de interesse para os consumidores. O serviço leva os consumidores através de uma trilha de recursos e obtém como resultado as transições de estado da aplicação.

Resumidamente, este modelo define três níveis para se trabalhar com a arquitetura Web, porém consideramos que apenas o Nível 3 trabalha com a arquitetura REST:
  • Nível 1 (Recursos) - Lida com a complexidade e utiliza o termo dividir e conquistar, quebra a extremidade de um serviço grande em vários recursos.
  • Nível 2 (Verbos HTTP) - Introduz um conjunto padrão de verbos HTTP de forma que possamos lidar com as situações semelhantes, da mesma forma, com a remoção de variação desnecessária.
  • Nível 3 (Controle Hipermídia) - Permite a descoberta, e proporciona uma forma de criar um protocolo mais auto-documentado.
Obrigado e até a próxima
Fernando Anselmo

PS. Um excelente artigo sobre este tema pode ser acessado aqui.

0 comentários:

Postar um comentário