SlideShare une entreprise Scribd logo
1  sur  15
CEJS 0.0.2
Mudando de renderização client-side para server-side: uma experiência
QUEM SOU EU?

•   Hamon Vitorino
•   Desenvolvedor na Fortes desde 2010
•   Trabalho há 9 anos com tecnologias .Net
WEB FORMS X MVC
•   Testabilidade
•   Manutenibilidade
•   Customização
JQUERYUI
•   Bom poder de customização
•   Domínio sobre (quase todo) o HTML exibido
•   Componentes client-side prontos: calendário, popup, validação de formulários...
•   Boa disponibilidade de componentes de terceiros
•   Documentação razoável e uma comunidade muito grande
MASSSSSS...
•   Como fazer disso tudo uma app homogênea visualmente e em termos de usabilidade?
•   Cadê a grid paginada, com filtro assíncrono no cliente ou no servidor, flutuante, com
    ordenação por múltiplas células, que podem ser escolhidas, movidas, removidas ou
    adicionadas?
EXTJS3 (SEUS PROBLEMAS ACABARAM!)
•   Componentes client-side em javascript
•   Reuso de código
•   Visual muito elegante
•   Possui a marioria dos componentes necessários
•   Documentação muito boa
MASSSSSS...
•   Não tem boa convivência com outras bibliotecas
•   Enorme quantidade de código (~5k de C# para ~22k de js)
•   Quase nenhum domínio sobre o HTML e o CSS
•   Dificuldade de customizar devido ao ciclo de vida obscuro dos componentes
•   Gerenciamento de layout próprio
•   Pesado no browser (FF chegou a consumir 1,5GB)
•   O HTML gerado é muito denso, dificultando testes de aceitação
•   Excessivamente parecido com o Desktop
EXTJS4
•   Todos os componentes da versão anterior mais um framework mvc (parecido com o
    backbone)
•   Permite a criação e gerenciamento de módulos e quando devem ser carregados
•   Componentização melhorada, pois o ciclo de vida ficou menos obscuro
MASSSSSS...
•   Todos os defeitos da versão anterior, exceto pela componentização e modularização
•   Modularização baseada em strings, impedindo a IDE (VS2010) de gerar intellisense (faz
    muita falta)
•   A baixa capacidade de customização foi decisiva aqui, além da aparência de Desktop
SAMMYJS + MUSTACHE
•   Total controle sobre o HTML (enfim!)
•   Boa (e necessária) convivência com outra bibliotecas
•   Liberdade de escolha da sua biblioteca de templates (mustache)
MASSSSSS...
•   Necessidade de manter dois sistemas de rotas (cliente e servidor)
•   Dificuldade de criar/reusar componentes usando somente uma biblioteca de templates
    client-side
•   Baixa manutenibilidade
HELPERS SERVER-SIDE + KNOCKOUTJS
•   Componentes (templates/partial views) tipados e configuráveis, escritos no server-side
    usando Razor
•   Helpers (C#) que renderizam os componentes
•   Aparência e comportamento homogêneos e definidos pela equipe
•   Comportamentos dinâmicos nas máginas ficaram mais fáceis com a implementação de
    MVVM do KO e seus bindings
•   Menos código javascript
•   Boa convivência com outras bibliotecas
•   Layout gerenciado pelo browser (#win)
COMO TODOS OS OUTROS, TAMBÉM TEM UM
MASSSSSS...
•   Todo o código é de nossa responsabilidade e isso implica em manutenção evolutiva e
    corretiva
LINKS
•   jqueryui.com
•   jquery.com
•   sammyjs.org
•   mustache.github.com
•   knockoutjs.com
CONTATOS
•   @hvitorino
•   github.com/hvitorino
•   hamon.vitorino@gmail.com

Contenu connexe

Tendances

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemSaveincloud
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsRogerio Chaves
 
Escopo crítico nove características-chave que viabilizam a execução do projeto
Escopo crítico nove características-chave que viabilizam a execução do projetoEscopo crítico nove características-chave que viabilizam a execução do projeto
Escopo crítico nove características-chave que viabilizam a execução do projetoLumis
 
Play framework
Play frameworkPlay framework
Play frameworknone
 
Aula 4. bibliotecas js
Aula 4. bibliotecas jsAula 4. bibliotecas js
Aula 4. bibliotecas jsandreluizlc
 
Introducao desenvolvimento-web
Introducao desenvolvimento-webIntroducao desenvolvimento-web
Introducao desenvolvimento-webMarcio Mota
 
Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Rafael Pazini
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosVinícius Krolow
 
Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Gabriel Rodrigues Couto
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiRafael Nunes
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating MicroservicesThiago Ramos
 

Tendances (20)

Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
Ria
RiaRia
Ria
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on Rails
 
Escopo crítico nove características-chave que viabilizam a execução do projeto
Escopo crítico nove características-chave que viabilizam a execução do projetoEscopo crítico nove características-chave que viabilizam a execução do projeto
Escopo crítico nove características-chave que viabilizam a execução do projeto
 
Play framework
Play frameworkPlay framework
Play framework
 
Aula 4. bibliotecas js
Aula 4. bibliotecas jsAula 4. bibliotecas js
Aula 4. bibliotecas js
 
Introducao desenvolvimento-web
Introducao desenvolvimento-webIntroducao desenvolvimento-web
Introducao desenvolvimento-web
 
Introdução à web
Introdução à webIntrodução à web
Introdução à web
 
Web Standards
Web StandardsWeb Standards
Web Standards
 
Angularjs
AngularjsAngularjs
Angularjs
 
Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?Front-end: O que é necessário saber ?
Front-end: O que é necessário saber ?
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenos
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por ai
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
 

Similaire à CEJS 0.0.2

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a WebLuiz Cláudio Silva
 
A nova geração da arquitetura web para a era da nuvem
A nova geração da arquitetura web para a era da nuvemA nova geração da arquitetura web para a era da nuvem
A nova geração da arquitetura web para a era da nuvemCloves Moreira Junior
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...tdc-globalcode
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...Marcelo Palladino
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server EmbratelAlex Hübner
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsRenato Groff
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 

Similaire à CEJS 0.0.2 (20)

Desenvolvimento web produtivo
Desenvolvimento web produtivoDesenvolvimento web produtivo
Desenvolvimento web produtivo
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
2006 - ASP.NET.ppt
2006 - ASP.NET.ppt2006 - ASP.NET.ppt
2006 - ASP.NET.ppt
 
Desenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVCDesenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVC
 
A nova geração da arquitetura web para a era da nuvem
A nova geração da arquitetura web para a era da nuvemA nova geração da arquitetura web para a era da nuvem
A nova geração da arquitetura web para a era da nuvem
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server Embratel
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application Insights
 
Web Dev Camp
Web Dev CampWeb Dev Camp
Web Dev Camp
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 

CEJS 0.0.2

  • 1. CEJS 0.0.2 Mudando de renderização client-side para server-side: uma experiência
  • 2. QUEM SOU EU? • Hamon Vitorino • Desenvolvedor na Fortes desde 2010 • Trabalho há 9 anos com tecnologias .Net
  • 3. WEB FORMS X MVC • Testabilidade • Manutenibilidade • Customização
  • 4. JQUERYUI • Bom poder de customização • Domínio sobre (quase todo) o HTML exibido • Componentes client-side prontos: calendário, popup, validação de formulários... • Boa disponibilidade de componentes de terceiros • Documentação razoável e uma comunidade muito grande
  • 5. MASSSSSS... • Como fazer disso tudo uma app homogênea visualmente e em termos de usabilidade? • Cadê a grid paginada, com filtro assíncrono no cliente ou no servidor, flutuante, com ordenação por múltiplas células, que podem ser escolhidas, movidas, removidas ou adicionadas?
  • 6. EXTJS3 (SEUS PROBLEMAS ACABARAM!) • Componentes client-side em javascript • Reuso de código • Visual muito elegante • Possui a marioria dos componentes necessários • Documentação muito boa
  • 7. MASSSSSS... • Não tem boa convivência com outras bibliotecas • Enorme quantidade de código (~5k de C# para ~22k de js) • Quase nenhum domínio sobre o HTML e o CSS • Dificuldade de customizar devido ao ciclo de vida obscuro dos componentes • Gerenciamento de layout próprio • Pesado no browser (FF chegou a consumir 1,5GB) • O HTML gerado é muito denso, dificultando testes de aceitação • Excessivamente parecido com o Desktop
  • 8. EXTJS4 • Todos os componentes da versão anterior mais um framework mvc (parecido com o backbone) • Permite a criação e gerenciamento de módulos e quando devem ser carregados • Componentização melhorada, pois o ciclo de vida ficou menos obscuro
  • 9. MASSSSSS... • Todos os defeitos da versão anterior, exceto pela componentização e modularização • Modularização baseada em strings, impedindo a IDE (VS2010) de gerar intellisense (faz muita falta) • A baixa capacidade de customização foi decisiva aqui, além da aparência de Desktop
  • 10. SAMMYJS + MUSTACHE • Total controle sobre o HTML (enfim!) • Boa (e necessária) convivência com outra bibliotecas • Liberdade de escolha da sua biblioteca de templates (mustache)
  • 11. MASSSSSS... • Necessidade de manter dois sistemas de rotas (cliente e servidor) • Dificuldade de criar/reusar componentes usando somente uma biblioteca de templates client-side • Baixa manutenibilidade
  • 12. HELPERS SERVER-SIDE + KNOCKOUTJS • Componentes (templates/partial views) tipados e configuráveis, escritos no server-side usando Razor • Helpers (C#) que renderizam os componentes • Aparência e comportamento homogêneos e definidos pela equipe • Comportamentos dinâmicos nas máginas ficaram mais fáceis com a implementação de MVVM do KO e seus bindings • Menos código javascript • Boa convivência com outras bibliotecas • Layout gerenciado pelo browser (#win)
  • 13. COMO TODOS OS OUTROS, TAMBÉM TEM UM MASSSSSS... • Todo o código é de nossa responsabilidade e isso implica em manutenção evolutiva e corretiva
  • 14. LINKS • jqueryui.com • jquery.com • sammyjs.org • mustache.github.com • knockoutjs.com
  • 15. CONTATOS • @hvitorino • github.com/hvitorino • hamon.vitorino@gmail.com