iis - uma questão de arquitetura

42
OU? COM? Uma questão de arquitetura

Upload: sidneyfilho

Post on 12-Jul-2015

768 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: IIS - Uma questão de arquitetura

OU?

COM?

Uma questão de arquitetura

Page 2: IIS - Uma questão de arquitetura

EU Sidney F, drogado e prostituido.

Há 6 anos ainda luta para se livrar do

WebForms. Ativista contra a entrada de novas

drogas na vida do desenvolvedor moderno

como Coffeescript.

Page 3: IIS - Uma questão de arquitetura

Internet

Page 4: IIS - Uma questão de arquitetura

Primeiro Passo Admita que você tem um problema

Page 5: IIS - Uma questão de arquitetura

“Um homem que

não conhece sua

história está fadado a

repeti-la”

Page 6: IIS - Uma questão de arquitetura
Page 7: IIS - Uma questão de arquitetura

IIS 1.0

• 1995

• ONE-WAY

• Apenas arquivos estáticos

• Arquitetura Monolitica

(MTX.EXE)

• Add-on do Windows NT 3.51

Page 8: IIS - Uma questão de arquitetura
Page 9: IIS - Uma questão de arquitetura

IIS 2.0

• 1996

• TWO-WAY, sofrivel

• Surge o CGI

• Ainda é Monolitico

• Embutido no Windows NT 4

Page 10: IIS - Uma questão de arquitetura
Page 11: IIS - Uma questão de arquitetura

IIS 3.0 e 4.0

• 1998

• TWO-WAY, ainda sofrivel

• Ainda é Monolitico

• Windows NT 4 (Service Pack 3)

• IIS 4 era Option Pack

Page 12: IIS - Uma questão de arquitetura
Page 13: IIS - Uma questão de arquitetura

IIS 5.0 • 2000

• TWO-WAY, fácil

• Core Monolitico, com pontos

de extensão

• DLLHOST.EXE

• Windows 2000

• ASP é criado (uhuuuuu)

Page 14: IIS - Uma questão de arquitetura
Page 15: IIS - Uma questão de arquitetura

IIS 6.0 • 2003

• TWO-WAY, bem fácil

• Core com multiplos niveis de

isolamento

• W3WP.EXE

• Windows 2003 e XP

• .NET entra em cena

Page 16: IIS - Uma questão de arquitetura
Page 17: IIS - Uma questão de arquitetura

IIS 7.0 e 7.5

• 2008

• MULTI-WAY, bem fácil

• Completamente reescrito

• Windows 2008 e Vista

• Arquitetura baseada em plugins

Page 18: IIS - Uma questão de arquitetura

Overview of IIS 6.0

Architecture

http://www.microsoft.com/technet/prodtechnol/

WindowsServer2003/Library/IIS/843df643-1dbb-

4fb6-910d-ec1965fa9e43.mspx?mfr=true

Page 19: IIS - Uma questão de arquitetura

Internamente

é assim

Page 20: IIS - Uma questão de arquitetura
Page 21: IIS - Uma questão de arquitetura

HTTP.SYS

http://sitequalquer.com/TESTE.HTM

http://sitequalquer.com/IMAGEM.PNG

http://sitequalquer.com/DrogaPesada.aspx

Static Provider .NET Provider

http://sitequalquer.com/RotaLouca/13

W3WP.EXE

SVCHOST.EXE

Como está

configurado o

mapeamento de

requisições?

Page 22: IIS - Uma questão de arquitetura

var result =

command.ExecuteNonQuery(

“UPDATE Tabela SET Ativo=1“

);

Page 23: IIS - Uma questão de arquitetura

A thread fica parada

apenas aguardando a

resposta do Banco de

Dados

Page 24: IIS - Uma questão de arquitetura

Tempo do I/O L1: 3 instruções

L2: 14 instruções

RAM: 250 instruções

DISK: 41,000,000 instruções

NETWORK: 240,000,000 instruções

Page 25: IIS - Uma questão de arquitetura

var result =

command.ExecuteNonQuery(

“UPDATE Tabela SET Ativo=1“

);

// 240.000.000 + tempo de

processamento do banco depois

print(result.TotalCount);

Page 26: IIS - Uma questão de arquitetura

.NET Provider

Program Counter

Para de Processar

Program Counter

Volta a Processar

}

Milh

ões

de inst

ruçõ

es

perd

idas

6 T

hre

ad

s o

cup

and

o m

em

ória

Page 27: IIS - Uma questão de arquitetura

Como evitar este

desperdicio?

Page 28: IIS - Uma questão de arquitetura

NodeJS

http://s3.amazonaws.com/four.livejournal/20091

117/jsconf.pdf

Page 29: IIS - Uma questão de arquitetura

Porque NodeJS?

Eu gosto e gosto não

se discute.

Page 30: IIS - Uma questão de arquitetura

Como funciona a

arquitetura no

NodeJS?

Page 31: IIS - Uma questão de arquitetura
Page 32: IIS - Uma questão de arquitetura

LIBEV

http://sitequalquer.com/TESTE.HTM

http://sitequalquer.com/IMAGEM.PNG

http://sitequalquer.com/DrogaPesada.aspx

Static Provider Sua Aplicação

http://sitequalquer.com/RotaLouca/13

JS Libraries

Page 33: IIS - Uma questão de arquitetura

var result =

command.ExecuteNonQuery(

“UPDATE Tabela SET Ativo=1“,

function(result){

// faz algo com o retorno

}

);

Page 34: IIS - Uma questão de arquitetura

Node JS

function (result) { … }

LIBEV 1a Requisição

PC processa

Código chama IO

PC volta p/ LIBEV

O tempo que para o IO retornar e

acionar o callback pode levar muito mais

de 240.000.000 instruções se lembram?

Vamos liberar a Thread para processar

outra coisa

Page 35: IIS - Uma questão de arquitetura
Page 36: IIS - Uma questão de arquitetura

É possivel usar o

NodeJS junto com

IIS?

Page 37: IIS - Uma questão de arquitetura
Page 38: IIS - Uma questão de arquitetura

Internamente

ficaria assim

Page 39: IIS - Uma questão de arquitetura

É possivel desenvolver

considerando o IO

Bloqueante no .NET?

Page 40: IIS - Uma questão de arquitetura

Mas meus sistemas

legados é possivel

mudar essa arquitetura?

Page 41: IIS - Uma questão de arquitetura

Dúvidas?

Page 42: IIS - Uma questão de arquitetura

Só por hoje Obrigado