SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
Revitalizando aplicações
Windows
Usando Cef/CefGlue, Message Bus e React.JS
Marcelo Palladino
public class MarceloPalladino: SerHumano,
IDesenvolvedor, IArquitetoDeSoftware
@mfpalladino
Henrique Sosa
Front-End Developer
@henriquesosa
Comunidades
- Inovação em SaaS
- React Brasil
Disclaimer
Arquitetura de software?
"A arquitetura de software engloba o conjunto de decisões importantes sobre a
organização de um sistema de software, incluindo a seleção dos elementos
estruturais e as interfaces pelas quais o sistema se compõe; comportamento
como especificado na colaboração entre esses elementos; composição destes
elementos estruturais e comportamentais em subsistemas maiores; e um estilo
de arquitetura que orienta essa organização. Arquitetura de software envolve
também a funcionalidade, usabilidade, resistência, desempenho, reutilização,
compreensibilidade, restrições econômicas e tecnológicas, vantagens e
desvantagens e preocupações estéticas ."
Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of architecture based on work by Mary Shaw and David
Garlan (Shaw and Garlan 1996).
Fowler sendo Fowler
“A indústria de software se delicia em pegar palavras e estendê-las em uma
miríade de significados sutilmente contraditórios. Uma das maiores sofredoras é
‘arquitetura’.”
● A decomposição em alto nível de um sistema em suas partes.
● Decisões que são difíceis de mudar.
● No final, a arquitetura se resume a coisas importantes - seja lá o que isso
signifique.
Patterns of Enterprise Application Architecture, Martin Fowler.
Alinhamento de Expectativas
- Não é um tutorial sobre Cef/CefGlue
- Não é uma palestra sobre React.JS
- Não é um live coding
- Detalhes de implementação
- https://github.com/henriquesosa
- https://github.com/mfpalladino
Tomadas de decisões de
arquitetura de software
Um pouco de contextualização
1998
Contexto: Quem nunca?
- Cliente servidor
- Única aplicação de Chat no
Brasil
- Boom no mercado de
atendimento online
Operador
Windows
Chat
WEB
MSSQL
*desenho simplificado da arquitetura 1.0
Problema: Não escala!
2007
Contexto: O famoso três
camadas
Operador
Windows
Chat
WEBMSSQL
Servidor de
aplicação
SOAP
SOAP
Aplicação
*desenho simplificado da arquitetura 2.0 (três camadas)
O problema de escalabilidade
persiste!
2011 - 2012
Problema de escala no
servidor definitivamente
resolvido
Contexto: Microserviços
- Persistência poliglota
- Caches distribuídos
- Filas
- Processos assíncronos
- Load balancers
- Auto scaling
- Tolerância a falhas
Operador
Windows
Chat
WEB
MSSQL
Servidor de
aplicação
SOAP
REST
Serviço
MYSQL
Serviço
Dynamo
Serviço
S3
Serviço
Serviço
...
Serviço
Serviço ...
Aplicação
Microserviços
REST/XMPP
*desenho simplificado da arquitetura 3.0
(microserviços)
2015 - 2016
Um típico WindowsForms
LEGADO
- Uma palavra: GORDO
- base de código de ~10 anos
- ~150MB
- 50 projetos
- Alto acoplamento
- Alta complexidade
- …
- …
- Mas o principal é...
Operador Windows
Outros tipos de problemas de
escala
- Do ponto de vista do produto
- Difícil garantir adoção de correções/melhorias
- Métrica: Em média 2 anos para atualização em todos os operadores
- Limitador da evolução do produto
- Dificulta priorização no backlog
- Do ponto de vista do desenvolvimento
- O WindowsForms é antigo
- Profissionais cada vez mais escassos
Idiossincrasias do mercado de
callcenters
- Gestão de mudança no ambiente extremamente burocrática
- Poucas “janelas” para modificação no ambiente
- Grande limitação de recursos
- Acesso a recursos locais
- Versão .net framework
- IP de saída
Respostas de arquitetura
Não fazer nada e pedir
para sair
Reescrever tudo
- Prazo estimado (8 meses a 1 ano)
- Custo sem entrega contínua de valor
- Muito tempo para concorrência agir
“They did it by making the single worst strategic mistake that any
software company can make:
They decided to rewrite the code from scratch.”
Joel Spolsky - Autor do artigo "Things You Should Never Do"
"Dar um jeito" de entregar valor
continuamente e resolver o
problema
Qual foi a forma e quais os finais esperados?
- Forma
- Substituir as partes da aplicação Windows por “micro” aplicações WEB
- Final intermediario
- Uma aplicação Windows que é apenas uma “casca” para várias aplicações WEB
- Final
- Uma aplicação Windows que é apenas uma “casca” para uma aplicação WEB
Preparação
- Pesquisa de casos parecidos
- Palestra do Felipe Ribeiro (Spotify) na BrazilJS 2015
- Conferência com o time de desenvolvimento
- Provas de conceito
Message Bus
(integrando através de mensageria)
WindowsForms
UserControl
Message Bus
WindowsForms
UserControl
WindowsForms
UserControl
WEB APP WEB APP WEB APP
Message Bus
(integrando através de mensageria) - O conteúdo da mensagem inclui
informações relacionadas ao evento
(ex: lista de categorias de habilidades)
- O formato da mensagem define um
contrato entre a aplicação Windows e
as partes WEB
(ex: uma categoria de habilidade possui
id, nome e uma lista de habilidades)
1
2
Message Bus
(integrando através de mensageria)
- As partes "assinam" o canal para que
sejam notificadas quando mensagens
forem "adicionadas"
1
2
Message Bus: Por quê?
(integrando através de mensageria)
A relação de "publicação" e "consumo" passa a ser naturalmente assíncrona e
desacoplada!
Fonte: http://elemarjr.com/pt/2012/10/18/sobre-a-integracao-de-aplicacoes-atraves-de-mensageria/
Requisitos:
- Padrão para tratamento de
estado de forma imutável
- Ponto centralizado para
“desarmar” a comunicação
entre as aplicações
- Modelo claro e conveniente de
web components
Lidando com estado: Uma
abordagem possível
CONTROLLER
MODELVIEW
*desenho simplificado da arquitetura do Front 1.0
CONTROLLER
MODEL
VIEW
*desenho simplificado da arquitetura do Front 2.0
VIEW
CONTROLLER
CONTROLLER
CONTROLLER
MODEL
MODEL
Problema: Não atende aos
requisitos!
Redux
- Redux is a predictable state container for JavaScript apps.
- Wrote by @dan_abramov
- http://redux.js.org
VIEW ACTION REDUCER STORE
*desenho de exemplo de recebimento de dados da aplicação Windows
Front-end
Fluxo do estado
Aplicação WEB -> Aplicação Windows
VIEW ACTION REDUCER STORE
MESSAGE
HANDLER
APLICAÇÃO
WINDOWS
Front-end
*desenho de exemplo de requisição para a aplicação Windows
VIEW ACTION REDUCER STORE
MESSAGE
HANDLER
APLICAÇÃO
WINDOWS
Mensagem
Front-end
*desenho de exemplo de requisição para a aplicação Windows
VIEW ACTION REDUCER STORE
MESSAGE
HANDLER
APLICAÇÃO
WINDOWS
Mensagem
Front-end
*desenho de exemplo de requisição para a aplicação Windows
VIEW ACTION REDUCER STORE
MESSAGE
HANDLER
APLICAÇÃO
WINDOWS
Front-end
*desenho de exemplo de requisição para a aplicação Windows
VIEW ACTION REDUCER STORE
MESSAGE
HANDLER
APLICAÇÃO
WINDOWS
Front-end
*desenho de exemplo de requisição para a aplicação Windows
Fluxo do estado
Aplicação Windows -> Aplicação WEB
VIEW ACTION REDUCER STORE
*desenho de exemplo de recebimento de dados da aplicação Windows
MESSAGE
HANDLER
Mensagem
Front-end
APLICAÇÃO
WINDOWS
Então por que React.JS?
React.JS
- A Javascript library for building user interfaces
- Wrote by Instagram
- Maintained by Facebook
- Brand new
- https://facebook.github.io/react
React.JS
Componentização
PAGE
LIST HEADERSEARCH
LIST ITEM
React.JS
Velocidade
PAGE
LIST
HEADER
SEARCH
LIST ITEM
LIST LIST ITEM
LIST ITEM
State
Chromium Embedded
Framework
- Framework open source que
permite embedar web browser
baseado no Chromium core.
- https://bitbucket.org/chromiu
membedded/cef
Aplicação
Windows
Renderer 1
CEF Host
Renderer
“N”
CEF um pouco mais de perto
- CEF é um projeto de código aberto que permite aos desenvolvedores
facilmente exibir conteúdo HTML em suas aplicações desktop. A exibição de
HTML pode ser finamente controlada e até mesmo ampliado através da API
disponíveis. Por baixo dos panos, a renderização do HTML é feita por meio
do Chromium browser, usando a engine Blink (anteriormente WebKit) e a
máquina virtual V8 JavaScript.
CEF como framework
- Como framework, o CEF fornece um conjunto de headers e uma biblioteca.
Ele está disponível para Windows, Mac OSX e Linux. As APIs C++ e C estão
disponíveis como parte do projeto, mas há projetos que mantêm bindings
para outros ambientes como .NET, Java e Python.
CefGlue
- Binding .NET/Mono para o Chromium Embedded Framework (CEF).
- https://bitbucket.org/xilium/xilium.cefglue/wiki/Home
1
2
CEF: Por quê?
- Tentamos usar o IE…
- Mais casos de uso conhecidos com CEF
Pontos de atenção
- Contexto de thread
- Menu de contexto
- Log
- DevTools
- Memória
- Um processo vs vários
processos
Pontos de atenção
- Contexto de thread
- Menu de contexto
- Log
- DevTools
- Memória
- Um processo vs vários
processos
Pontos de atenção
- Contexto de thread
- Menu de contexto
- Log
- DevTools
- Memória
- Um processo vs vários
processos
Pontos de atenção
- Contexto de thread
- Menu de contexto
- Log
- DevTools
- Memória
- Um processo vs vários
processos
Pontos de atenção
- Contexto de thread
- Menu de contexto
- Log
- DevTools
- Memória
- Um processo vs vários
processos
Conclusões
- Entender a visão de longo prazo do projeto
- Trabalhar com restrições econômicas
- Trabalhar com restrições tecnológicas
- Gerar, entender, trabalhar e argumentar com base em métricas
- Transitar bem entre diferentes times (técnicos ou não)
- Lidar com conflitos técnicos e expectativas
Obrigado!

