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
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
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!
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
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?
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e 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
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js
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

PDF
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
PPTX
4º FastShow - WPF Windows Presentation Foundation Overview
PPTX
Introdução a arquitetura de sistemas com .NET
PDF
Introdução a Arquitetura de Sistemas
PDF
201406Carvalho
PDF
Arquitetura de Sofware
PPT
DotNet vs. Java
PPT
Arquitetura de sistemas web
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
4º FastShow - WPF Windows Presentation Foundation Overview
Introdução a arquitetura de sistemas com .NET
Introdução a Arquitetura de Sistemas
201406Carvalho
Arquitetura de Sofware
DotNet vs. Java
Arquitetura de sistemas web

Mais procurados (18)

PDF
UM ESTUDO SOBRE SOA
PDF
Dru - Desenvolvimento para Reuso
PPT
Adobe Flex
PDF
Apostila - Desenvolvimento Web com ASP.NET
PPT
DOCX
Dalton Sergio Leonardo Pt Currículo 20160803
PDF
Oficina cake php
DOCX
Joana costa tp 1 – trabalho prático www
PDF
Fermine como ferramenta de apoio à implantação do nível G do MPS.Br
PPT
PDF
Mod06 licao01-apostila
PDF
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
PDF
Microservices arquitetura parte 2
PPT
Apresentação Facelets_UNIFEI
PPT
Web Services
PDF
Corbawebserves
PDF
Como utilizar windows management instrumentation com a linguagem vb script
PPT
Mda Apresentacao
UM ESTUDO SOBRE SOA
Dru - Desenvolvimento para Reuso
Adobe Flex
Apostila - Desenvolvimento Web com ASP.NET
Dalton Sergio Leonardo Pt Currículo 20160803
Oficina cake php
Joana costa tp 1 – trabalho prático www
Fermine como ferramenta de apoio à implantação do nível G do MPS.Br
Mod06 licao01-apostila
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Microservices arquitetura parte 2
Apresentação Facelets_UNIFEI
Web Services
Corbawebserves
Como utilizar windows management instrumentation com a linguagem vb script
Mda Apresentacao
Anúncio

Semelhante a TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando CefGlue, MessageBus e React.js (20)

PPTX
Treinamento ASP.NET 2014
PPT
Middleware Reflexivo
PDF
Service Oriented Front-End Architecture
PPTX
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
PDF
Escalando apps com React e Type Script e SOLID
PDF
01 - Introdução a programação para internet v1.1
PDF
Desenvolvimento de Aplicações com Visual Studio
ODP
ASP.NET e Visual Studio 2010
PPT
PHP nas Nuvens
PPT
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
PDF
Soa Woa Rest
PPT
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
PPTX
Evolução do .NET Framework e do Visual Basic
PDF
Fundamentos do asp.net
PPT
Padrão Arquitetural MVC e suas aplicações para WEB
PPTX
AAB301 - Rich Internet Application - wcamb
PPT
JavaServer Faces
PDF
PPT
Apresentação ISFramework
PDF
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Treinamento ASP.NET 2014
Middleware Reflexivo
Service Oriented Front-End Architecture
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Escalando apps com React e Type Script e SOLID
01 - Introdução a programação para internet v1.1
Desenvolvimento de Aplicações com Visual Studio
ASP.NET e Visual Studio 2010
PHP nas Nuvens
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Soa Woa Rest
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
Evolução do .NET Framework e do Visual Basic
Fundamentos do asp.net
Padrão Arquitetural MVC e suas aplicações para WEB
AAB301 - Rich Internet Application - wcamb
JavaServer Faces
Apresentação ISFramework
Descobrindo o Potencial do Flex para a Criação de Aplicações Ricas para a WEB
Anúncio

Último (12)

PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Jira Software projetos completos com scrum
Analise Estatica de Compiladores para criar uma nova LP
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Viasol Energia Solar -Soluções para geração e economia de energia
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Manejo integrado de pragas na cultura do algodão
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Conceitos básicos de Redes Neurais Artificiais
Processos no SAP Extended Warehouse Management, EWM100 Col26
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Tipos de servidor em redes de computador.pptx
Jira Software projetos completos com scrum

TDC2016SP Trilha Arquitetura.NET - 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
  • 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!
  • 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?
  • 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
  • 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