Web.Config do .NET 4.0

8/26/2009 9:39:00 AM By Felipe Pessoto

Uma boa novidade pra quem trabalha com Web, no ASP.NET 4.0 o web.config segue o caminho inverso da versão 3.5 e reduz de tamanho, na verdade quase reduzido a zero.

Na versão 3.0/3.5 ele cresceu bastante pois usavam  a mesma CLR e machine.config do 2.0, então os recursos novos tinham que ser registrados no web.config.

Agora com a versão 4.0, que vai ter sua própria machine.config, todas essas extensões, inclusive as do 4.0, serão registradas no próprio machine.config, reduzindo o web.config a isto:

Uma linha pra definir se esá rodando em debug e a versão do framework usada, e outra pra definir se é pra usar o modo integrado com o IIS7.

Desafio III - Membros Static

8/14/2009 12:24:00 PM By Felipe Pessoto

As seguintes classes geram o mesmo resultado? Se não, por quê?

public class A
{
     public static string X = "A";
}

public class A
{
     public static string X;

     static A()
     {
          X = "A";
     }
}




Teoricamente deveriam ser iguais, mas a segunda classe é equivalente à:

public class A
{
     public static string X = "A";

     static A()
     {
     }
}



A diferença está existência ou não do construtor. Quando não há construtor a classe é marcada como beforefieldinit, fazendo com que o type initializer seja chamado antes mesmo de qualquer referência à algum membro da classe.

Podemos perceber isso com o seguinte código:

class Program
{
     static void Main(string[] args)
     {
          Console.WriteLine("Iniciando");
          A.Escrever("Escrever");
          Console.WriteLine("Depois de escrever");
          string y = A.X;
          Console.WriteLine("Depois de acessar o campo X");

          Console.ReadKey();
     }
}

public class A
{
     public static string X = Escrever("X (Type Initializer)");

     public static string Escrever(string s)
     {
          Console.WriteLine(s);
          return s;
     }
}



Antes de qualquer coisa, o tipo já é inicializado. Mas se você criar um construtor, mesmo que vazio, a ordem das chamadas vai mudar.

O Type Initializer só é executado antes da primeira referência ao tipo. No caso antes do A.Escrever("Escrever").

Curioso, e pode gerar um comportamento inesperado.

Extensões Telerik para ASP.NET MVC

8/12/2009 10:05:00 AM By Felipe Pessoto

Foi liberado o primeiro preview públicos das extensões para ASP.NET MVC do Telerik. É um framework leve para desenvolver os componentes visuais que conta com Accordion, DataPicker, ProgressBar, Slider, Message Box, e Tab.

A principal novidade é que eles disponibilizaram o código fonte sob a licença MS-PL, é o primeiro projeto Open Source do Telerik. Porém só será grátis durante o tempo de desenvolvimento da plataforma comercial que eles estão desenvolvendo.

Os componentes suporta várias View Engines, como NHaml e Spark e são baseados em jQuery.

Para mais informações acesse a página Telerik Extensions for ASP.NET MVC