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.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.