SlideShare uma empresa Scribd logo
Modelo APM em .NET 
por 
Pedro Gabriel 
O porquê da utilização/necessidade de uma abordagem 
assíncrona : 
Esta necessidade surge devido, principalmente à evolução das arquitecturas que 
passaram a ser multi-core em vez de single-core. Anteriormente, quando falávamos em 
aplicações “escaláveis”, qualquer aplicação single-thread era escalável num ambiente 
single-core, uma vez que todos os melhoramentos feitos aos processadores da época 
eram baseados numa melhor performance em single-core. 
Com o aparecimento de arquitecturas multi-core, qualquer aplicação single-thread 
deixou de ser escalável, pois não tira partido das funcionalidades das novas 
arquitecturas. Por suas vez, as linguagens de programação evoluiram de tal forma que 
praticamente todas as linguagens de alto nível suportam este tipo de abordagem, dando 
assim a possibilidade do programador criar aplicações multi-thread. 
Principais diferenças entre “modelos”: 
Normalmente, perante programas single-thread o fluxo de actividades pode ser 
descrito da seguinte forma: 
Estamos então, na presença de acções sequênciais, que mesmo sendo independentes ou 
não, só serão executadas consoante a ordém disposta. 
1
Modelo APM em .NET 
por 
Pedro Gabriel 
No que toca a um programa multi-thread, podemos descrever o fluxo de acções da 
seguinte forma: 
Por esta ordem de ideias, cada acção é executada por uma Thread diferente, deixando 
ao programador a gestão do fluxo do seu programa conforme o tempo que cada acção 
pode levar a ser completada. Com esta abordagem, está implicito um overhead que 
pode ser criado se uma aplicação tiver mais Threads do que processadores lógicos para 
uma determinada máquina. 
Tipicamente, estes custos podem ser descritos da seguinte forma: 
● Custos Estáticos: Estão associados à memória utilizada para conter 
estruturas de dados relativas às Threads, e ao espaço de endereçamento 
alocado. Proporcional ao número de Threads. 
● Custos Dinâmicos: Associados à actividade de scheduling. Quantas mais 
Threads estiverem em execução - READY - maior será a actividade de 
Scheduling. Proporcional ao número de Threads “Ready” para além do nº de 
cores. 
A este modelo está ainda adjacente a necessidade de implementar mecanismos de 
sincronização de Threads relativamente ao acesso a dados, por forma a manter os 
mesmos no estado correcto. 
2
Modelo APM em .NET 
por 
Pedro Gabriel 
Por último, resta demonstrar o fluxo de uma abordagem/modelo assíncrono. 
Neste modelo, as ações são executadas de forma intercalada, com a gestão realizada 
apenas por uma Thread. 
Uma das grandes vantagens deste modelo, é o facto de o programador poder dar 
“ordens” às ações a realizar. Do ponto de vista do segundo modelo (multi-thread), ações 
podem ser interrompidas consoante o “desejo” do Sistema Operativo. Neste último 
modelo é o programador quem pode dar ordem de interrupção, mantendo assim o 
controlo sobre as ações. 
3
Modelo APM em .NET 
por 
Pedro Gabriel 
Após a descrição da motivação para o uso de programação assíncrona e uma breve 
descrição dos modelos mais utilizados, vejamos agora um modelo concreto que foi o 
principal padrão utilizado pela framework .NET antes da versão 4.5. 
Este documento mostra ainda os três tipos de rendezvous que integram o APM: 
Wait-Until Done, Polling, Callback. 
Asynchronous Programming Model (APM): 
Este padrão permite-nos executar várias ações em diferentes Threads. Várias classes da 
framework .NET suportam este padrão através do fornecimento de métodos que 
seguem a cnvenção BeginXXX e EndXXX. Para demonstrar este mesmo padrão, iremos 
utilizada o método Read da classe Stream. 
Primeiro, vejamos a versão sincrona: 
public int Read (byte[] buffer, int offset, int size); 
De seguida, a versão que suporta APM: 
public IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback callback, object state); 
public int EndRead (IAsyncResult asyncResult); 
Outra particularidade é o tipo de retorno que está envolvido nestes métodos da versão 
APM. O método que inicia a operação (Begin) devolve um objecto do tipo IAsyncResult 
que, basicamente, é um token que representa a operação. 
Existe também um callback, que é basicamente uma função que será executada 
mediante certas condições. Neste caso concreto, este callback só é executado quando a 
operação assíncrona termina ou quando ocorre um erro na sua realização. 
A definição do callback é dada pelo seguinte delegate: 
public delegate void AsyncCallback (IAsyncResult ar); 
Quem tratar deste callback/delegate invoca o método que devolve o resultado final da 
operação assíncrona (End). É também responsável por re-lançar um erro caso este 
ocorra. 
4
Modelo APM em .NET 
por 
Pedro Gabriel 
Vejamos então código-fonte que demonstra este padrão: 
É de notar então, que na construcção do objecto do tipo FileStream é necessária a 
indicação da intenção futura de realizar uma leitura assíncrona. De modo a realizar a 
leitura deste mesmo modo, são invocados os métodos que suportam a versão APM, 
BeginRead e EndRead. O primeiro recebe todos os argumentos que o método Read 
recebe, e mais dois que efectuam o suporte ao modelo APM - Callback e Object-State. 
Note-se ainda o retorno de uma objecto IAsyncResult que é posteriormente passado ao 
método End para obter o resultado final. 
5
Modelo APM em .NET 
por 
Pedro Gabriel 
Rendezvous 1 - Wait-Until Done: 
Este tipo de rendezvous permite iniciar uma acção assíncrona, realizar outro trabalho, e 
posteriormente voltar para verificar se a acção foi completada entretanto. A verificação 
irá bloquear até que a acção seja completada. 
Percebemos então que, qualquer código que seja colocado entre as chamas dos 
métodos APM será executado enquanto o mesmo pedaço de código lê o ficheiro de 
texto. É uma abordagem possivel para aplicações que pretendam ter um grau de 
resposta alto perante um elevado número de acções a realizar. 
6
Modelo APM em .NET 
por 
Pedro Gabriel 
Rendezvous 2 - Polling : 
Este tipo de rendezvous envolve a Thread que pretende ser notificada directamente, ou 
seja, é esta que tem de verificar, ao longo de um periodo, a realização da acção 
assíncrona que iniciou. Tem a vantagem de não bloquear enquanto realiza as 
verificações. A verificação é feita através da chamada da propriedade de IsComplete do 
resultado devolvido pelo método BeginXXX. 
Código acima demonstra que, é possivel realizar outro trabalho, à medida que se 
verifica a realização da acção inicial, sem que esta bloqueie a Thread envolvida. 
7
Modelo APM em .NET 
por 
Pedro Gabriel 
Rendezvous 3 - Callback : 
Este último rendezvous obriga à passagem de um método callback que será executado 
quando a acção assíncrona terminar ou se gerar erro. É desta forma que ficamos a saber 
que a acção terminou. Por esta lógica, é dentro do callback que iremos obter o resultado 
final da nossa acçao assíncrona, através do método EndXX. 
Na prática, o que o método BeginXX está a fazer é colocar a acção assíncrona numa fila 
de acções (queue), que através de Threads mantidas pela ThreadPool internal do .NET, 
será realizada mais tarde. A forma que a framework tem de avisar a Thread que iniciou a 
acção é invocar o callback fornecido pela Thread inicial. 
Se o callback for: 
Então a chamada será feita da seguinte forma: 
fs.BeginRead(s_data, 0, s_data.Length, ReadIsDone, fs); 
Como podemos ver, a obtenção do resultado é feita dentro do callback. O mesmo 
resultado é tratado lá dentro, uma vez que não é permitido qualquer retorno. Relembro 
que a assinatura do método tem que satisfazer o delegate demonstrado anteriormente. 
8

