.NET Framework, C#, Microsoft, Programação assíncrona, Webcast

MSDN Webcast: IAsyncResult Pattern ou Asynchronous Programming Model (APM)

Introdução

No dia 25/04/2011, eu apresentei o webcast do MSDN IAsyncResult Pattern ou Asynchronous Programming Model (APM). Os webcasts do MSDN são transmissões ao vivo e gratuitas, realizadas por especialistas Microsoft ou líderes da comunidade que detalham recursos de produtos, solucionam dúvidas de usuários e fazem demonstrações de novas tecnologias.

Asynchronous Programming Model (APM)

O padrão IAsyncResult Pattern ou Asynchronous Programming Model (APM) foi introduzido no .NET Framework 1.0, em fevereiro de 2002. Também conhecido como Begin/End Pattern, num nível básico, o padrão se baseia em dois métodos relacionados para representar uma operação assíncrona: BeginNomeOperacao e EndNomeOperacao.

Apresentação teórica

Na parte teórica, eu mostrei informações sobre o padrão, incluindo os seguintes tópicos:

  • Operação síncrona versus operação assíncrona
  • Demonstração – Operação síncrona
  • Asynchronous Programming Model (APM)
  • Versão assíncrona via Asynchronous Programming Model (APM)
  • Operação síncrona versus operação assíncrona no padrão APM (animação)
  • IAsyncResult com informações sobre uma operação assíncrona
  • Demonstração – Operação assíncrona com o padrão APM
  • Artigos recomendados

Slides da apresentação

Demonstração

Na apresentação, eu realizei uma demonstração de uma implementação do padrão Asynchronous Programming Model (APM) numa classe para cálculo da soma dos termos de uma série convergente. Para a demonstração, eu criei uma solução nomeada Apm no Visual Studio 2010 e desenvolvi dois projetos: uma Class Library nomeada Msdn.Webcasts.Matematica.Series, com a implementação do padrão APM, e uma Console Application nomeada SerieLeibniz para testar uma chamada assíncrona para somar os primeiros termos da série de Leibniz.

Na implementação da Class Library foram desenvolvidas três classes: ResultadoSerieConvergente, SerieConvergenteSomarAsyncResult e SerieConvergente, conforme ilustrado no diagrama de classes abaixo.

ResultadoSerieConvergente
Classe ResultadoSerieConvergente
SerieConvergenteSomarAsyncResult
Classe SerieConvergenteSomarAsyncResult
SerieConvergente
Classe SerieConvergente

Na aplicação console SerieLeibniz, eu referenciei a biblioteca de séries convergentes para calcular, de forma assíncrona, a convergência da soma dos primeiros termos da série de Leibniz. Abaixo, segue um exemplo da saída da aplicação ao calcular a convergência da soma dos 25 milhões primeiros termos da série de Leibniz.

Teste da classe SerieLeibniz
Convergência da Série de Leibniz para 25 milhões de termos

O código da demonstração pode ser baixado em:
Solução do Visual Studio 2010 com a demonstração do padrão Asynchronous Programming Model (APM)

Vídeo da apresentação

Assista ao vídeo da apresentação do Webcast no site da Microsoft em:
MSDN Webcast: IAsyncResult Pattern ou Asynchronous Programming Model (APM)

Apple, Microsoft

Abuso das empresas de TI no registro de patentes

As empresas de TI têm abusado dos seus direitos de registrar patentes. As patentes estão deixando de ser uma forma de assegurar às empresas que suas invenções são de sua propriedade e de uso exclusivo para ser uma forma de impedir a concorrência. A questão é esclarecer o que pode ser patenteado e o que não pode.

Eu resolvi escrever este post depois de ter lido a seguinte notícia: Acusada pela Apple de infringir patentes, Samsung promete vingança.

