Mudança na API de Globalização

by Israel Aece 9. June 2009 19:19

Uma novidade que estará presente no .NET Framework 4.0 é a mudança no mecanismo de recuperação das culturas. Até a versão anterior, utilizamos o método estático GetCultures da classe CultureInfo. Esse método retorna um array de objetos do tipo CultureInfo, onde cada elemento representa uma cultura específica. Todas as informações são retornadas a partir de um repositório que está contido no .NET Framework.

A partir do .NET Framework 4.0, a Microsoft efetuou uma mudança, onde não haverá mais essa “tabela interna”, que era responsável por armazenar essas informações. Quando você estiver rodando uma aplicação em cima do Windows 7, as culturas serão extraídas diretamente do sistema operacional. Já quando rodar em versões anteriores ao Windows 7, as informações carregadas serão as mesmas do repositório interno do .NET Framework.

Com essa nova mudança, as opções WindowsOnlyCultures e FrameworkCultures do enumerador CultureTypes estão obsoletas. Utilizar o WindowsOnlyCultures não retornará nenhuma informação, enquanto o FrameworkCultures retornará os mesmos resultados do .NET Framework 2.0.

Tags:

.NET Framework

Globalização de arquivos *.sitemap

by Israel Aece 21. January 2009 15:35

Em um dos treinamentos oficiais que ministro é abordado sobre globalização de aplicações. O capítulo foca nos tipos fornecidos pelo namespace System.Globalization, detalhando suas classes e como podemos utilizá-las para tornar o código independente de cultura.

Como o curso foca no .NET Framework e não na tecnologia, como ASP.NET ou Windows Forms, eu tento mostrar como isso funciona nas aplicações Web e Windows. Durante esse capítulo, uma pergunta que me foi feita é como efetuar a globalização de arquivos *.sitemap, que são utilizados pelos controles do ASP.NET para carregar Menus, Treeviews, etc.

Basicamente o que precisa ser feito é a criação do arquivo *.resx que representa a cultura, e lembrando que voce deve criar a quantidade necessária para todas as culturas suportadas pela aplicação. Neste caso, eu sugiro nomear os arquivos como: Sitemap.resx (default), Sitemap.en-US.resx, etc., e como eles serão utilizados por toda a aplicação, ficarão armazenados no diretório especial chamado App_GlobalResources. Dentro deste arquivo, como já é sabido, existe um dicionário (chave/valor). A chave identifica aquele valor unicamente dentro do arquivo, e será utilizada pela aplicação; já o valor é o variação para aquela cultura que o arquivo representa.

Depois de criado os arquivos *.resx, precisamos fazer com que o arquivo *.sitemap faça uso destas informações. Com isso, o atributo title do elemento siteMapNode não deve ter o título em hardcode, como acontece em aplicações não globalizadas. Ele utilizará um Expression Builder chamado $resources para dizer ao runtime do ASP.NET que esse valor será extraído de um arquivo de recurso. O que está em azul no exemplo abaixo reflete o nome do arquivo *.resx, enquanto o que está em vermelho é a chave.

<siteMapNode
    url="~/AreaRestrita/Cadastros/Colaboradores/Default.aspx"
    title="$resources:Sitemap, Colaboradores"
    roles="Cliente.Administrador" />

Tags: ,

ASP.NET

Neutral Culture

by Israel Aece 10. December 2008 08:40

Neutral Culture ou Cultura Neutra é o termo utilizado para referenciar uma cultura específica, sem ter uma região ou um país vinculado. Quando estamos trabalhando com globalização de aplicações .NET (seja ela Windows ou Web), é comum criarmos arquivos de recursos (*.resx) que representam uma cultura juntamente com uma região, como por exemplo: "pt-BR", "pt-PT", "en-US", "en-NZ", etc.

Uma cultura é considerada neutra quando referenciamos apenas a cultura, como por exemplo: "pt" ou "en". Com isso, independentemente da região (Brasil ou Portugal), podemos ter uma única versão, ou seja, portugues é portugues no Brasil e em Portugal; já noutro exemplo (Estados Unidos ou Nova Zelandia), ingles é ingles nos Estados Unidos e na Nova Zelandia.