Mais conteúdo relacionado

Mais procurados

Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
Alexandre Duarte
 
Pvm
PvmPvm
Estrutura de controle repetição C++
Estrutura de controle repetição C++Estrutura de controle repetição C++
Estrutura de controle repetição C++
Sedu
 
Aula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHPAula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHP
Jorge Ávila Miranda
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
Anderson Favaro
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
Thiago Poiani
 
Resumo vliw very long instrution word
Resumo vliw very long instrution wordResumo vliw very long instrution word
Resumo vliw very long instrution word
Leonardo Leonardo Buzatta Borchartt
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
Eric Lemes
 
Aula7 algoritmos computacionais
Aula7 algoritmos computacionaisAula7 algoritmos computacionais
Aula7 algoritmos computacionais
Carlos Braga
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
Computação Depressão
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
Professor Samuel Ribeiro
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Joao Galdino Mello de Souza
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL Server
Luciano Moreira
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
Glaucio Scheibel
 
TWP40 Revisão Geral 3
TWP40 Revisão Geral 3TWP40 Revisão Geral 3
TWP40 Revisão Geral 3
FATEC São José dos Campos
 
Apresentação análise e simulação de um "Job Shop"
Apresentação análise e simulação de um "Job Shop"Apresentação análise e simulação de um "Job Shop"
Apresentação análise e simulação de um "Job Shop"
Paulo Henrique Santini
 