Atualmente, é quase impossível uma empresa de TI produzir qualquer coisa inovadora sem violar alguma patente registrada por outra empresa. Por exemplo, o registro da patente "App Store" pela Apple realmente me parece absurdo, conforme o processo que a Microsoft moveu contra a Apple. O termo "app" pode até ter sido popularizado pela Apple, mas não foi inventado por ela (é uma abreviação de application), e "store" (loja) é uma palavra do inglês. Patentear "App Store" (loja de aplicativos) chega a ser ridículo. Daqui a pouco, as empresas de TI não poderão nem escrever um breve documento técnico sem violar patentes.

Depois que a Apple se tornou a maior empresa de TI do mundo em valor de mercado, ela está tendo as mesmas atitudes do passado. Ela está se achando poderosa demais e desprezando até mesmo os parceiros de negócios, como a Samsung que fornece componentes para seus dispositivos.

Vamos ver até onde esta arrogância da Apple, leia Steve Jobs, vai leva-la na disputa no mercado de tablets e smartphones. Parece que a Apple não aprendeu o suficiente com seus erros do passado.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Adobe, Android, Apple, Chrome, Flash, Google, HTML5, HTML5 Video, Internet Explorer, iOS, iPad, iPhone, iPod touch, Microsoft, Silverlight, W3C, Windows Phone 7

Onde está o compromisso da Apple com padrões abertos na Web?

As grandes empresas de TI e o progresso da tecnologia

É curioso observar que ao mesmo tempo que grandes empresas de Tecnologia da Informação realizam inovações significativas, elas também atrapalham o progresso para defender seus interesses próprios. Durante muitos anos, a Microsoft foi considerada a grande vilã das empresas de TI devido às suas práticas monopolistas graças ao esmagador domínio do Windows no mundo dos computadores pessoais. Este domínio foi usado para exterminar produtos de concorrentes, como no caso do navegador Netscape depois que a Microsoft embutiu o Internet Explorer no Windows 95. A AOL comprou a Netscape Communications Corporation em 1999. Em março de 2008, a AOL finalizou o suporte ao Netscape cujo término do desenvolvimento já havia sido anunciado antecipadamente. De alguma forma ele ainda vive no atual navegador Firefox, antes denominado Mozilla, que teve seu código-fonte inicial baseado no código-fonte do Netscape.

A Apple ultrapassa o valor de mercado da Microsoft

Por mais incrível que possa parecer, a Microsoft não é mais aquela empresa toda poderosa do mundo de TI. Impressionante verificar que a Microsoft, que tinha um valor de mercado de quase 400 bilhões de dólares no início de 2001, está com um valor de mercado pouco maior que 200 bilhões de dólares em 2011. Enquanto a Apple, que tinha um valor de mercado de mercado de pouco mais de 8 bilhões de dólares no início de 2001 está com valor pouco maior que 300 bilhões de dólares em 2011. Ou seja, em dez anos, a Microsoft teve o seu valor de mercado diminuído em quase metade e a Apple teve o seu valor de mercado aumentado em quase 40 vezes. Atualmente, o valor de mercado da Apple ($310.40B) é quase 50% maior (aproximadamente, 46%) que o da Microsoft ($212.47B). Segue um gráfico com a evolução dos valores de mercado da Apple e da Microsoft de 2001 até 2011 em: http://ycharts.com/search?q=AAPL%20vs%20MSFT&c=market_cap.

Participação da Apple no mercado de smartphones e tablets

Atualmente, a enorme participação da Apple no mercado de smartphones e tablets já está trazendo as suas consequências.