É importante dizer que a cultura neutra pode ser utilizada apenas para a globalização da interface (arquivos *.resx). Isso se deve ao fato de que para formatar números, datas, efetuar parsing, etc., é necessário determinar os separadores, convenções, moedas, etc. Essas informações são características de uma região específica e que, a cultura neutra não disponibiliza. Para saber se a instancia da classe CultureInfo está ou não armazenando uma cultura neutra, basta recorrer a propriedade IsNeutralCulture, que retorna uma valor booleano indicando isso.

CultureInfo ci = CultureInfo.GetCultureInfo("en");
Console.WriteLine(ci.IsNeutralCulture); //Retornará True

Tags:

.NET Framework

Por dentro da Base Class Library

by Israel Aece 23. February 2008 01:00

A Base Classe Library (também conhecida como BCL) é um conjunto de classes que o .NET disponibiliza para todas as linguagens que rodam sob o .NET Framework. Essa base encapsula várias funcionalidades que tornam o trabalho dos desenvolvedores muito mais fácil. As classes contidas dentro da BCL é comum para qualquer tipo de aplicação, ou seja, independentemente de tecnologia (ASP.NET, Windows Forns, WPF, etc.), você poderá consumir essas classes que, representam tarefas que são comumente utilizadas. A imagem abaixo exibe onde a BCL está encaixada dentro da plataforma .NET.

Figura 1 - Base Class Library (BCL).

A versão 2.0 adicionou novas tipos e namespaces, enriquecendo ainda mais esta estrutura. Essas classes vão desde novas coleções (tipadas) até novos namespaces, como é o caso do System.Transactions. Apesar do .NET Framework estar em sua versão 3.5, ele utiliza o .NET 2.0 como seu núcleo. A figura abaixo ilustra perfeitamente a posição do .NET 2.0 dentro do .NET 3.X.

Figura 2 - Gráfico que exibe a posição do .NET 2.0.


A BCL é composta por vários namespaces e, através dos capítulos abaixo, veremos detalhadamente cada um dos principais deles. A idéia é abordar o conteúdo mais útil ao dia-à-dia, mostrando exemplos em Visual Basic .NET e Visual C#. Sendo assim, nem todas as classes/funcionalidades serão cobertas aqui mas, para isso, poderá recorrer ao MSDN Library.

ATENÇÃO: Os arquivos estão em formato XPS. Caso não tenha o visualizador, você poderá baixá-lo aqui.

