.NET Framework, C#, JavaScript, Microsoft Tech·Ed

TechEd Brasil 2011: WEB 302 – Presente e futuro da linguagem de programação JavaScript

Minha segunda palestra no TechEd Brasil 2011

No dia 29/09/2011, das 18h40min às 19h50min, eu apresentei a palestra WEB 302 – Presente e futuro da linguagem de programação JavaScript no evento TechEd Brasil 2011. O TechEd é o maior e mais completo evento técnico realizado pela Microsoft no Brasil.

Apresentação teórica

Nesta palestra, eu apresentei uma introdução à linguagem de programação JavaScript, sua evolução, sua padronização de acordo com a especificação ECMA-262 (linguagem ECMAScript), principais usos da linguagem, alguns dos principais conceitos da linguagem, programação orientada a objetos com JavaScript e algumas das novidades da ECMAScript 5. Além disto, eu também apresentei estatísticas de uso dos 5 principais browsers da atualidade e o suporte dos principais browsers do mercado ao ECMAScript 5.

Considerações finais

  • JavaScript é uma linguagem de programação simples, poderosa e flexível
  • Pesquise códigos de bibliotecas
    • Analise os códigos de implementação das suas bibliotecas JavaScript favoritas
  • Teste seus códigos JavaScript nos principais browsers
    • Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari, Opera, …
  • Aprenda sobre as novidades da ECMAScript 5
    • Considere optar pelo modo estrito

Slides da apresentação

Demonstração realizada na apresentação

Durante a apresentação, eu fiz uma demonstração sobre a linguagem JavaScript e algumas das principais novidades da ECMAScript 5. A demonstração foi realizada com o Microsoft Visual Studio 2010.

O código da demonstração pode ser baixado em:
Demonstração WEB302 realizada no TechEd Brasil 2011

Vídeo da apresentação

A apresentação da minha palestra foi gravada durante o evento, porém eu não sei se o vídeo será disponibilizado para o público. Se for, eu estarei atualizando este post com o link para baixar ou assistir ao vídeo sob demanda.

Anúncios
.NET Framework, C#, Evento, LINQ, Microsoft, Microsoft Tech·Ed, Visual Studio

TechEd Brasil 2011: DEV 303 – Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo

Minha primeira palestra no TechEd Brasil 2011

No dia 29/09/2011, das 17h10min às 18h20min, eu apresentei a palestra DEV 303 – Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo no evento TechEd Brasil 2011. O TechEd é o maior e mais completo evento técnico realizado pela Microsoft no Brasil.

Apresentação teórica

Nesta palestra, eu apresentei uma visão geral da evolução da linguagem de programação C# desde o lançamento da versão 1.0, em fevereiro de 2002, até a versão 4, em março de 2010.

Depois, eu também apresentei a principal novidade da linguagem C# 5: suporte direto da linguagem à programação assíncrona. Este novo recurso permite que o desenvolvedor realize programação assíncrona de modo similar à programação síncrona. Além disto, eu também comentei sobre as principais novidades esperadas para a versão posterior (C# 6?), que atualmente é conhecida pelo nome de projeto Roslyn.

Abaixo, seguem os tópicos que foram abordados de cada versão da linguagem C#.

Linguagem C# 1.0

  • A evolução da linguagem C#
    Cronograma dos lançamentos das versões da linguagem C#.
  • Sistema de tipos
    Tipos por valor, tipos por referência e sistema unificado de tipos.
  • Memória e instruções
    Gerenciamento automático de memória e instruções inspiradas em C/C++ e Java.
  • Herança e membros de classe
    Suporte a herança simples e membros possíveis em classes.
  • Atributos e outros recursos
    Atributos, namespaces, assemblies e versionamento.

Novidades da linguagem C# 2.0

  • Generics e Iterators
  • Tipos parciais e tipos anuláveis
  • Métodos anônimos e qualificador de apelidos de namespace
  • Classes estáticas e possibilidade de definir diferentes níveis de acesso nos métodos de leitura e escrita de uma propriedade

Novidades da linguagem C# 3.0

  • Tipos implícitos em variáveis locais
  • Métodos de extensão
  • Tipos anônimos
  • Iniciadores de objetos
  • Iniciadores de coleções
  • Métodos parciais
  • Propriedades automáticas
  • Expressões lambda
  • Árvores de expressão
  • Expressões de consulta
  • LINQ (Language INtegrated Query)