A Apple baniu o Adobe Flash dos dispositivos iPhone, iPod touch e iPad, ou seja, do sistema operacional iOS. Numa carta aberta intitulada "Thoughts on Flash", Steve Jobs tenta esclarecer os motivos por trás desta decisão. Veja o texto da carta na íntegra em: http://www.apple.com/hotnews/thoughts-on-flash/. Ele cita que a evolução da tecnologia Flash é controlada pela Adobe no seguinte trecho da carta: "Adobe has sole authority as to their future enhancement". Afirma que, apesar do fato sistema operacional iOS ser proprietário, ele e a Apple acreditam que todos padrões pertencentes a Web devem ser padrões abertos no seguinte trecho: "we strongly believe that all standards pertaining to the web should be open". Ele também afirma que a Apple adotou HTML5, CSS e JavaScript, que são todos padrões abertos, no seguinte trecho: "Apple has adopted HTML5, CSS and JavaScript – all open standards". Ele ainda afirma que o HTML5 é completamente aberto e controlado por um comitê de padronização, do qual a Apple é membro. Certamente, a carta aberta é uma tentativa de justificar o banimento do Flash do iOS depois da enorme repercussão negativa do anúncio. Afinal de contas, milhares de sites no mundo usam Flash para tocar vídeos e executar animações e a Apple impôs a restrição em detrimento da liberdade de escolha dos usuários dos seus dispositivos. Ao contrário da Apple, o Google suporta o Adobe Flash no Android 2.2 (Froyo) e 2.3 (Gingerbread) para smartphones e no Android 3.0 (Honeycomb) para tablets. Nem por isto, o Google tem menos compromisso com HTML 5 que a Apple. Inclusive, Ian Hickson, editor da especificação HTML5, é funcionário do Google desde 2005. Veja mais informações sobre a especificação HTML5 em: http://www.w3.org/TR/html5/.

Suporte dos navegadores ao novo elemento <video> do HTML5

O HTML5 inclui o novo elemento <video> para incorporar um vídeo numa página Web. O suporte a este elemento é somente parte da necessidade para se tocar vídeos nativamente em páginas Web apresentadas em navegadores, portanto sem a necessidade de instalação de um plug-in com o Adobe Flash ou o Microsoft Silverlight. Além disto, os navegadores devem suportar formatos de vídeos em comum. Uma vez que HTML5 é um padrão aberto, é sensato concluir que os formatos de vídeo a serem suportados pelos navegadores também devem seguir um padrão aberto. O projeto WebM (http://www.webmproject.org/) foi criado como objetivo de desenvolver um formato de vídeo de alta qualidade e aberto para a Web que é disponibilizado gratuitamente para todos. O formato é suportado nativamente pelas últimas versões dos navegadores Mozilla Firefox, Opera, Google Chrome, Google Android Browser e via plug-in pelo Adobe Flash, mas não é suportado nativamente pelas últimas versões dos navegadores da Apple e nem da Microsoft: Apple Safari 5.0.4, Apple Mobile Safari para iOS 4.3.1, Microsoft Internet Explorer 9.0 e Microsoft Internet Explorer Mobile for Windows Phone 7. No caso do Internet Explorer 9.0, existe uma versão prévia do WebM Media Foundation Components for Microsoft Internet Explorer 9 (Preview release) (http://www.webmproject.org/ie/), que foi uma iniciativa do projeto WebM, uma vez que a Microsoft não disponibilizou o Internet Explorer 9 com codecs WebM nativos.

Anúncio do fim do suporte ao formato H.264 no Google Chrome

No início de 2011, o Google anunciou que o Chrome não suportará mais o formato H.264 por causa dos requisitos de licenciamento, seguindo o exemplo dos navegadores Firefox e Opera. Estes três navegadores suportam os formatos abertos WebM e Ogg. Veja mais informações em: http://blog.chromium.org/2011/01/more-about-chrome-html-video-codec.html.

Enquanto isto, a Apple não suporta formato de vídeo aberto algum nativamente nos seus navegadores Safari (Mac OS X e Windows) e Mobile Safari (iOS) e nem a Microsoft no Internet Explorer (Windows) e Internet Explorer Mobile (Windows Phone 7).

Demagogia do Steve Jobs e da Apple?

E o discurso do Steve Jobs (e da Apple) na sua carta aberta sobre o Flash, de que "eles acreditam fortemente que todos os padrões pertencentes à Web devem ser abertos"? Onde está o compromisso do Steve Jobs (e da Apple) com o uso de padrões abertos na Web?

Rogério Moraes de Carvalho
Twitter: @rogeriomc