Mais conteúdo relacionado

Mais procurados

Dru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoDru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoJuliana Cindra
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETJosé Corrêa Viana
 
Dalton Sergio Leonardo Pt Currículo 20160803
Dalton Sergio Leonardo Pt  Currículo 20160803Dalton Sergio Leonardo Pt  Currículo 20160803
Dalton Sergio Leonardo Pt Currículo 20160803Dalton Sergio Leonardo
 
Joana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático wwwJoana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático wwwJoana Costa
 
Fermine como ferramenta de apoio à implantação do nível G do MPS.Br
Fermine como ferramenta de apoio à implantação do nível G do MPS.BrFermine como ferramenta de apoio à implantação do nível G do MPS.Br
Fermine como ferramenta de apoio à implantação do nível G do MPS.BrJuliana Cindra
 
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...Os Fantasmas !
 
Microservices arquitetura parte 2
Microservices arquitetura parte 2Microservices arquitetura parte 2
Microservices arquitetura parte 2Agni Campos
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIFelipe Knappe
 
Como utilizar windows management instrumentation com a linguagem vb script
Como utilizar windows management instrumentation com a linguagem vb scriptComo utilizar windows management instrumentation com a linguagem vb script
Como utilizar windows management instrumentation com a linguagem vb scriptLucas Vinícius
 
