SlideShare uma empresa Scribd logo
1 de 31
Banco de Dados NoSQL com
.Net Core
Bruno Gouvêa Roldão
Agenda
1. Net Core
2. API REST
3. Hands On – Criando uma API REST
4. Modelagem de domínios
5. Hands On – Criação de domínio
6. Banco de Dados Não Relacional
7. Hands On – Conectando nossa API ao MongoDB1. Basico do TDD
Introdução ao .Net Core
Detalhes
• Sucessor do .Net Framework;
• Open Source;
• Multiplataforma;
• 100% feito para se programar utilizando linha de comando;
Net Core
API REST
O que é uma API REST?
• Servidor web;
• Utiliza requisições HTTP para extrair,
inserir, atualizar e deletar dados;
• Permite a comunicação entre dois ou
mais softwares distintos;
Porque utilizar?
• Padrão adotado por toda a industria de tecnologia;
• Utiliza o padrão HTTP;
• Pode utilizar os principais tipos de formatos de arquivos para troca de
informações, como o JSON e XML;
Verbos HTTP
• GET
• POST
• PUT
• DELETE
JSON
• Formato de arquivo para
troca de informações mais
utilizado atualmente;
• Simples;
• Performático;
• Leve.
Melhores Práticas – KISS
• Semântica intuitiva;
• Termos comuns e concretos (pedido, endereço, produto);
• Não se deve ter mais de uma maneira de obter os mesmos dados;
Melhores Práticas – Métodos
• Utilizar os verbos HTTP de maneira intuitiva;
 GET /EncontrarUsuario/1
 GET /Usuario/1
 POST /SalvarContatoUsuario
 POST /Usuario/1/Contato
HANDS ON
Criando um WebApi em .Net Core
Modelagem de Domínio
O que é DDD ?
• Domain Driven Design;
• Não é tecnologia;
• Requer entendimento do negócio;
• Não deve levar banco de dados em consideração;
• Pode ser representado por meio de diagramas de classe do padrão UML.
Exemplo
• Quero um software para restaurantes,
• que me permita através de uma comanda eletrônica,
• marcar a mesa do cliente,
• que permita ao atendente fazer pedidos,
• que o valor desta comanda seja calculada automaticamente,
• e que seja possível efetuar pagamentos parciais ou totais
Exemplo
• Quero um software para restaurantes,
• que me permita através de uma comanda eletrônica,
• marcar a mesa do cliente,
• que permita ao atendente fazer pedidos,
• que controle a quantidade de produtos consumidos,
• e que calcule o valor e seja possível efetuar pagamentos parciais ou totais
Exemplo
Injeção de Dependência
HANDS ON
Criando o domínio modelado e incrementando a API
Banco de dados não relacional
O que é um banco de dados?
• Coleção de dados;
• Representa informações sobre um
domínio específico;
• Possibilita recuperação e manipulação
destes dados.
Conceitos de NoSQL
• Not Only SQL;
• Dados semi-estruturados (Schemas
dinâmicos);
• Maior controle da aplicação sobre os
dados;
• Relacionamentos “Embedded”.
Relacionamento Embedded
MongoDB
• Document Database;
• Coleções e documentos ao invés de tabelas e registros;
• Open Source.
• Document Database;
• Coleções e documentos ao invés de tabelas e registros;
• Open Source.
• Document Database;
• Coleções e documentos ao invés de tabelas e registros;
• Open Source.
• Document Database;
• Coleções e documentos ao invés de tabelas e registros;
• Open Source.
Como são salvos os dados?
Vantagens
• Fácil de escalar;
• Trabalha melhor com sistemas distribuidos (microsserviços);
• Desempenho;
• Se adapta à modelagem da sua aplicação;
• Não gera deadlock o/
Desvantagens
• Exige mais espaço de armazenamento (HD);
• Ferramentas de gerenciamento imaturas;
• Desempenho;
HANDS ON
Conectando nossa API ao MongoDB
Dúvidas?
Obrigado!
Email: Brunogrbhg@gmail.com
Facebook: /bruno.roldao
Github: /Brunogr
Linkedin: Bruno Gouvêa Roldão

Mais conteúdo relacionado

