BT

.NET 4.5: Melhorias na Base Class Library

por Jonathan Allen , traduzido por Fernando Vasconcelos Mendes em 05 Jul 2012 |

A biblioteca fundamental do .NET, Base Class Library ou BCL, constitui o núcleo da plataforma. Não importa o perfil ou tecnologia escolhida para o front-end, classes da BCL serão usadas em suas aplicações. Aqui exploramos as principais novidades e melhorias no BCL do .NET 4.5.

System.IO

As classes Stream, TextReader e TextWriter têm novos métodos assíncronos para as operações mais custosas. Quanto ao uso de métodos assíncronos em geral, Immo Landwerth, autor do MSDN, sugere:

A orientação geral é agrupar ao máximo as operações assíncronas. Por exemplo, se é preciso ler mil valores Int32 de um stream usando BinaryReader, será melhor executar e aguardar uma tarefa que lê sincronamente todas as 1.000, do que individualmente executar e aguardar a conclusão de mil tarefas, cada uma lendo um único Int32.

Com relação a BinaryReader, agora se pode fazer com que não seja fechado automaticamente o stream subjacente. O mesmo recurso está disponível para BinaryWriter, StreamWriter e StreamReader.

Landwerth também menciona que a .NET BCL agora está usando a biblioteca de código aberto zlib para implementar o namespace System.IO.Compression, o que inclui a melhora do desempenho de DeflateStream, bem como a nova classe ZipArchive. Não é a primeira vez que a zlib foi licenciada pela Microsoft; também foi usada no suporte a arquivos zip no Windows e na WPF.

System.Collection

O InfoQ.com já tratou das coleções somente leitura no .NET 4.5; nada de significativo mudou desde então. Uma característica ainda ausente é IReadOnlySet, para combinar HashSet e ISet.

A classe abstrata Comparer<T> ganhou funcionalidades inspiradas na programação funcional. Em vez de implementar a classe explicitamente, pode-se chamar Comparer<T>.Create passando uma função de comparação e deixar que a biblioteca cuide do resto.

A pouco conhecida estrutura ArraySegment<T> recebeu melhorias importantes. Pela primeira vez implementa interfaces tais como IEnumerable e IList. Ainda assim, só funciona com arrays simples, e a maioria dos desenvolvedores prefere usar as classes de coleçções mais abstratas, como List<T>.

Outras mudanças

O atributo AssemblyMetadataAttribute é agora a maneira padrão de atribuir pares chave-valor arbitrários para um assembly. E a classe Console agora permite identificar se as streams de entrada, de saída e de erros foram redirecionadas. Essa funcionalidade é útil usada para desabilitar recursos que dependem da definiçaõ da posição do cursor ou de mudanças na cor da tela. Também se pode alterar a codificação para Encoding.Unicode, se for preciso o suporte a caracteres adicionais.

A classe WeakReference<T> oferece uma alternativa tipada à WeakReference. A fim de eliminar um problema antigo de concorrência, a WeakReference não oferece mais os métodos IsAlive e TryGetTarget separadamente. Em vez disso, as funcionalidades foram combinadas no método TryGetTarget.

Finalmente, a classe Regex agora suporta uma propriedade Timeout, que é uma ferramenta essencial para evitar ataques de negação de serviço, em que usuários conseguem injetar expressões regulares arbitrárias.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT