Nuno Gomes /*Aventuras e Desventuras de um programador*/

var assuntos = new { Linguagem = "C#", Tecnologia = "ASP.NET" };
BUILD – Começa já amanhã

Finalmente vamos passar do patamar dos boatos e fugas de informação para os dados concretos … Amanhã na BUILD vamos poder saber tudo o que realmente distingue o  WINDOWS 8 dos seus predecessores.

BUILD2011

A expectativa é grande e o slogan deixa-nos com o “bichinho atrás da orelha”:

“[…] O Windows 8 muda tudo.”

Os interessados podem acompanhar as keynotes online e em directo através do www.buildwindows.com:

  • dia 13/09 – a partir das 17h00
  • dia 14/09 – a partir das 17h00

Para novidades “fresquinhas” acompanhem também o Channel 9.

Posted: 13-9-2011 0:54 por Nuno Gomes | with no comments
Filed under:
ASP.NET - Lições para o Futuro I

Ontem encontrei um pedaço de código que pode ser representado por:

public class DemoList : WebControl
{
    protected override object SaveViewState()
    {
        object x = base.SaveViewState();
        object y = this.Items;
        return new Pair(x, y);
    }
    protected override void LoadViewState(object savedState)
    {
        Pair pair = (Pair)savedState;
        base.LoadViewState(pair.First);
        this.Items = (List<WebControl>)pair.Second;
    }

    public List<WebControl> Items
    {
        get; set;
    }
    [...]
}

Um WebControl que reimplementa os métodos de LoadViewState e SaveViewState para permitir persistir uma colecção de controlos que herdam de WebControls.

Por definição os controlos usam o ViewState para persistir o seu estado e cada controlo presente na hierarquia de controlos é chamado a contribuir para o ViewState final da página.

Ora, o cenário que descrevi é de facto muito estranho e poderia apontar para uma duplicação de dados em ViewState:

  • O estado guardado pelo próprio controlo presente na colecção
  • O estado guardado pelo controlo DemoList na serialização da colecção.

Para os que nesta altura já reparam que este cenário não é possivel Smile vou acrescentar mais uns pormenores relativos ao cenário que descrevo:

  • Não sendo a classe WebControl serializavel, os controlos presentes na colecção implementam o interface ISerializable para descreverem o modo como a serialização se deverá processar
  • Os controlos presentes na colecção nunca são adicionados à colecção de controlos do controlo DemoList e por isso nunca participam no ciclo de vida da página

Agora que o cenário está mais composto é perceptivel que:

  • cada controlo da colecção está apenas a servir de DTO pelo o seu uso é inadequado e devia ser uma classe simples
  • a escolha de usar um controlo como item da colecção obrigou à implementação adicional do interface ISerializable

Para além do esforço adicional e da menor legibilidade do código esta implementação também produz:

  • uma maior assinatura em memória, por cada Request, pois um WebControl é de longe mais complexo que uma classe simples
  • performance em carga poderá estar comprometida

Por esta altura deverão estar a pensar que esta implementação só tem pontos negativos mas tal não é verdade.

O uso do interface ISerializable optimiza o processo de serialização/deserialização do objecto e poderá nalguns casos reduzir a dimensão do ViewState.

Avaliação final: NÃO REPETIR

Posted: 3-8-2011 2:19 por Nuno Gomes | with no comments
Filed under: ,
ELWEA - EventLog WebEvent Aggregator para ASP.NET

Embora já tenha escrito sobre ASP.NET Health Monitoring diversas vezes no passado, a verdade é que foi sempre nos meus blogues em inglês pelo esta é uma estreia absoluta em português.

Não vou aprofundar o tema agora mas desafio quem estiver interessado ou simplesmente quiser adquirir algum contexto a visitar os seguintes artigos:

Nestes artigos eu exploro a possibilidade de desenvolver um “provider” de Health Monitoring que agrega no “EventLog” e por aplicação Web a informação (os chamados WebEvents) provenientes das mesmas.

Na verdade acabou por não ser uma mera possibilidade e, desde 2009, que uso no meu dia-a-dia uma versão mais complexa daquilo que descrevi na altura.

Entretanto, em 2010, descobri o projecto ELMAH (Error Logging Module and Handler) e tormei-me fã do conceito:

"[...] pode ser adicionado dinamicamente qualquer aplicação ASP.NET […] sem necessidade de recompilação ou a redistribuição. "

Este conceito podia ser facilmente aplicado ao meu “provider” e desde logo comecei a pensar em disponibilizar um projecto semelhante.