Mais procurados

Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelMarcos Freccia
 
LAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialLAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialGabriela Ferrara
 
Monitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BIMonitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BISulamita Dantas
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQNelson Senna do Amaral
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDBFabiano Modos
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014Fernando Boaglio
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 

Mais procurados (11)

Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possível
 
LAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialLAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivial
 
Monitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BIMonitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BI
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
 
Arquitetura API em NodeJS
Arquitetura API em NodeJSArquitetura API em NodeJS
Arquitetura API em NodeJS
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
Persistência
PersistênciaPersistência
Persistência
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDB
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 

Semelhante a API REST com MongoDB e .NET Core

Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebAlexandre Andrade
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Renato Groffe
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Apresentacao banco de dados
Apresentacao banco de dadosApresentacao banco de dados
Apresentacao banco de dadosRafael Prallon
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsAndre Baltieri
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Renato Groff
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 

Semelhante a API REST com MongoDB e .NET Core (20)

Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
Webservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da WebWebservices em PHP e a liberdade da Web
Webservices em PHP e a liberdade da Web
 
Aplicações web parte 1
Aplicações web parte 1Aplicações web parte 1
Aplicações web parte 1
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Apresentacao banco de dados
Apresentacao banco de dadosApresentacao banco de dados
Apresentacao banco de dados
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 

API REST com MongoDB e .NET Core

  • 1. Banco de Dados NoSQL com .Net Core Bruno Gouvêa Roldão
  • 2. Agenda 1. Net Core 2. API REST 3. Hands On – Criando uma API REST 4. Modelagem de domínios 5. Hands On – Criação de domínio 6. Banco de Dados Não Relacional 7. Hands On – Conectando nossa API ao MongoDB1. Basico do TDD
  • 4. Detalhes • Sucessor do .Net Framework; • Open Source; • Multiplataforma; • 100% feito para se programar utilizando linha de comando;
  • 7. O que é uma API REST? • Servidor web; • Utiliza requisições HTTP para extrair, inserir, atualizar e deletar dados; • Permite a comunicação entre dois ou mais softwares distintos;
  • 8. Porque utilizar? • Padrão adotado por toda a industria de tecnologia; • Utiliza o padrão HTTP; • Pode utilizar os principais tipos de formatos de arquivos para troca de informações, como o JSON e XML;
  • 9. Verbos HTTP • GET • POST • PUT • DELETE
  • 10. JSON • Formato de arquivo para troca de informações mais utilizado atualmente; • Simples; • Performático; • Leve.
  • 11. Melhores Práticas – KISS • Semântica intuitiva; • Termos comuns e concretos (pedido, endereço, produto); • Não se deve ter mais de uma maneira de obter os mesmos dados;
  • 12. Melhores Práticas – Métodos • Utilizar os verbos HTTP de maneira intuitiva;  GET /EncontrarUsuario/1  GET /Usuario/1  POST /SalvarContatoUsuario  POST /Usuario/1/Contato
  • 13. HANDS ON Criando um WebApi em .Net Core
  • 15. O que é DDD ? • Domain Driven Design; • Não é tecnologia; • Requer entendimento do negócio; • Não deve levar banco de dados em consideração; • Pode ser representado por meio de diagramas de classe do padrão UML.
  • 16. Exemplo • Quero um software para restaurantes, • que me permita através de uma comanda eletrônica, • marcar a mesa do cliente, • que permita ao atendente fazer pedidos, • que o valor desta comanda seja calculada automaticamente, • e que seja possível efetuar pagamentos parciais ou totais
  • 17. Exemplo • Quero um software para restaurantes, • que me permita através de uma comanda eletrônica, • marcar a mesa do cliente, • que permita ao atendente fazer pedidos, • que controle a quantidade de produtos consumidos, • e que calcule o valor e seja possível efetuar pagamentos parciais ou totais
  • 20. HANDS ON Criando o domínio modelado e incrementando a API
  • 21. Banco de dados não relacional
  • 22. O que é um banco de dados? • Coleção de dados; • Representa informações sobre um domínio específico; • Possibilita recuperação e manipulação destes dados.
  • 23. Conceitos de NoSQL • Not Only SQL; • Dados semi-estruturados (Schemas dinâmicos); • Maior controle da aplicação sobre os dados; • Relacionamentos “Embedded”.
  • 25. MongoDB • Document Database; • Coleções e documentos ao invés de tabelas e registros; • Open Source. • Document Database; • Coleções e documentos ao invés de tabelas e registros; • Open Source. • Document Database; • Coleções e documentos ao invés de tabelas e registros; • Open Source. • Document Database; • Coleções e documentos ao invés de tabelas e registros; • Open Source.
  • 26. Como são salvos os dados?
  • 27. Vantagens • Fácil de escalar; • Trabalha melhor com sistemas distribuidos (microsserviços); • Desempenho; • Se adapta à modelagem da sua aplicação; • Não gera deadlock o/
  • 28. Desvantagens • Exige mais espaço de armazenamento (HD); • Ferramentas de gerenciamento imaturas; • Desempenho;
  • 29. HANDS ON Conectando nossa API ao MongoDB

