Visual Studio 2008 SP1 e .NET Framework 3.5 SP1

8/12/2008 12:36:00 AM By Felipe Pessoto

Em menos de um ano desde o lançamento da versão RTM do VS2008 já temos disponível o SP1 do Visual Studio 2008 e .Net 3.5

Esse Service Pack é especial pois além das correções de bugs também das novas funcionalidades:

  • .NET Framework Client Profile: um subconjunto do .NET Framework 3.5 voltado para aplicações desktop;
  • ASP.NET Dynamic Data: possibilita o scaffolding para aplicações ASP.NET;
  • Suporte ao SQL Server 2008, lançado recentemente;
  • ADO.NET Data Services, conhecido antigamente pelo codinome Astoria;
  • ADO.NET Entity Framework;

Entre outros...

Infelizmente o ASP.NET MVC não está incluso e continua ainda em Preview, que porteriormente vai passar por Beta só então chegará na versão final.

Links para o download:

http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx

http://go.microsoft.com/fwlink/?LinkId=122095

Computação Paralela - CTP de Junho

6/3/2008 9:48:00 AM By Felipe Pessoto

Saiu o Community Technology Preview da Extensão para Computação Paralela para .Net 3.5.

"Parallel Extensions to the .NET Framework is a managed programming model for data parallelism, task parallelism, and coordination on parallel hardware unified by a common work scheduler. Parallel Extensions makes it easier for developers to write programs that scale to take advantage of parallel hardware by providing improved performance as the numbers of cores and processors increase without having to deal with many of the complexities of today’s concurrent programming models.

Parallel Extensions provides library based support for introducing concurrency into applications written with any .NET language, including but not limited to C# and Visual Basic."


Download

Mais Informações

Disponível ASP.NET Dynamic Data Preview

4/10/2008 9:07:00 AM By Felipe Pessoto

A meses atrás foi liberado um Preview do ASP.NET 3.5 Extensions que continha novas funcionalidades que estão por vir este ano (incluindo melhorias no ASP.NET AJAX, ASP.NET MVC, Suporte ao ASP.NET Silverlight e ASP.NET Dynamic Data).

O ASP.NET Dynamic Data adicionou várias novas funcionalidades que permitem que você construa rapidamente uma página de acesso a dados que funcionam com LINQ to SQL ou LINQ to Entities. ASP.NET Dynamic Data permite que você automaticamente tenha uma página totalmente funcional de entrada de dados e relatórios que são dinamicamente construídas a partir dos meta-dados do seu modelo ORM. Além disso, você pode opcionalmente sobrescrever e customizar qualquer um dos templates usando HTML ou o código que você quiser, dando um controle total ao desenvolvedor.

ASP.NET Dynamic Data Preview

Hoje foi liberado uma atualização do ASP.NET Dynamic Data Preview. Para saber mais e fazer o download clique aqui.

Este novo dynamic data preview agora funciona com os controles de dados padrão do ASP.NET (GridView, ListView, FormView, DetailsView, etc). O suporte ao Dynamic Data permite que esses controles possam manipular automaticamente relacionamentos com chave-estrangeira. Por exemplo, um gridview irá automaticamente mostrar o nome do registro na coluna de chave estrangeira em vez do código dela:

 

O novo dynamic data também suporta validações automáticas (tanto no lado cliente quanto no servidor) levando em consideração as constraints que você tem no seu modelo de dados. Por exemplo, se uma coluna no banco de dados é limitada em 50 caracteres, e está marcada como non-nullable, controles de validação apropriados serão aplicados à página para garantir que essas regras serão seguidas. Se você mudar as constraints dentro das suas classes LINQ to SQL ou LINQ to Entities, a interface gráfica irá automaticamente fazer essas mudanças na próxima vez que for chamada, para garantir que as novas constraints serão obedecidas.

Todas as funcionalidades acima estarão presentes para o LINQ to SQL e LINQ to Entities.


Visual Studio Dynamic Data Project Wizard