Conteúdo

  • Capítulo 1 – Tipos de dados e Interfaces Este capítulo abordará a arquitetura de tipos fornecido pelo .NET Framework, onde na primeira parte do capítulo, será abordado os tipos padrões padrões e veremos como identificar se trata-se de um tipo valor ou referência. Além disso, analisaremos um problema grave, deixado de lado por muitos desenvolvedores, que é a questão do boxing e unboxing. Ainda nessa primeira parte, analisaremos alguns novos tipos introduzidos nesta versão do .NET Framework, em principal, os Generics. Na segunda e última parte do mesmo, vamos abordar as várias Interfaces que estão disponíveis para serem implementados em tipos customizados, fornecendo funcionalidades adicionais ao tipo criado.

  • Capítulo 2 – Trabalhando com Coleções As coleções são componentes importantes em qualquer tipo de aplicação e, para isso, esse capítulo abordará extensamente o uso das mesmas, começando pelas coleções primárias, fornecidas desde as primeiras versões do .NET Framework até as novas coleções, introduzidas na versão 2.0 do .NET Framework, quais fazem uso dos Generics. Além das coleções, analisaremos as Interfaces disponíveis para podermos estender as funcionalidades existentes e customizarmos para o nosso cenário.
  • Capítulo 3 – Utilização de Assemblies Um Assembly é a menor unidade de reutilização, segurança e controle de versão. O Assembly é algo importante que deve ser analisado cuidadosamente, pois toda aplicação .NET depois de compilada gerará um Assembly. Este capítulo abordará a sua criação desde um utilitário de linha de comando até o Visual Studio .NET. Além disso, abordaremos também outros assuntos relacionados a Assemblies, como por exemplo, strong names, GAC (Global Assembly Cache), instaladores e arquivos de configuração.
  • Capítulo 4 – Monitoramento e depuração de aplicações Toda e qualquer aplicação necessita de algum tipo de monitoramento de seu código para detectar possíveis problemas que possam acontecer e que devem ser analisados. O .NET Framework fornece várias classes que ajudam nesse monitoramento e, este capítulo, é responsável por apresentar essas classes que vão desde a manipulação do Event Log do Windows até classes que interagem com o WMI - Windows Management Instrumentation.
  • Capítulo 5 – Manipulando o sistema de arquivos Grande parte das aplicações comerciais que temos atualmente manipulam arquivos. Esses arquivos são arquivos de bancos, arquivos de parceiros e fornecedores que servem para troca de informações. Enquanto os XML Web Services ainda não são uma realidade para muitas empresas, a manipulação de arquivos e seus respectivos conteúdos é ainda muito utilizado. Tendo esse cenário, o capítulo em questão abordará as principais classes contidas dentro do namespace System.IO para exemplificar e facilitar a manipulação de arquivos do disco e streams de dados.
  • Capítulo 6 – Serialização A serialização de dados é cada dia mais utilizada em aplicações. Por mais que isso aconteça nos bastidores, esse capítulo abordará desde o seu conceito até como implementá-la; e ainda, em seus diversos formatos, utilizando as classes fornecidas pelo .NET Framework 2.0. Além disso, analisaremos classes e Interfaces que temos disponíveis, que proporcionaram o processo de serialização e deserialização mais flexível, onde podemos customizar e interceptar cada um desses processos de acordo com a nossa necessidade.
  • Capítulo 7 – Globalização de Aplicações Cada vez mais se desenvolve softwares que podem ser acessados por várias pessoas de diferentes idiomas e de diferentes locais do mundo. Tendo esse cenário, é importante que a aplicação que estamos desenvolvendo seja possível ao usuário poder customizar o idioma que deseja visualizar os dados e ainda, poder criar a aplicação independente de qualquer cultura. Essa capítulo tem justamente essa finalidade, ou seja, de exibir o que o .NET Framework é capaz de fazer para atender essa necessidade que, torna-se cada vez mais comum.
  • Capítulo 8 – Criptografia Criptografia de dados é um ponto muito importante nos mais diversos tipos de aplicações. Geralmente, em aplicações onde alguns dos dados são muito sigilosos, como é o caso de aplicações financeiras, quais mantém os dados de seus clientes, é necessário que se mantenha esses dados seguros pois, se esses dados cairem em mãos erradas, essas pessoas com más intenções, não consigam entender e/ou recuperar esses dados em sua forma legível. Esse capítulo abordará extensamente as classes responsáveis por criptografia e hashing que o .NET Framework disponiliza, bem como utilizá-las e como aplicá-las ao dia-à-dia.
  • Capítulo 9 – Utilizando Code Access Security – CAS Toda aplicação que utiliza o Common Language Runtime (CLR) obrigatoriamente deve interagir com o sistema de segurança do mesmo. Quando a aplicação é executada, automaticamente é avaliado se ela tem ou não determinados privilégios. Dependendo das permissões que a aplicação tem, ela poderá rodar perfeitamente ou gerar erros relacionados a segurança. Code Access Security (também conhecido como CAS), é um mecanismo que ajuda limitar/conceder o acesso que o código que está querendo realizar, protegendo recursos e operações. Este capítulo abordará como utilizar o CAS, que é fornecido juntamente com o SDK do .NET Framework e, como configurar devidamente a aplicação para evitar problemas relacionados a segurança.
  • Capítulo 10 – Envio de Mensagens (E-mails) Envio de e-mails é muito comum em qualquer tipo de aplicação, seja ela uma aplicação para internet, uma aplicação para Windows ou até mesmo serviços que rodam sem uma intervenção do usuário. O .NET Framework fornece um namespace contendo classes e muitos outros tipos que podemos utilizar nas aplicação para habilitar o envio de e-mails e, conseqüentemente, torná-las muito mais dinâmicas e inteligentes.
  • Capítulo 11 – Criando Serviços do Windows Os Serviços do Windows (Windows Services), permitem-nos criar aplicações que rodam em “background” no sistema operacional. Estes serviços podem ser automaticamente inicializados quando o sistema operacional inicializar, podendo ainda ser pausado e reinicializado, sem apresentar nenhuma interface com o usuário. Esses serviços são ideais para ser usado em servidores ou em funcionalidades de longa duração que necessitem ser executadas de forma totalmente independente, sem a intervenção de um usuário. O capítulo corrente abordará desde a sua criação, depuração e instalação do mesmo.
  • Capítulo 12 – Interoperabilidade com componentes COM A Microsoft criou a plataforma .NET e, em pouco tempo, essa plataforma foi adotada por muitas e muitas empresas. Algo importante é que muitas dessas empresas, já tinham componentes COM que eram utilizados em massa nas aplicações e que são inviáveis para serem reescritos imediatamente. Felizmente a Microsoft pensou no legado e possibilita a interoperabilidade de componentes COM, interagindo com aplicações baseadas na plataforma .NET e vice-versa. Este capítulo mostrará os passos necessários para efetuar essa interoperabilidade entre as novas aplicações e o que já existe em código legado.
  • Capítulo 13 – Reflection Reflection é a habilidade de extrair informações de metadados de um determinado tipo, ou seja, quais parâmetros, métodos, entre outros membros um determinado tipo possui. Isso torna a aplicação bastante flexível, onde podemos extrair informações necessárias para podermos customizar e automatizar a criação de ferramentas e utilitários que auxiliam os próprios desenvolvedores. Além disso, permite a criação em runtime de Assemblies e como instanciar classes via programação. Esse capítulo propõe-se a explicar como criar esse tipo de funcionalidade dentro da aplicação.
  • Capítulo 14 – Threading A criação de threads permitem aumentar consideravelmente a performance das aplicações. Elas fornecem a habilidade de conseguirmos delegar processamentos em diversas unidades de execução, aumentando a capacidade de processamento de uma aplicação. Mas utilizando isso de forma errada, poderá piorar ao invés de melhorar, consumindo mais recursos do que o necessário, tendo um comportamento inesperado e retornando valores diferentes do esperado. O .NET Framework fornece várias classes que podemos utilizar para criação e gerenciamento de threads, bloqueio de recursos em um ambiente multi-threading e sincronização. Este capítulo irá ajudá-lo a conhecer alguns problemas existentes em aplicações que fazem o uso de threads e como contorná-los.