Novidades da linguagem C# 4

  • Parâmetros opcionais e nomeados
  • Interoperabilidade com COM
  • Objetos com tipagem dinâmica
  • Covariância e contravariância

Novidades da linguagem C# 5

  • Task-based Asynchronous Pattern (TAP)
  • Versão assíncrona via TAP
  • Funções assíncronas
  • Windows Runtime
  • async e await

Projeto Roslyn (C# 6?)

  • Compiler-as-a-Service (CaaS)
  • APIs para o CaaS

Resumo

A evolução da linguagem C#

  • C# 1.0 em fevereiro de 2002 (.NET Framework 1.0 / Visual Studio .NET)
  • C# 2.0 em novembro de 2005 (.NET Framework 2.0 / Visual Studio 2005)
  • C# 3.0 em novembro de 2007 (.NET Framework 3.5 / Visual Studio 2008)
  • C# 4 em abril de 2010 (.NET Framework 4 / Visual Studio 2010)
  • C# 5 em 2012 (.NET Framework 4.5 / Visual Studio 11)
    • Suporte ao Windows Runtime
    • Facilidade na programação assíncrona
  • Projeto Roslyn
    • Compiler-as-a-Service (CaaS)
    • Visual Studio Roslyn CTP
      • Previsão: meados de outubro/2011

Slides da apresentação

Demonstração realizada na apresentação

Durante a apresentação, eu fiz uma demonstração sobre as facilidades incorporadas à linguagem C# 5 para programação assíncrona com as novas palavras-chaves: async e await. A demonstração foi realizada com o Microsoft Visual Studio 11 Developer Preview, que está disponível para download no site da Microsoft no MSDN.

O código da demonstração pode ser baixado em:
Solução do Visual Studio 11 Developer Preview com a demonstração realizada no TechEd Brasil 2011

Vídeo da apresentação

A apresentação da minha palestra foi gravada durante o evento, porém eu não sei se o vídeo será disponibilizado para o público. Se for, eu estarei atualizando este post com o link para baixar ou assistir ao vídeo sob demanda.

.NET Framework, C#, Evento, MEF, Microsoft, Microsoft Tech·Ed, Visual Studio

O evento Tech•Ed Brasil 2010 e a minha palestra de MEF

O sucesso do evento

Nos dias 13, 14 e 15 de setembro de 2010 houve a realização do evento Microsoft Tech•Ed Brasil 2010 (http://www.teched.com.br/), que corresponde à décima edição do evento no Brasil, e teve a presença de 2.363 participantes. Veja a seguinte entrevista com a Renata Rochel, principal organizadora, sobre o sucesso da edição de 2010 do evento no Brasil.

Durante os três dias do evento, houve 193 palestras técnicas distribuídas em 15 salas e uma sessão geral que foi transmitida ao vivo pelo e teve duração de 3 horas e 30 minutos.

A sessão Ask the Experts

Na noite de 14 de setembro de 2010, eu participei da sessão Ask the Experts na mesa .NET Framework / WCF / WPF / WF, que teve duração de 2 horas. Eu respondi a perguntas sobre arquitetura de software e, principalmente, sobre o Managed Extensibility Framework (MEF), que foi assunto da minha palestra no dia seguinte.

Depois, eu tive a oportunidade de conhecer pessoalmente o MVP Israel Aece. Conversamos durante muito tempo e foi ótimo poder trocar ideias com um profissional tão competente tecnicamente.

No Ask the Experts, eu tive a oportunidade de conhecer muitos profissionais que estão trabalhando, ou planejando trabalhar, em sistemas bem interessantes. Foi muito bom poder verificar que os profissionais de .NET estão cada vez mais preocupados com arquitetura e boas práticas no desenvolvimento de software. O uso de boas práticas de POO, design patterns, desenvolvimento ágil, TDD, dentre outros, já são uma realidade para muitos profissionais de .NET. Uma grande evolução quando comparada com a atitude há alguns anos atrás.

Um grupo de desenvolvedores de uma empresa comentou sobre um sistema em que estavam planejando usar Managed Extensibility Framework (MEF) para adaptar as regras de negócios para diferentes clientes. Eles têm a necessidade de personalizar telas de aplicações clientes em Silverlight para clientes diferentes. Para esta tarefa, eu recomendo o uso do Prism, anteriormente conhecido como Composite Application Guidance for WPF and Silverlight. O Prism fornece instruções e uma biblioteca reutilizável para construção de aplicações WPF e Silverlight modulares e flexíveis. Maiores informações podem ser encontradas no site do CodePlex, no seguinte endereço: http://compositewpf.codeplex.com/. Atualmente, a equipe está trabalhando na próxima versão do Prism, denominada Prism v4, para o Silverlight 4 e o .NET Framework 4.

Minha palestra: DEV302 – Como e onde devo utilizar o Managed Extensibility Framework (MEF)? (Nível 300)

Apresentação teórica

Na minha palestra, eu abordei o Managed Extensibility Framework (MEF). O MEF é um framework introduzido no .NET Framework 4 e no Silverlight 4 que simplifica a criação de aplicações extensíveis. Ele facilita a transformação de aplicações estaticamente compiladas para aplicações dinamicamente compostas.

Abaixo, segue a minha apresentação teórica do MEF no Microsoft Tech·Ed Brasil 2010.

Eu fiz toda a apresentação teórica durante, aproximadamente, 20 minutos.

Demonstração

Depois, eu reservei o restante da palestra para realizar uma demonstração, a partir do zero, para mostrar como usar os principais conceitos do MEF na prática. Eu iniciei a demonstração exemplificando como usar o princípio da inversão de controle (IoC – Inversion of Control) para injetar dependências em um tipo que depende de outro tipo. Eu comentei sobre a injeção por construtor e sobre a injeção por propriedade. Deste modo, os participantes tiveram a oportunidade de acoompanhar a codificação de uma injeção de dependência.

Observe que, no início da demonstração, não houve o uso de MEF. O objetivo foi mostrar que na injeção de dependência você tem um componente que não é responsável por obter suas dependências. Estas dependências devem ser injetadas no componente. Primariamente, os desenvolvedores usam contêineres de injeção de dependência para desacoplar seus sistemas e para facilitar o desenvolvimento de testes. No MEF utiliza-se injeção de dependência em termos do princípio. Em geral, os contêineres de inversão de controle (IoC) são baseados em convenção ou registro, enquanto o MEF possui um mecanismo de descoberta.

Posteriormente, eu utilizei o MEF para definir as partes de composição (atributos para importações e exportações) e usei o contêiner de composição para fazer as combinações entre as partes. Durante a demonstração, eu fui mostrando os vários catálogos disponíveis para serem usados na composição: catálogo de tipos, catálogo de assembly, catálogo de diretório e catálogo de agregação.  Além disto, eu mostrei as novas classes acrescentadas no .NET Framework 4 para criação tardia de instâncias.

Finalmente, eu simulei a colocação da aplicação em produção observando uma pasta de extensões, o que permitiria que a mesma fosse estendida automaticamente. Então, eu fechei a apresentação desenvolvendo um componente para estender as operações suportadas pela aplicação. Compilei o componente como um assembly .dll e coloquei na pasta de extensões. Então, a aplicação reconheceu as extensões automaticamente e suportou as novas operações. Foi muito gratificante ver a reação dos espectadores da palestra, que aplaudiram ao verificarem a extensão funcionando sem a necessidade de registro ou configuração. Foi um sinal que a mensagem desejada foi passada com sucesso.

Eu fiquei muito satisfeito ao constatar alguns MVPs assistindo à minha palestra, como o Bruno Sonino, o Renato Haddad, o Luciano Moreira (Luti) e o Israel Aece, dentre outros profissionais competentes. Caros colegas, eu agradeço muito pelas suas presenças e espero que vocês tenham gostado.

Abaixo, segue o link para baixar a solução do Visual Studio 2010, compactada no formato .zip, exatamente como foi realizada na demonstração no dia 15 de setembro de 2010.

DEV302_RogerioMoraesDeCarvalho_MefDemo.zip

Eu estarei fazendo uma série de melhorias no código para apresentar em um futuro WebCast do MSDN para aqueles que não assistiram a minha palestra no Tech•Ed Brasil 2010 ou que queiram assistir novamente. Uma destas melhorias seguirá uma dica do meu amigo Luciano Moreira Caixeta (Luti), MVP de SQL Server, que sugeriu que eu utilizasse LINQ para filtrar as partes de composição. Certamente, esta é uma solução muito mais elegante que o laço foreach que eu usei para filtrar as extensões. Quem tiver interesse no WebCast, basta me seguir pelo Twitter (@rogeriomc) que eu estarei informando quando ele será realizado. Além disto, eu estou programando um artigo de MEF para a revista Mundo.NET.

Rogério Moraes de Carvalho
Twitter: @rogeriomc