Outra novidade foi adicionada ao ASP.NET Dynamic Data, o "Time de Ferramentas Web do VS" também terminou um primeiro preview de um novo assistente para projetos usando dynamic data que permite criar rapidamente um site para manipular dados. O assistente permite que você selecione um banco de dados, e então as tabelas, views e sprocs que você deseja construir no seu modelo LINQ to SQL:



Depois de criar um modelo de dados, o assistente deixa você escolher facilmente o template das páginas para manipular os dados:



Você pode então escolher qual tipo de interface é suportada em cada página:

Biblioteca de Código Fonte do .NET Framework disponível

1/17/2008 9:07:00 AM By Felipe Pessoto

O recurso que já havia sido anunciado a meses, mas era restrito à equipe da Microsoft está agora disponível ao público em geral. Para ativar o recurso você pode seguir as instruções dessa página: http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx que explica detalhadamente todo o processo. As bibliotecas disponíveis por enquanto são:

  • .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET and XML (System.Data and System.Xml)

E outros serão adicionados brevemente: LINQ, WCF e Workflow.

Já tive a oportunidade de fazer pequenos testes e está funcionando, não vou postar uma screen porque a licença de uso não permite.

Novos recursos no C#3.0

12/14/2007 10:22:00 AM By Felipe Pessoto

Vou falar sobre alguns novos recursos que vieram na nova versão do C#.

Começando pelas Propriedades Automáticas.
Antigamente quando a gente criava as propriedades das nossas classes, faziamos um código como esse:

7 public class Carro

8 {

9 private string _modelo;

10 private string _marca;

11 private int _ano;

12 private string _cor;

13

14 public string Modelo

15 {

16 get { return _modelo; }

17 set { _modelo = value; }

18 }

19

20 public string Marca

21 {

22 get { return _marca; }

23 set { _marca = value; }

24 }

25

26 public int Ano

27 {

28 get { return _ano; }

29 set { _ano = value; }

30 }

31

32 public string Cor

33 {

34 get { return _cor; }

35 set { _cor = value; }

36 }

37 }

Como você pode notar, as propriedades não tem nenhum tratamento lógico, servindo como se fosse um acesso direto aos campos. Então porque não expor os campos diretamente? Basicamente porque no futuro você pode querer implementar algum tratamento, assim se você tiver usado propriedades, as classes que usam suas propriedades não precisarão ser recompiladas.

Sendo muito comum o uso de propriedades como as que vimos acima, no C#3.0 foi implementado as Propriedades Automáticas, que substituem esse código "padrão". O código anterior ficaria assim:

7 public class Carro

8 {

9 public string Modelo { get; set; }

10 public string Marca { get; set; }

11 public int Ano { get; set; }

12 public string Cor { get; set; }

13 }

Quando o compilador encontrar um get/set vazio como estes, ele automáticamente criará os campos privados para a classe e implementará as propriedades públicas get/set.

Diferentemente de criar campos públicos, poderemos no futuro criar as implementações lógicas, sem ter que mudar nenhum componente externo que referencia nossa classe.

Inicializadores de Objetos

Usamos muitas propriedades quando estamos programando e é muito comum códigos como esse:


13 Carro car = new Carro();

14 car.Modelo = "Punto";

15 car.Marca = "Fiat";

16 car.Ano = 2007;

17 car.Cor = "Azul";

Agora podemos escrever isso de outra forma, mais simples e concisa, usando os "object Initializers". Seu código pode ser escrito assim:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" };


E o compilador irá se encarregar de instanciar a classe e setar as propriedades.

É interessante que podemos inicializar objetos aninhados, como mostrado:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul", Fabric = new Fabricante { Nome = "Industria Metal", CNPJ = "12312" } };

Inicializadores de Coleção

Os inicializadores de objeto também facilitam a maneira como adicionamos itens a uma coleção. Se quisermos adicionar objetos Carro a uma List devemos escrever o seguinte código:



14 List<Carro> Carros = new List<Carro>();

15

16 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" });

17 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" });

18 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" });


Economizando muitas linhas de código. E podemos diminuir ainda mais, usando Inicializadores de coleção, não precisamos escrever vários métodos Add:


14 List<Carro> Carros = new List<Carro>{

15 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" },

16 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" },

17 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" }

18 };