Referências Bibliográficas

  • Code Complete – Second Edition
    Autor: Steve McConnell
    Editora: Microsoft Press
    ISBN: 0-7356-1967-0
  • Writing Secure Code – Second Edition
    Autores: Michael Howard e David LeBlanc
    Editora: Microsoft Press
    ISBN: 0-7356-1722-8
  • CLR via C# – Second Edition
    Autor: Jeffrey Richter
    Editora: Microsoft Press
    ISBN: 0-7356-2163-2
  • Programming Visual C# 2005: The Language
    Autor: Donis Marshall
    Editora Microsoft Press
    ISBN: 0-7356-2181-0
  • Expressões Regulares – Uma abordagem divertida
    Autor: Aurélio Marinho Jargas
    Editora: Novatec
    ISBN: 85-7522-100-0
  • Collection 5160: Core Development with Microsoft .NET Framework 2.0
    Autor/Editor: Microsoft
  • Collection 5161: Advanced Development with Microsoft .NET Framework 2.0
    Autor/Editor: Microsoft

Tags: , , , , , , , ,

.NET Framework | Async | C# | Security | VB.NET

Powered by BlogEngine.NET 1.5.0.0
Theme by Mads Kristensen

Sobre

Meu nome é Israel Aece e sou especialista em tecnologias de desenvolvimento Microsoft, atuando como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. [ Mais ]

Twitter

Host