Laboratório de Programação II: Criptografia em C
Laboratório de Programação II: Criptografia em CLaboratório de Programação II: Criptografia em C
Laboratório de Programação II: Criptografia em C
Alex Camargo
 

Mais procurados (17)

Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Pvm
PvmPvm
Pvm
 
Estrutura de controle repetição C++
Estrutura de controle repetição C++Estrutura de controle repetição C++
Estrutura de controle repetição C++
 
Aula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHPAula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHP
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
 
Resumo vliw very long instrution word
Resumo vliw very long instrution wordResumo vliw very long instrution word
Resumo vliw very long instrution word
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
Aula7 algoritmos computacionais
Aula7 algoritmos computacionaisAula7 algoritmos computacionais
Aula7 algoritmos computacionais
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL Server
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
TWP40 Revisão Geral 3
TWP40 Revisão Geral 3TWP40 Revisão Geral 3
TWP40 Revisão Geral 3
 
Apresentação análise e simulação de um "Job Shop"
Apresentação análise e simulação de um "Job Shop"Apresentação análise e simulação de um "Job Shop"
Apresentação análise e simulação de um "Job Shop"
 
Laboratório de Programação II: Criptografia em C
Laboratório de Programação II: Criptografia em CLaboratório de Programação II: Criptografia em C
Laboratório de Programação II: Criptografia em C
 

Semelhante a APM Model in .NET - PT-pt

Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
J Chaves Silva
 
Lamport
LamportLamport
Tutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMITutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMI
Simão Neto
 
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualMedindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Rafael Reis
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
Luiz Arthur
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
Engenharia de Software Ágil
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
MiguelHenley1
 
Artigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobraArtigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobra
Goncalvinho
 
Paralelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto EscalarParalelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto Escalar
Wendel Oliveira
 
Apostila ajax
Apostila ajaxApostila ajax
Apostila ajax
Andre Meirelles
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
Luis Ferreira
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
Edgar Eler
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
Bianca Dantas
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
Eduardo Gabina
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Francisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
Fer Nando
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Elisabete Pantoja
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
Fabiano Rodrigues
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
ItamarGoncalves2
 

Semelhante a APM Model in .NET - PT-pt (20)

Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Lamport
LamportLamport
Lamport
 
Tutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMITutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMI
 
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente VirtualMedindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
Medindo e Modelando o Desempenho de Aplicações em um Ambiente Virtual
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Artigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobraArtigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobra
 
Paralelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto EscalarParalelização de Algoritmo do Produto Escalar
Paralelização de Algoritmo do Produto Escalar
 
Apostila ajax
Apostila ajaxApostila ajax
Apostila ajax
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 

Mais de Pedro De Almeida

Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
Pedro De Almeida
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
Pedro De Almeida
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
Pedro De Almeida
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
Pedro De Almeida
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
Pedro De Almeida
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
Pedro De Almeida
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
Pedro De Almeida
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
Pedro De Almeida
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Pedro De Almeida
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
Pedro De Almeida
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
Pedro De Almeida
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
Pedro De Almeida
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
Pedro De Almeida
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
Pedro De Almeida
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
Pedro De Almeida
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
Pedro De Almeida
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
Pedro De Almeida
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
Pedro De Almeida
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectos
Pedro De Almeida
 

Mais de Pedro De Almeida (20)

Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectos
 

Último

Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
KleginaldoPaz2
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
lveiga112
 
Estrutura Pedagógica - Laboratório de Educação a Distância.ppt
Estrutura Pedagógica - Laboratório de Educação a Distância.pptEstrutura Pedagógica - Laboratório de Educação a Distância.ppt
Estrutura Pedagógica - Laboratório de Educação a Distância.ppt
livrosjovert
 