Notas do Editor

  1. Contar história da minha experiência com TDD. Vou contar um pouco sobre a minha experiência com TDD. No primeiro projeto que utilizei essa técnica, eu não tinha um prazo bom, sendo apenas um mês para entregar uma solução, não tinha especificação do negócio e não dominava a técnica, conhecia vagamente o conceito, e já havia realizados testes de unidade anteriormente, mas nunca praticando o TDD. Durante o desenvolvimento, tive que ir me familiarizando com o TDD e compreendendo melhor como funcionava, me educando a utilizar e aos poucos fui conseguindo desenvolver técnicas e códigos auxiliares que me permitiam ter agilidade em desenvolver utilizando TDD. O mais interessante dessa experiência foi a forma como eu passei a compreender o modelo de negócios, que até então eu tinha dominio quase nulo. Programar utilizando TDD me fez compreender muito mais o negócio e ver aquilo do ponto de vista do usuário. Outra coisa interessante foi que eu pude ter um foco maior na arquitetura do software em si, sem me preocupar com banco de dados, de forma que até a última semana de desenvolvimento nós ainda não tinhamos banco de dados pronto, ele foi criado nessa última semana, quando o domínio da solução já estava bem modelado e as regras de negócio estavam todas implementadas.
  2. Contar história da minha experiência com TDD. Vou contar um pouco sobre a minha experiência com TDD. No primeiro projeto que utilizei essa técnica, eu não tinha um prazo bom, sendo apenas um mês para entregar uma solução, não tinha especificação do negócio e não dominava a técnica, conhecia vagamente o conceito, e já havia realizados testes de unidade anteriormente, mas nunca praticando o TDD. Durante o desenvolvimento, tive que ir me familiarizando com o TDD e compreendendo melhor como funcionava, me educando a utilizar e aos poucos fui conseguindo desenvolver técnicas e códigos auxiliares que me permitiam ter agilidade em desenvolver utilizando TDD. O mais interessante dessa experiência foi a forma como eu passei a compreender o modelo de negócios, que até então eu tinha dominio quase nulo. Programar utilizando TDD me fez compreender muito mais o negócio e ver aquilo do ponto de vista do usuário. Outra coisa interessante foi que eu pude ter um foco maior na arquitetura do software em si, sem me preocupar com banco de dados, de forma que até a última semana de desenvolvimento nós ainda não tinhamos banco de dados pronto, ele foi criado nessa última semana, quando o domínio da solução já estava bem modelado e as regras de negócio estavam todas implementadas.
  3. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  4. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  5. Contar história da minha experiência com TDD. Vou contar um pouco sobre a minha experiência com TDD. No primeiro projeto que utilizei essa técnica, eu não tinha um prazo bom, sendo apenas um mês para entregar uma solução, não tinha especificação do negócio e não dominava a técnica, conhecia vagamente o conceito, e já havia realizados testes de unidade anteriormente, mas nunca praticando o TDD. Durante o desenvolvimento, tive que ir me familiarizando com o TDD e compreendendo melhor como funcionava, me educando a utilizar e aos poucos fui conseguindo desenvolver técnicas e códigos auxiliares que me permitiam ter agilidade em desenvolver utilizando TDD. O mais interessante dessa experiência foi a forma como eu passei a compreender o modelo de negócios, que até então eu tinha dominio quase nulo. Programar utilizando TDD me fez compreender muito mais o negócio e ver aquilo do ponto de vista do usuário. Outra coisa interessante foi que eu pude ter um foco maior na arquitetura do software em si, sem me preocupar com banco de dados, de forma que até a última semana de desenvolvimento nós ainda não tinhamos banco de dados pronto, ele foi criado nessa última semana, quando o domínio da solução já estava bem modelado e as regras de negócio estavam todas implementadas.
  6. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  7. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  8. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  9. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  10. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  11. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  12. Contar história da minha experiência com TDD. Vou contar um pouco sobre a minha experiência com TDD. No primeiro projeto que utilizei essa técnica, eu não tinha um prazo bom, sendo apenas um mês para entregar uma solução, não tinha especificação do negócio e não dominava a técnica, conhecia vagamente o conceito, e já havia realizados testes de unidade anteriormente, mas nunca praticando o TDD. Durante o desenvolvimento, tive que ir me familiarizando com o TDD e compreendendo melhor como funcionava, me educando a utilizar e aos poucos fui conseguindo desenvolver técnicas e códigos auxiliares que me permitiam ter agilidade em desenvolver utilizando TDD. O mais interessante dessa experiência foi a forma como eu passei a compreender o modelo de negócios, que até então eu tinha dominio quase nulo. Programar utilizando TDD me fez compreender muito mais o negócio e ver aquilo do ponto de vista do usuário. Outra coisa interessante foi que eu pude ter um foco maior na arquitetura do software em si, sem me preocupar com banco de dados, de forma que até a última semana de desenvolvimento nós ainda não tinhamos banco de dados pronto, ele foi criado nessa última semana, quando o domínio da solução já estava bem modelado e as regras de negócio estavam todas implementadas.
  13. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  14. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  15. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  16. Como muitos já devem saber, o Test Driven Development é uma técnica que se baseia em um ciclo curto de repetições: - Criação do teste automatizado de uma nova funcionalidade, teste este que deve falhar; - Implementação minima do método a ser testado, possibilitando ao teste passer; - Por fim, refatoração do método para incluir regras de negócio mais complexas, garantindo a partir dali que aquele teste sempre irá passar.
  17. Antes de explicar a solução para o problema anterior, precisamos falar sobre injeção de dependência. Injeção de dependência tem como objetivo diminuir o acoplamento e facilitar o reuso. Consiste em você fazer uma inversão de controles; ao invés de você instanciar uma classe, você passa essa responsabilidade para um builder que fará isso por você. Dessa forma, programamos para interfaces, garantindo que uma classe não é afetada pela outra quando há modificações. É simplesmente impossível utilizar TDD sem implementar injeção de dependência no seu projeto, o que faz dele um pré requisito
  18. Contar história da minha experiência com TDD. Vou contar um pouco sobre a minha experiência com TDD. No primeiro projeto que utilizei essa técnica, eu não tinha um prazo bom, sendo apenas um mês para entregar uma solução, não tinha especificação do negócio e não dominava a técnica, conhecia vagamente o conceito, e já havia realizados testes de unidade anteriormente, mas nunca praticando o TDD. Durante o desenvolvimento, tive que ir me familiarizando com o TDD e compreendendo melhor como funcionava, me educando a utilizar e aos poucos fui conseguindo desenvolver técnicas e códigos auxiliares que me permitiam ter agilidade em desenvolver utilizando TDD. O mais interessante dessa experiência foi a forma como eu passei a compreender o modelo de negócios, que até então eu tinha dominio quase nulo. Programar utilizando TDD me fez compreender muito mais o negócio e ver aquilo do ponto de vista do usuário. Outra coisa interessante foi que eu pude ter um foco maior na arquitetura do software em si, sem me preocupar com banco de dados, de forma que até a última semana de desenvolvimento nós ainda não tinhamos banco de dados pronto, ele foi criado nessa última semana, quando o domínio da solução já estava bem modelado e as regras de negócio estavam todas implementadas.