Finalmente esse dia chegou posso finalmente anunciar disponibilizei o projecto no Codeplex com a seguinte denominação: ELWEA - EventLog WebEvent Aggregator for ASP.NET.

Embora, pela sua natureza, seja diferente do projecto ELMAH o seu principal objectivo é semelhante: isolar e agregar informação duma aplicação ASP.NET garantindo que a mesma informação pode ser facilmente acedida.

O que distingue este projecto de tantos outro semelhantes ao ELMAH é o facto de não estar focado no tratamento e registo de informação de erros.

O principal objectivo do ELWEA é agregar no EventLog toda a informação, gerada pela framework ASP.NET, relativa a uma determinada aplicação web e desta forma facilitar a sua interpretação.

Antes

Depois

Estou certo que os desenvolvedores e administradores de aplicações ASP.NET vão gostar desta funcionalidade mas penso que também os profissionais de TI que gerem ambientes de alojamento partilhado vão usar este projecto.

Uma descrição mais completa (em inglês) está disponivel aqui e a documentação (também em inglês) está aqui.

Para tornar a vida mais simples estou a planear para breve também disponibilizar o ELWEA através um pacote NuGet (versão 1.3 … claro!!). Estejam atentos às novidades.

Espero que gostem.

Posted: 29-4-2011 0:40 por Nuno Gomes | with 1 comment(s)
Filed under: ,
Visual Studio LightSwitch Beta 2 já está disponivel

Ora aí está … o Visual Studio LightSwitch Beta 2 já está disponível para download embora apenas acessível para subscritores MSDN.

A partir de dia 17 de Março o download ficará disponível para todos.

Posted: 15-3-2011 18:51 por Nuno Gomes | with no comments
Filed under:
Visual Studio LightSwitch Beta 2

Parece-me haver alguma expectativa e também alguma confusão em relação ao lançamento da versão Beta 2 do LightSwitch.

Segundo o Somasegar a versão do Visual Studio LightSwitch Beta 2 deverá ser libertada nas próximas semanas, sendo que esta nova beta deverá habilitar o desenvolvimento de aplicação de negócio sobre Windows Azure e SQL Azure.

Carissimos …. está quase … e não se esqueçam que o Mix’11 é já na segunda semana de Abril e costuma apresentar novidades.

Actualização:

Tenham em atenção que o VS LightSwitch Beta 1 não é compativel com o VS 2010 SP1.

Posted: 11-3-2011 0:45 por Nuno Gomes | with no comments
Filed under: ,
Visual Studio 2010 SP1 – Desempenho em Windows XP

Muito já se escreveu sobre o que o SP1 do Visual Studio 2010 tem para oferecer, no entanto ainda não vi muita gente a mencionar o facto de o SP1 desabilitar automáticamente a aceleração por hardware no Windows XP.

Quanto a vocês não sei mas até algumas (poucas) semanas atrás estava a desenvolver em ambiente XP SP3 e o desempenho do VS2010 era ligeiramente acima de mediocre e era preciso uma elevada dose de paciência e persistência para o usar.

É claro que passadas poucas horas após a instalação comecei a tentar saber o que se estava a passar e embora não fosse concensual (na altura) a comunidade apostava em problemas relacionados com a aceleração por hardware.

No meu caso particular o desabilitar da aceleração revelou-se positiva e habilitou o uso do VS (com a tal paciência que referi).

Posso ainda acrescentar que a análise da Microsoft ao problema identificou que de facto um dos problemas de instabilidade do VS 2010 em Windows XP é a gestão de capacidades/funcionalidades de algumas placas gráficas, i.e., drivers dos GPUs razão pela qual esta decisão não me surpreendeu.

Embora a minha migração para Win7, upgrade para um HDD de 7200 rpm (sim … eu sei que um SSD é que era meeeeesmo fixe!!!) e 8GB de RAM não me deixem qualquer saudade do XP não deixo de estar curioso sobre o efectivo impacto que quem ainda usa VS 2010 em Windows XP vai percepcionar.

Posted: 11-3-2011 0:16 por Nuno Gomes | with no comments
Filed under: ,
ASP.NET 4.0 – Controlo TextBox compatível com HTML5

Com a actualização à framework .NET 4.0 é agora possível definir controlos TextBox compativeis com aquilo que é chamado de HTML5.

Assim, passa a ser possivel criar controlos TextBox com a seguinte sintaxe:

<asp:TextBox runat="server" type="some-HTML5-type" />

Sendo que o atributo type pode assumir, para além dos tradicionais, os seguintes valores:

  • email
  • url
  • number
  • range
  • Date pickers (date, month, week, time, datetime, datetime-local)
  • search
  • color