As sequências didáticas: práticas educativas
As sequências didáticas: práticas educativasAs sequências didáticas: práticas educativas
As sequências didáticas: práticas educativas
rloureiro1
 
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIASA SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
HisrelBlog
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
SILVIAREGINANAZARECA
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
YeniferGarcia36
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
DECIOMAURINARAMOS
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
AntnioManuelAgdoma
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
eaiprofpolly
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
MateusTavares54
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
WelberMerlinCardoso
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
profesfrancleite
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
TomasSousa7
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
Marlene Cunhada
 
Pintura Romana .pptx
Pintura Romana                     .pptxPintura Romana                     .pptx
Pintura Romana .pptx
TomasSousa7
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
LuizHenriquedeAlmeid6
 

Último (20)

Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
 
Estrutura Pedagógica - Laboratório de Educação a Distância.ppt
Estrutura Pedagógica - Laboratório de Educação a Distância.pptEstrutura Pedagógica - Laboratório de Educação a Distância.ppt
Estrutura Pedagógica - Laboratório de Educação a Distância.ppt
 
As sequências didáticas: práticas educativas
As sequências didáticas: práticas educativasAs sequências didáticas: práticas educativas
As sequências didáticas: práticas educativas
 
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIASA SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
 
Pintura Romana .pptx
Pintura Romana                     .pptxPintura Romana                     .pptx
Pintura Romana .pptx
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
 