Mda Apresentacao
Mda ApresentacaoMda Apresentacao
Mda Apresentacaoguestff06a
 

Mais procurados (19)

UM ESTUDO SOBRE SOA
UM ESTUDO SOBRE SOAUM ESTUDO SOBRE SOA
UM ESTUDO SOBRE SOA
 
Dru - Desenvolvimento para Reuso
Dru - Desenvolvimento para ReusoDru - Desenvolvimento para Reuso
Dru - Desenvolvimento para Reuso
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Dalton Sergio Leonardo Pt Currículo 20160803
Dalton Sergio Leonardo Pt  Currículo 20160803Dalton Sergio Leonardo Pt  Currículo 20160803
Dalton Sergio Leonardo Pt Currículo 20160803
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
Joana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático wwwJoana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático www
 
Fermine como ferramenta de apoio à implantação do nível G do MPS.Br
Fermine como ferramenta de apoio à implantação do nível G do MPS.BrFermine como ferramenta de apoio à implantação do nível G do MPS.Br
Fermine como ferramenta de apoio à implantação do nível G do MPS.Br
 
Middleware
MiddlewareMiddleware
Middleware
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDADesenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
 
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...
CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS IFPB 6º PERÍODO PROGRAMAÇÃO PARA...
 
Microservices arquitetura parte 2
Microservices arquitetura parte 2Microservices arquitetura parte 2
Microservices arquitetura parte 2
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
 
