4. A Evolução do C#
C# 5.0
Programação Assíncrona
C# 4.0 Windows Runtime
Programação Dinâmica
C# 3.0
LINQ
C# 2.0
Genericos
C# 1.0
Managed
5.
6. Assincronismo, Paralelismo e Concorrência
• Execução paralela significa que vários troços de código são
executados ao mesmo tempo (em paralelo).
• Execução concorrente significa que vários troços de código podem
aceder aos mesmos dados, não necessariamente ao mesmo
tempo, mas durante uma operação (que pode ser interrompida).
• Execução assíncrona significa que o código é executado fora da
linha lógica o código atual.
• Os três modos de execução acima podem ocorrer isoladamente ou
em combinação. Vários troços de código podem estar em execução
simultaneamente sem que isso signifique concorrência se não
acederem aos mesmos recursos. Uma operação assíncrona pode
ser executada sincronamente.
7.
8. Asynchronous Programming Model (APM)
• Até à versão 4.0 da plataforma a norma para operações
assíncronas era o Assynchronous Programming Model
(APM) que consiste em dois métodos que chamados
BeginOperation e EndOperation.
• Este modelo é seguido pela quase totalidade das classes
da Base Class Library (BCL), como, por exemplo, as
streams.
• Os métodos anónimos introduzidos no C# 2.0 ou as
expressões Lambda introduzidas no C# 3.0 podem tornar
o código mais legível, mas não deixa de ser difícil
perceber a intenção do código.
9. Event-Based Asynchronous Pattern (EBA)
• A partir da versão 2.0 começaram a surgir
algumas implementações da Event-based
Asynchronous Patter (EAP) que consiste num
método OperationAsync e um evento
OperationCompleted.
• Um exemplo da utilização deste padrão é a
classe WebClient.
• Mais uma vez, usando métodos anónimos ou
expressões Lambda talvez até se perceba a
intenção do código.
10. Task-based Asynchronous Pattern (TAP)
• A plataforma 4.0 introduziu uma nova forma de
programação assíncrona baseada em tarefas que faz
uso da Task Parellel Library (TPL).
• Esta biblioteca permite a execução de tarefas
assíncronas mesmo que as classes usadas não
tenham uma API assíncrona, assim como definir a
tarefa a executar após a conclusão de uma tarefa
(continuação) e permite o cancelamento da
execução a tarefa.
• Esta API por ter surgido após o C# 3.0 foi desenhada
já com vista à utilização de expressões Lambda
11. O Futuro Da Programação Assíncrona Na
Plataforma .NET
• A próxima versão da plataforma .NET vai trazer, não um
novo padrão de execução ou uma nova biblioteca, mas
uma nova forma de escrever código assíncrono.
• Assentando na TPL a nova forma de escrever código
introduz duas novas palavras chave: async (Async em
Visual Basic) e await (Await em Visual Basic).
• A palavra chave async é aplicada aos métodos e indica ao
compilador que deve reescrever o método de forma
assíncrona.
• A palavra chave await identifica, dentro de um método, a
execução assíncrona de um método.
12. O Futuro Da Programação Assíncrona Na
Plataforma .NET
• Na versão 4.5 da plataforma todas
as classes com APIs assíncronas
passam a disponibilizar uma API
Task-based.