APM Model in .NET - PT-pt

  • 1. Modelo APM em .NET por Pedro Gabriel O porquê da utilização/necessidade de uma abordagem assíncrona : Esta necessidade surge devido, principalmente à evolução das arquitecturas que passaram a ser multi-core em vez de single-core. Anteriormente, quando falávamos em aplicações “escaláveis”, qualquer aplicação single-thread era escalável num ambiente single-core, uma vez que todos os melhoramentos feitos aos processadores da época eram baseados numa melhor performance em single-core. Com o aparecimento de arquitecturas multi-core, qualquer aplicação single-thread deixou de ser escalável, pois não tira partido das funcionalidades das novas arquitecturas. Por suas vez, as linguagens de programação evoluiram de tal forma que praticamente todas as linguagens de alto nível suportam este tipo de abordagem, dando assim a possibilidade do programador criar aplicações multi-thread. Principais diferenças entre “modelos”: Normalmente, perante programas single-thread o fluxo de actividades pode ser descrito da seguinte forma: Estamos então, na presença de acções sequênciais, que mesmo sendo independentes ou não, só serão executadas consoante a ordém disposta. 1
  • 2. Modelo APM em .NET por Pedro Gabriel No que toca a um programa multi-thread, podemos descrever o fluxo de acções da seguinte forma: Por esta ordem de ideias, cada acção é executada por uma Thread diferente, deixando ao programador a gestão do fluxo do seu programa conforme o tempo que cada acção pode levar a ser completada. Com esta abordagem, está implicito um overhead que pode ser criado se uma aplicação tiver mais Threads do que processadores lógicos para uma determinada máquina. Tipicamente, estes custos podem ser descritos da seguinte forma: ● Custos Estáticos: Estão associados à memória utilizada para conter estruturas de dados relativas às Threads, e ao espaço de endereçamento alocado. Proporcional ao número de Threads. ● Custos Dinâmicos: Associados à actividade de scheduling. Quantas mais Threads estiverem em execução - READY - maior será a actividade de Scheduling. Proporcional ao número de Threads “Ready” para além do nº de cores. A este modelo está ainda adjacente a necessidade de implementar mecanismos de sincronização de Threads relativamente ao acesso a dados, por forma a manter os mesmos no estado correcto. 2
  • 3. Modelo APM em .NET por Pedro Gabriel Por último, resta demonstrar o fluxo de uma abordagem/modelo assíncrono. Neste modelo, as ações são executadas de forma intercalada, com a gestão realizada apenas por uma Thread. Uma das grandes vantagens deste modelo, é o facto de o programador poder dar “ordens” às ações a realizar. Do ponto de vista do segundo modelo (multi-thread), ações podem ser interrompidas consoante o “desejo” do Sistema Operativo. Neste último modelo é o programador quem pode dar ordem de interrupção, mantendo assim o controlo sobre as ações. 3
  • 4. Modelo APM em .NET por Pedro Gabriel Após a descrição da motivação para o uso de programação assíncrona e uma breve descrição dos modelos mais utilizados, vejamos agora um modelo concreto que foi o principal padrão utilizado pela framework .NET antes da versão 4.5. Este documento mostra ainda os três tipos de rendezvous que integram o APM: Wait-Until Done, Polling, Callback. Asynchronous Programming Model (APM): Este padrão permite-nos executar várias ações em diferentes Threads. Várias classes da framework .NET suportam este padrão através do fornecimento de métodos que seguem a cnvenção BeginXXX e EndXXX. Para demonstrar este mesmo padrão, iremos utilizada o método Read da classe Stream. Primeiro, vejamos a versão sincrona: public int Read (byte[] buffer, int offset, int size); De seguida, a versão que suporta APM: public IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback callback, object state); public int EndRead (IAsyncResult asyncResult); Outra particularidade é o tipo de retorno que está envolvido nestes métodos da versão APM. O método que inicia a operação (Begin) devolve um objecto do tipo IAsyncResult que, basicamente, é um token que representa a operação. Existe também um callback, que é basicamente uma função que será executada mediante certas condições. Neste caso concreto, este callback só é executado quando a operação assíncrona termina ou quando ocorre um erro na sua realização. A definição do callback é dada pelo seguinte delegate: public delegate void AsyncCallback (IAsyncResult ar); Quem tratar deste callback/delegate invoca o método que devolve o resultado final da operação assíncrona (End). É também responsável por re-lançar um erro caso este ocorra. 4
  • 5. Modelo APM em .NET por Pedro Gabriel Vejamos então código-fonte que demonstra este padrão: É de notar então, que na construcção do objecto do tipo FileStream é necessária a indicação da intenção futura de realizar uma leitura assíncrona. De modo a realizar a leitura deste mesmo modo, são invocados os métodos que suportam a versão APM, BeginRead e EndRead. O primeiro recebe todos os argumentos que o método Read recebe, e mais dois que efectuam o suporte ao modelo APM - Callback e Object-State. Note-se ainda o retorno de uma objecto IAsyncResult que é posteriormente passado ao método End para obter o resultado final. 5
  • 6. Modelo APM em .NET por Pedro Gabriel Rendezvous 1 - Wait-Until Done: Este tipo de rendezvous permite iniciar uma acção assíncrona, realizar outro trabalho, e posteriormente voltar para verificar se a acção foi completada entretanto. A verificação irá bloquear até que a acção seja completada. Percebemos então que, qualquer código que seja colocado entre as chamas dos métodos APM será executado enquanto o mesmo pedaço de código lê o ficheiro de texto. É uma abordagem possivel para aplicações que pretendam ter um grau de resposta alto perante um elevado número de acções a realizar. 6
  • 7. Modelo APM em .NET por Pedro Gabriel Rendezvous 2 - Polling : Este tipo de rendezvous envolve a Thread que pretende ser notificada directamente, ou seja, é esta que tem de verificar, ao longo de um periodo, a realização da acção assíncrona que iniciou. Tem a vantagem de não bloquear enquanto realiza as verificações. A verificação é feita através da chamada da propriedade de IsComplete do resultado devolvido pelo método BeginXXX. Código acima demonstra que, é possivel realizar outro trabalho, à medida que se verifica a realização da acção inicial, sem que esta bloqueie a Thread envolvida. 7
  • 8. Modelo APM em .NET por Pedro Gabriel Rendezvous 3 - Callback : Este último rendezvous obriga à passagem de um método callback que será executado quando a acção assíncrona terminar ou se gerar erro. É desta forma que ficamos a saber que a acção terminou. Por esta lógica, é dentro do callback que iremos obter o resultado final da nossa acçao assíncrona, através do método EndXX. Na prática, o que o método BeginXX está a fazer é colocar a acção assíncrona numa fila de acções (queue), que através de Threads mantidas pela ThreadPool internal do .NET, será realizada mais tarde. A forma que a framework tem de avisar a Thread que iniciou a acção é invocar o callback fornecido pela Thread inicial. Se o callback for: Então a chamada será feita da seguinte forma: fs.BeginRead(s_data, 0, s_data.Length, ReadIsDone, fs); Como podemos ver, a obtenção do resultado é feita dentro do callback. O mesmo resultado é tratado lá dentro, uma vez que não é permitido qualquer retorno. Relembro que a assinatura do método tem que satisfazer o delegate demonstrado anteriormente. 8