A actualização à framework .NET 4.0 pode ser instalada isoladamente ou através da instalação do SP1 do Visual Studio 2010.

Nota final:

O empenho da Microsoft em garantir desde já o suporte para a futura norma HTML5 revela o valor  estratégico que lhe é atribuido e é um óptimo indicador para a rápida aprovação da mesma

Posted: 10-3-2011 2:31 por Nuno Gomes | with 2 comment(s)
Filed under: ,
Actualização na framework .NET 4.0 – Impacto sobre o ASP.NET 4.0

Tal como referi anteriormente, com a introdução do SP1 do Visual Studio 2010 foi também introduzida uma actualização à framework .NET 4.0.

OK … mas a pergunta que se impõe é:

Em que constou esta actualização e, mais especificamente, o que foi corrigido/adicionado à ASP.NET 4.0?

Aqui fica o levantamento das correcções e adições que considero mais relevantes:

Correcções:

(Issue 9) Resolve o problema que existia em ambientes Servidor quando, no web.config, era especificado o atributo targetFramework com valor “.NETFramework, version=v4.0”

(Issue 11) Quando um cliente invocava, através do handler para invocações sem extensão, um web service REST (.asmx ou .svc)  usando o pipeline ASP.NET então estado podia, incorrectamente, mudar.

(Issue 12) Os métodos Application_Start e PreAppStart passam a ter acesso ao método HttpUtility.HtmlEncode e às APIs relacionadas com o mesmo.

(Issue 14) O uso de providers SQL já não:

  • despoleta uma excepção na thread de Garbage Collection
  • despoleta um Dr.Watson quando recebe algum tipos de mensagem de erro
  • termina anormalmente o processo w3wp.exe

(Issue 15) O objecto SqlDataSource passa a suportar o uso de parametros no acesso a BD SQL Server Compact Edition

(Issue 16) O handler para invocações sem extensão passa a contextualizar correctamente o User do pedido e deste modo é agora possivel invocar uma ASP.NET webpage.

(Issue 19) É agora possivel uma aplicação ASP.NET 4.0 fazer host de um serviço WCF

(Issue 25) A instalação de um ASP.NET hot fix já não remove algumas chaves de registry do ASP.NET

(Issue 30) É agora possivel executar aplicações ASP.NET 4.0 em modo CAS com partial trust

 

Adições:

(Feature 3) Passa a ser possivel definir um controlo TextBox que é compativel com o HTML5.

<asp:TextBox runat="server" type="some-HTML5-type" />

Nota final:

Mantive a notação original entre parentises para melhor poderem mapear para as especificações oficiais.

A actualização à framework .NET 4.0 pode ser instalada individualmente ou através da instalação do SP1 do Visual Studio 2010.

Posted: 10-3-2011 0:24 por Nuno Gomes | with no comments
Filed under: ,
Actualização na framework .NET 4.0

Para os mais distraidos aqui fica uma chamada de atenção:

Com o SP1 do Visual Studio 2010 é também distribuida uma actualização à Framework .NET 4.0.

Isto significa que quem instalar o SP1 e desenvolver sobre o mesmo deve ter o cuidado de garantir, ou pelo menos alertar quem de direito, que os servidores têm instalada esta actualização.

O pacote de instalação isolado está disponivel aqui.

Posted: 10-3-2011 0:11 por Nuno Gomes | with 1 comment(s)
Filed under:
Visual Studio 2010 SP1

Já não é novidade, o SP1 do Visual Studio 2010 estará disponivel para o público em geral no próximo dia 10 de Março.

O Jason Zander tem uma entrada interessante no seu blog sobre o anúncio mas para ter uma ideia mais abrangente do que este SP1 nos oferece devem também ler o que o Brian Harry e o Soma Segar escreveram sobre o assunto.

Posted: 9-3-2011 1:44 por Nuno Gomes | with no comments
Filed under: ,
.NET – ArrayList preciosidade

De vez em quando descubro uma “pérola” escondida do .NET e há poucos dias encontrei outra.

IList System.Collections.ArrayList.ReadOnly(IList list)

Este método não é novo (longe disso) … está disponivel desde o .NET 1.1.

Uma faceta da qual eu sempre me queixei no .NET foi o fraco suporte para criar/tornar colecções e listas ReadOnly e no entanto deixei passar esta preciosidade.

É bem verdade que com as ultimas versões do .NET é bem mais fácil criar ou tornar uma lista ReadOnly mas para aqueles de vós que ainda mantêm ou estendem aplicações sobre versões antigas do .NET esta é uma dica que pode ser bastante útil.