Web Services
Web ServicesWeb Services
Web Services
 
Corbawebserves
CorbawebservesCorbawebserves
Corbawebserves
 
Como utilizar windows management instrumentation com a linguagem vb script
Como utilizar windows management instrumentation com a linguagem vb scriptComo utilizar windows management instrumentation com a linguagem vb script
Como utilizar windows management instrumentation com a linguagem vb script
 
Mda Apresentacao
Mda ApresentacaoMda Apresentacao
Mda Apresentacao
 

Destaque

TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...tdc-globalcode
 
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídosTDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídostdc-globalcode
 
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...tdc-globalcode
 
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de ExperienciaTDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experienciatdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...tdc-globalcode
 
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...tdc-globalcode
 
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...tdc-globalcode
 
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...tdc-globalcode
 
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...tdc-globalcode
 
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...tdc-globalcode
 
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoTTDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoTtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NETtdc-globalcode
 
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...tdc-globalcode
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...tdc-globalcode
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patternstdc-globalcode
 
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKTDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKtdc-globalcode
 
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!tdc-globalcode
 

Destaque (20)

TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
TDC2016POA | Trilha Agile - Agile Marketing: os resultados alcançados com pri...
 
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídosTDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
TDC2016POA | Trilha Agile - Beyond borders: aplicando ágil em times distribuídos
 
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
TDC2016POA | Trilha Agile - Dual-Track Agile: incluindo o PO e o UX no seu pi...
 
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de ExperienciaTDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
TDC2016POA | Trilha Agile - Agilidade além da TI: Um Relato de Experiencia
 
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
TDC2016POA | Trilha Analise de Negocios - Inovando em negócios com foco na eX...
 
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...TDC2016POA | Trilha Analise de Negocios -  Business Coach, o Analista de Negó...
TDC2016POA | Trilha Analise de Negocios - Business Coach, o Analista de Negó...
 
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
TDC2016POA | Trilha Agile - CHA com Scrum Master - Conhecimentos, Habilidades...
 
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
TDC2016POA | Trilha Analise de Negocios - Estranho no ninho: Um brasileiro li...
 
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
TDC2016POA | Trilha Analise de Negocios - Como fatiar seu produto em estórias...
 
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
TDC2016POA | Trilha Agile - Ágil fora da TI: como expandir o Agil para as are...
 
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
TDC2016POA | Trilha Android - Monetização: conheça a rede de anúncios que pag...
 
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
TDC2016POA | Trilha Arduino - A Prática do Arduino em Ensino: o Case de um La...
 
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoTTDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
TDC2016POA | Trilha Android - Firebase Cloud Messaging para Android e IoT
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
 
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...
TDC2016POA | Trilha Android - Construa um app consciente com a Google Awarene...
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
 
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKTDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
 
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
 

Semelhante a TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js

Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivoelliando dias
 
Service Oriented Front-End Architecture
Service Oriented Front-End ArchitectureService Oriented Front-End Architecture
Service Oriented Front-End ArchitectureCristiano Gomes
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetElvis Fusco
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Luciana Zaina
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)Giovanni Bassi
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBDescobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBelliando dias
 

Semelhante a TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js (20)

Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivo
 
Service Oriented Front-End Architecture
Service Oriented Front-End ArchitectureService Oriented Front-End Architecture
Service Oriented Front-End Architecture
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
 
Soa Woa Rest
Soa Woa RestSoa Woa Rest
Soa Woa Rest
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Web Dev Camp
Web Dev CampWeb Dev Camp
Web Dev Camp
 
Apresentação ISFramework
Apresentação ISFrameworkApresentação ISFramework
Apresentação ISFramework
 
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEBDescobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

Livro de bio celular e molecular Junqueira e Carneiro.pdf
Livro de bio celular e molecular Junqueira e Carneiro.pdfLivro de bio celular e molecular Junqueira e Carneiro.pdf
Livro de bio celular e molecular Junqueira e Carneiro.pdfRafaela Vieira
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxLuizHenriquedeAlmeid6
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoCelianeOliveira8
 
