dnad 2012 iis - uma questão de arquitetura
TRANSCRIPT
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.
IIS 1.0
• 1995
• ONE-WAY
• Apenas arquivos estáticos
• Arquitetura Monolitica
(MTX.EXE)
• Add-on do Windows NT 3.51
IIS 3.0 e 4.0
• 1998
• TWO-WAY, ainda sofrivel
• Ainda é Monolitico
• Windows NT 4 (Service Pack 3)
• IIS 4 era Option Pack
IIS 5.0 • 2000
• TWO-WAY, fácil
• Core Monolitico, com pontos
de extensão
• DLLHOST.EXE
• Windows 2000
• ASP é criado (uhuuuuu)
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
IIS 7.0 e 7.5
• 2008
• MULTI-WAY, bem fácil
• Completamente reescrito
• Windows 2008 e Vista
• Arquitetura baseada em plugins
Overview of IIS 6.0
Architecture
http://www.microsoft.com/technet/prodtechnol/
WindowsServer2003/Library/IIS/843df643-1dbb-
4fb6-910d-ec1965fa9e43.mspx?mfr=true
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?
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
var result =
command.ExecuteNonQuery(
“UPDATE Tabela SET Ativo=1“
);
// 240.000.000 + tempo de
processamento do banco depois
print(result.TotalCount);
.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
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
var result =
command.ExecuteNonQuery(
“UPDATE Tabela SET Ativo=1“,
function(result){
// faz algo com o retorno
}
);
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