Posted: 4-2-2011 1:33 por Nuno Gomes | with no comments
Filed under:
17ª Reunião Presencial da Comunidade NetPonto

O mundo está todo do avesso. Duvidam? Então como explicam que na ultima reunião da comunidade NetPonto eu tenha sido contemplado com a oferta do jogo Left 4 Dead 2?

Estão a ver … eu tinha razão.

Não posso dizer que seja participante assiduo mas sou certamente um participante frequente e anteriormente apenas tinha ganho uma vez e logo por azar não contou (pois o prémio era patrocionado por mim ?!! ).

Dito isto, só há uma lição a reter:

Mesmo que ouvir uns “gajos” a falar de tecnologia .NET não seja suficiente para vos retirar da cama a um Sábado de manhã, lembrem-se que por lá se sorteiam (também) jogos para PC…

Não podia deixar de agradecer ao habituais patrocionadores da comunidade e desta feita em particular à 4U que ofertou o jogo.

Posted: 27-1-2011 0:49 por Nuno Gomes | with no comments
Filed under:
WebDay 2010 e Windows Phone 7

O Windows Phone 7 está aí e parece pronto a ganhar a sua quota de mercado.

Na pré conferência do WebDay 2010 tive a oportunidade de conversar um pouco o Guiseppe Maggiore, não sobre XNA que é a sua especialidade, mas sobre o WP7 em geral e acabei por ver esclarecidas algumas dúvidas.

Bom a primeira questão acabou por ser uma pequena provocação :) … pois perguntei-lhe pela ausência de Copy/Cut/Paste na versão WP7 que agora é lançada. Tal como esperava o Guiseppe confirmou que a ausência desta funcionalidade não é resultado de qualquer limitação do aparelho em si mas sim uma opção por deixar a mesma fora do roadmap para o lançamento. Não posso deixar de estranhar a opção mas parece assumido que o Copy/Cut/Paste estará disponivel numa futura actualização.

Já que referi as actualizações, parece ser ponto assente que as mesmas serão grátis e realizadas através do PC.

Continuando … HTML5 … ora aqui está um tema “quente”. Nos dias que correm falasse frequentemente no suporte (ou não) para HTML5. Pois o WP7 não suportará na versão inicial HTML5 pois o navegador usado é o IE7. Exacto … IE7 … mas podem desde já ficar descansados que está na calha a evolução directa para o IE9 e desta forma o suporte para HTML5 está assegurado.

Posted: 14-10-2010 8:38 por Nuno Gomes | with 1 comment(s)
Filed under:
Vouchers para o evento WebDay 2010

O evento WebDay 2010 é já nos próximos dias 12 de Outubro no Porto e dia 14 de Outubro em Lisboa.

Para os amantes das tecnologias Web este é um evento a não perder, até porque vem apimentado com as novidades do Windows Phone 7.

Para quem ainda não se registou ainda pode ainda fazê-lo mas, caso seja membro da comunidade pontoNETpt pode habilitar-se a ganhar um voucher. Para saber como basta consultar esta mensagem no blogue oficial do pontoNETpt.

Para mais informações acerca deste evento, consultar:

Posted: 6-10-2010 0:00 por Nuno Gomes | with no comments
Filed under: ,
Correcção Para A Vulnerabilidade Do ASP.NET Disponível

A Microsoft publicou, o passado sábado, 18 de Setembro, um Aviso de Segurança (2416728) acerca de uma vulnerabilidade no ASP.NET. Esta vulnerabilidade existe em todas as versões de ASP.NET e foi revelada publicamente na passada sexta-feira numa conferência de segurança.

O Scott Guthrie já tinha disponibilizado algumas medidas de contingência (ler Important: ASP.NET Security Vulnerability e ASP.NET Security Vulnerability) para evitar ataques contra aplicações ASP.NET usando esta vulnerabilidade.

Para ajudar a Microsoft na sua resposta a esta nova vulnerabilidade de padding oracle, foi criado um novo forum: Security Vulnerability.

A Microsoft anunciou agora a disponibilização de uma actualização de segurança extraordinária destinada a colmatar esta vulnerabilidade de segurança do ASP.NET.

Uma vez aplicada esta actualização, as medidas de contingência anteriormente disponibilizadas no blogue do Scott já não serão necessárias. Mas, até que a actualização seja instalada, as referidas medidas de contingência devem ser usadas.

Para obter mais informações, ler a entrada do blogue do Microsoft Security Response Center assim como o Boletim de Notificação.

Ligações Importantes:

Posted: 29-9-2010 0:46 por Nuno Gomes | with no comments
Filed under: ,
Mais Entradas Página seguinte »