Jogo de Revisão Primeira Série (Primeiro Trimestre)
Jogo de Revisão Primeira  Série (Primeiro Trimestre)Jogo de Revisão Primeira  Série (Primeiro Trimestre)
Jogo de Revisão Primeira Série (Primeiro Trimestre)Paula Meyer Piagentini
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREIVONETETAVARESRAMOS
 
Ser Mãe Atípica, uma jornada de amor e aceitação
Ser Mãe Atípica, uma jornada de amor e aceitaçãoSer Mãe Atípica, uma jornada de amor e aceitação
Ser Mãe Atípica, uma jornada de amor e aceitaçãoJayaneSales1
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas BrasileirosMary Alvarenga
 
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxSlides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxLuizHenriquedeAlmeid6
 
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...Unidad de Espiritualidad Eudista
 
As teorias de Lamarck e Darwin. Evolução
As teorias de Lamarck e Darwin. EvoluçãoAs teorias de Lamarck e Darwin. Evolução
As teorias de Lamarck e Darwin. Evoluçãoprofleticiasantosbio
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...nexocan937
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxkarinasantiago54
 
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptx
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptxSlides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptx
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptxLuizHenriquedeAlmeid6
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãodanielagracia9
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxHenriqueLuciano2
 
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...azulassessoria9
 

Último (20)

Livro de bio celular e molecular Junqueira e Carneiro.pdf
Livro de bio celular e molecular Junqueira e Carneiro.pdfLivro de bio celular e molecular Junqueira e Carneiro.pdf
Livro de bio celular e molecular Junqueira e Carneiro.pdf
 
MANEJO INTEGRADO DE DOENÇAS (MID)
MANEJO INTEGRADO DE DOENÇAS (MID)MANEJO INTEGRADO DE DOENÇAS (MID)
MANEJO INTEGRADO DE DOENÇAS (MID)
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
 
Os Ratos - Dyonelio Machado FUVEST 2025
Os Ratos  -  Dyonelio Machado  FUVEST 2025Os Ratos  -  Dyonelio Machado  FUVEST 2025
Os Ratos - Dyonelio Machado FUVEST 2025
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e feminino
 
Jogo de Revisão Primeira Série (Primeiro Trimestre)
Jogo de Revisão Primeira  Série (Primeiro Trimestre)Jogo de Revisão Primeira  Série (Primeiro Trimestre)
Jogo de Revisão Primeira Série (Primeiro Trimestre)
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
 
Ser Mãe Atípica, uma jornada de amor e aceitação
Ser Mãe Atípica, uma jornada de amor e aceitaçãoSer Mãe Atípica, uma jornada de amor e aceitação
Ser Mãe Atípica, uma jornada de amor e aceitação
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas Brasileiros
 
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxSlides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
 
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
 
As teorias de Lamarck e Darwin. Evolução
As teorias de Lamarck e Darwin. EvoluçãoAs teorias de Lamarck e Darwin. Evolução
As teorias de Lamarck e Darwin. Evolução
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
 
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptx
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptxSlides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptx
Slides Lição 2, Betel, Ordenança para participar da Ceia do Senhor, 2Tr24.pptx
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetização
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
 
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
 

TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js

  • 2. Marcelo Palladino public class MarceloPalladino: SerHumano, IDesenvolvedor, IArquitetoDeSoftware @mfpalladino Henrique Sosa Front-End Developer @henriquesosa
  • 3. Comunidades - Inovação em SaaS - React Brasil
  • 5. Arquitetura de software? "A arquitetura de software engloba o conjunto de decisões importantes sobre a organização de um sistema de software, incluindo a seleção dos elementos estruturais e as interfaces pelas quais o sistema se compõe; comportamento como especificado na colaboração entre esses elementos; composição destes elementos estruturais e comportamentais em subsistemas maiores; e um estilo de arquitetura que orienta essa organização. Arquitetura de software envolve também a funcionalidade, usabilidade, resistência, desempenho, reutilização, compreensibilidade, restrições econômicas e tecnológicas, vantagens e desvantagens e preocupações estéticas ." Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of architecture based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996).
  • 6. Fowler sendo Fowler “A indústria de software se delicia em pegar palavras e estendê-las em uma miríade de significados sutilmente contraditórios. Uma das maiores sofredoras é ‘arquitetura’.” ● A decomposição em alto nível de um sistema em suas partes. ● Decisões que são difíceis de mudar. ● No final, a arquitetura se resume a coisas importantes - seja lá o que isso signifique. Patterns of Enterprise Application Architecture, Martin Fowler.
  • 7. Alinhamento de Expectativas - Não é um tutorial sobre Cef/CefGlue - Não é uma palestra sobre React.JS - Não é um live coding - Detalhes de implementação - https://github.com/henriquesosa - https://github.com/mfpalladino
  • 8. Tomadas de decisões de arquitetura de software
  • 9. Um pouco de contextualização
  • 10.
  • 11. 1998 Contexto: Quem nunca? - Cliente servidor - Única aplicação de Chat no Brasil - Boom no mercado de atendimento online Operador Windows Chat WEB MSSQL *desenho simplificado da arquitetura 1.0
  • 13. 2007 Contexto: O famoso três camadas Operador Windows Chat WEBMSSQL Servidor de aplicação SOAP SOAP Aplicação *desenho simplificado da arquitetura 2.0 (três camadas)
  • 14. O problema de escalabilidade persiste!
  • 15. 2011 - 2012 Problema de escala no servidor definitivamente resolvido Contexto: Microserviços - Persistência poliglota - Caches distribuídos - Filas - Processos assíncronos - Load balancers - Auto scaling - Tolerância a falhas
  • 17. 2015 - 2016 Um típico WindowsForms LEGADO - Uma palavra: GORDO - base de código de ~10 anos - ~150MB - 50 projetos - Alto acoplamento - Alta complexidade - … - … - Mas o principal é... Operador Windows
  • 18. Outros tipos de problemas de escala - Do ponto de vista do produto - Difícil garantir adoção de correções/melhorias - Métrica: Em média 2 anos para atualização em todos os operadores - Limitador da evolução do produto - Dificulta priorização no backlog - Do ponto de vista do desenvolvimento - O WindowsForms é antigo - Profissionais cada vez mais escassos
  • 19. Idiossincrasias do mercado de callcenters - Gestão de mudança no ambiente extremamente burocrática - Poucas “janelas” para modificação no ambiente - Grande limitação de recursos - Acesso a recursos locais - Versão .net framework - IP de saída
  • 21. Não fazer nada e pedir para sair
  • 22. Reescrever tudo - Prazo estimado (8 meses a 1 ano) - Custo sem entrega contínua de valor - Muito tempo para concorrência agir “They did it by making the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.” Joel Spolsky - Autor do artigo "Things You Should Never Do"
  • 23. "Dar um jeito" de entregar valor continuamente e resolver o problema
  • 24. Qual foi a forma e quais os finais esperados? - Forma - Substituir as partes da aplicação Windows por “micro” aplicações WEB - Final intermediario - Uma aplicação Windows que é apenas uma “casca” para várias aplicações WEB - Final - Uma aplicação Windows que é apenas uma “casca” para uma aplicação WEB
  • 25. Preparação - Pesquisa de casos parecidos - Palestra do Felipe Ribeiro (Spotify) na BrazilJS 2015 - Conferência com o time de desenvolvimento - Provas de conceito
  • 26. Message Bus (integrando através de mensageria) WindowsForms UserControl Message Bus WindowsForms UserControl WindowsForms UserControl WEB APP WEB APP WEB APP
  • 27. Message Bus (integrando através de mensageria) - O conteúdo da mensagem inclui informações relacionadas ao evento (ex: lista de categorias de habilidades) - O formato da mensagem define um contrato entre a aplicação Windows e as partes WEB (ex: uma categoria de habilidade possui id, nome e uma lista de habilidades) 1 2
  • 28. Message Bus (integrando através de mensageria) - As partes "assinam" o canal para que sejam notificadas quando mensagens forem "adicionadas" 1 2
  • 29. Message Bus: Por quê? (integrando através de mensageria) A relação de "publicação" e "consumo" passa a ser naturalmente assíncrona e desacoplada! Fonte: http://elemarjr.com/pt/2012/10/18/sobre-a-integracao-de-aplicacoes-atraves-de-mensageria/
  • 30. Requisitos: - Padrão para tratamento de estado de forma imutável - Ponto centralizado para “desarmar” a comunicação entre as aplicações - Modelo claro e conveniente de web components
  • 31. Lidando com estado: Uma abordagem possível
  • 33. CONTROLLER MODEL VIEW *desenho simplificado da arquitetura do Front 2.0 VIEW CONTROLLER CONTROLLER CONTROLLER MODEL MODEL
  • 34. Problema: Não atende aos requisitos!
  • 35.
  • 36. Redux - Redux is a predictable state container for JavaScript apps. - Wrote by @dan_abramov - http://redux.js.org
  • 37. VIEW ACTION REDUCER STORE *desenho de exemplo de recebimento de dados da aplicação Windows Front-end
  • 38. Fluxo do estado Aplicação WEB -> Aplicação Windows
  • 39. VIEW ACTION REDUCER STORE MESSAGE HANDLER APLICAÇÃO WINDOWS Front-end *desenho de exemplo de requisição para a aplicação Windows
  • 40. VIEW ACTION REDUCER STORE MESSAGE HANDLER APLICAÇÃO WINDOWS Mensagem Front-end *desenho de exemplo de requisição para a aplicação Windows
  • 41. VIEW ACTION REDUCER STORE MESSAGE HANDLER APLICAÇÃO WINDOWS Mensagem Front-end *desenho de exemplo de requisição para a aplicação Windows
  • 42. VIEW ACTION REDUCER STORE MESSAGE HANDLER APLICAÇÃO WINDOWS Front-end *desenho de exemplo de requisição para a aplicação Windows
  • 43. VIEW ACTION REDUCER STORE MESSAGE HANDLER APLICAÇÃO WINDOWS Front-end *desenho de exemplo de requisição para a aplicação Windows
  • 44. Fluxo do estado Aplicação Windows -> Aplicação WEB
  • 45. VIEW ACTION REDUCER STORE *desenho de exemplo de recebimento de dados da aplicação Windows MESSAGE HANDLER Mensagem Front-end APLICAÇÃO WINDOWS
  • 46. Então por que React.JS?
  • 47.
  • 48. React.JS - A Javascript library for building user interfaces - Wrote by Instagram - Maintained by Facebook - Brand new - https://facebook.github.io/react
  • 51. Chromium Embedded Framework - Framework open source que permite embedar web browser baseado no Chromium core. - https://bitbucket.org/chromiu membedded/cef Aplicação Windows Renderer 1 CEF Host Renderer “N”
  • 52. CEF um pouco mais de perto - CEF é um projeto de código aberto que permite aos desenvolvedores facilmente exibir conteúdo HTML em suas aplicações desktop. A exibição de HTML pode ser finamente controlada e até mesmo ampliado através da API disponíveis. Por baixo dos panos, a renderização do HTML é feita por meio do Chromium browser, usando a engine Blink (anteriormente WebKit) e a máquina virtual V8 JavaScript.
  • 53. CEF como framework - Como framework, o CEF fornece um conjunto de headers e uma biblioteca. Ele está disponível para Windows, Mac OSX e Linux. As APIs C++ e C estão disponíveis como parte do projeto, mas há projetos que mantêm bindings para outros ambientes como .NET, Java e Python.
  • 54. CefGlue - Binding .NET/Mono para o Chromium Embedded Framework (CEF). - https://bitbucket.org/xilium/xilium.cefglue/wiki/Home
  • 55. 1 2
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63. CEF: Por quê? - Tentamos usar o IE… - Mais casos de uso conhecidos com CEF
  • 64. Pontos de atenção - Contexto de thread - Menu de contexto - Log - DevTools - Memória - Um processo vs vários processos
  • 65. Pontos de atenção - Contexto de thread - Menu de contexto - Log - DevTools - Memória - Um processo vs vários processos
  • 66. Pontos de atenção - Contexto de thread - Menu de contexto - Log - DevTools - Memória - Um processo vs vários processos
  • 67. Pontos de atenção - Contexto de thread - Menu de contexto - Log - DevTools - Memória - Um processo vs vários processos
  • 68. Pontos de atenção - Contexto de thread - Menu de contexto - Log - DevTools - Memória - Um processo vs vários processos
  • 69. Conclusões - Entender a visão de longo prazo do projeto - Trabalhar com restrições econômicas - Trabalhar com restrições tecnológicas - Gerar, entender, trabalhar e argumentar com base em métricas - Transitar bem entre diferentes times (técnicos ou não) - Lidar com conflitos técnicos e expectativas