Compartilhar via


Empacotamento e implantação de recursos

O .NET estrutura usa um modelo de hub e spoke para pacote e implantar recursos.O hub é o assembly principal que contém o código executável nonlocalizable e os recursos para uma cultura única, chamada o neutro ou cultura padrão.A cultura padrão é a cultura de retorno para o aplicativo.Cada spoke se conecta a um satélite assembly que contém os recursos para uma cultura único, mas não contém qualquer código.

Existem diversas vantagens para esse modelo:

  • Você pode adicionar incrementalmente recursos para culturas novos após você ter implantado um aplicativo.Como desenvolvimento subseqüente de recursos específicos da cultura pode exigir uma quantidade significativa de time, isso permite que você primeiro da versão principal do aplicativo e entregar recursos específicos da cultura em uma data posterior.

  • Você pode atualizar e alterar os assemblies de satélite do aplicativo sem recompilar o aplicativo.

  • Um aplicativo precisa carregar apenas esses assemblies satélites que contêm os recursos necessários para uma determinada cultura.Isso pode reduzir significativamente o uso de recursos do sistema.

No entanto, também há desvantagens para esse modelo:

  • Você deve gerenciar vários conjuntos de recursos.

  • Aumenta o custo inicial de um aplicativo de teste, porque você deve testar várias configurações.Observe que a longo prazo-será mais fácil e barato testar um aplicativo de núcleo com vários satélites, que a testar e manter várias versões internacionais paralelas.

Convenções de nome de recurso

Quando você empacota os recursos de seu aplicativo, você deve nomeá-los usando o recurso convenções de nomenclatura de Common linguagem tempo de execução espera.O tempo de execução identifica um recurso por sua assinatura de cultura, ou nome.Cada cultura recebe um nome exclusivo, que é uma combinação de um nome de cultura de duas letras, letras em minúsculas associado a um linguagem e, se necessário, um nome de subcultura de duas letras maiúsculas associado a um Country ou região.O nome de subcultura segue o nome de cultura, separado por um traço (-).sistema autônomo exemplos incluem ja-JP para japonês no Japão, en-US para inglês americano, ou de-DE para alemão na Alemanha (em oposição a alternativo, sistema autônomo de-AT para alemão na Áustria).Consulte o Classe CultureInfo para obter uma lista completa de nomes de cultura.

Processo fallback de recurso

O modelo hub e spoke para empacotamento e implantação de recursos usa um processo de fallback para localizar recursos apropriados.Se um usuário de aplicativo solicitar um ResourceSet que não disponível, o common linguagem tempo de execução procura a hierarquia das culturas procurando um recurso de fallback apropriado que melhor corresponda à solicitação do usuário e gerará uma exceção apenas sistema autônomo último recurso. Em cada nível da hierarquia, se um recurso apropriado for encontrado, o tempo de execução usa-lo.Se o recurso não for encontrado, a Pesquisar continua no próximo nível.O processo de fallback de recurso é descrito nas etapas a seguir:

  1. O tempo de execução primeiro verifica o cache de assemblies global para um assembly correspondente a cultura solicitada para o seu aplicativo.

    O modelo global assembly cache pode armazenar conjuntos de recursos que são compartilhados por muitos aplicativos.Isso permite que você tenha que incluir conjuntos de recursos específicos na estrutura de diretórios de cada aplicativo que você criar.Se o tempo de execução encontrar uma referência ao assembly, ele pesquisa o assembly para o recurso solicitado.Se ele encontrar a entrada no conjunto de módulos (assembly), ele usa o recurso solicitado.Se ele não localizar a entrada, ele continuará a Pesquisar.

  2. Em seguida, o tempo de execução verifica o diretório do assembly em execução no momento para um diretório correspondente a cultura solicitada.Se ele encontrar o diretório, ele pesquisa nesse diretório para um satélite válido assembly para a cultura solicitada.O tempo de execução, em seguida, procura o asssembly satélite para o recurso solicitado.Se encontrar o recurso no assembly, ele utilizará.Se ele não localizar o recurso, ele continuará a Pesquisar.

  3. As pesquisas próxima time de execução do cache de assembly global novamente, desta vez para o assembly do pai do recurso solicitado.Se o conjunto pai existir no cache global de assemblies, o tempo de execução procura o assembly para o recurso solicitado.

    O pai é definido sistema autônomo a cultura de retorno apropriada.Considere sistema autônomo pais sistema autônomo candidatos à melhor ajuste; fornecer qualquer recurso é preferível gerar uma exceção.Esse processo também permite a reutilização de recursos.Você precisa incluir um determinado recurso no nível pai somente se a cultura filho não precisar localizar o recurso solicitado.Por exemplo, se você fornecer assemblies satélites para en (Neutro em inglês), en-GB (em inglês sistema autônomo falado no Reino Unido) e en-US (inglês sistema autônomo falado nos Estados Unidos), satélite en conteria a terminologia comum e sistema autônomo satélites en-GB e en-US poderiam fornecer substituições para esses termos são diferentes.

  4. Em seguida, o tempo de execução verifica o diretório do assembly em execução no momento para ver se ele contém um diretório pai.Se existir um diretório pai, o tempo de execução procura o diretório para um satélite válido assembly para a cultura pai.Se ele encontrar o assembly, o tempo de execução procura o assembly para o recurso solicitado.Se encontrar o recurso, ele utilizará.Se ele não localizar o recurso, ele continuará a Pesquisar.

  5. sistema autônomo pesquisas próxima tempo de execução pai assemblies, sistema autônomo na etapa anterior, por meio de vários níveis possíveis.Cada cultura tem apenas um pai, mas um pai pode ter seu próprio pai.

  6. Se tiverem pesquisados a cultura originalmente especificado e todos os pais e o recurso ainda não for encontrado, o recurso para a cultura (retorno) padrão é usado.A partir da versão 2.0 do .NET estrutura, você pode especificar que o local de fallback final para recursos é um asssembly satélite, em vez do assembly principal.Usando o NeutralResourcesLanguageAttribute com o UltimateResourceFallbackLocation enumeração, você pode controle se o local de fallback final de recursos estiver no assembly principal, ou em um asssembly satélite.

    Observação:

    O recurso padrão é o único recurso que é compilado perspicácia h o assembly principal.A menos que você especifique um satélite assembly usando o NeutralResourcesLanguageAttribute, é o fallback final (final pai). Portanto, é altamente recomendável que você sempre incluem um conjunto padrão de recursos no seu assembly principal.Isso ajuda a garantir que exceções não são lançadas.Incluindo um padrão arquivo de recurso você fornece um fallback para todos os recursos e certifique-se de que pelo menos um recurso está sempre presente para o usuário, mesmo se não for culturalmente específico.

  7. Finalmente, se o tempo de execução não encontrar um recurso para uma cultura de padrão (retorno), uma exceção é lançada indicando que o recurso não foi encontrado.

sistema autônomo um exemplo de sistema autônomo a procura por um recurso solicitado é conduzida, suponha que o usuário solicita um recurso localizado para espanhol mexicano.De acordo com as convenções de nomenclatura de recursos descritas acima, o tempo de execução primeiro procura o cache de assembly global para o assembly correspondente a cultura solicitada, "es-MX".Não encontrá-las, o tempo de execução, em seguida, procura no diretório do assembly atualmente em execução para um diretório "es-MX".Com falha, o tempo de execução procura global assembly cache novamente para um pai assembly refletindo a cultura de retorno apropriada — neste caso, "es" (espanhol).Se o pai assembly não é encontrado, o tempo de execução procura todos os níveis possíveis de módulos (assemblies) pai para a cultura "es-MX" até que um recurso correspondente seja encontrado.Se um recurso não for encontrado, o tempo de execução usa o recurso para a cultura padrão.

Alternar definitiva para satélite assembly

A partir da versão 2.0 do .NET estrutura, você pode, opcionalmente, remover recursos do assembly principal e especificar que os recursos de fallback finais estão a ser localizado em um asssembly satélite correspondente a uma cultura específica.Para controlar o processo de fallback, você pode usar o NeutralResourcesLanguageAttribute. Um construtor novo foi adicionado ao NeutralResourcesLanguageAttribute classe que leva adicional UltimateResourceFallbackLocation parâmetro para especificar o local onde o ResourceManager deve extrair os recursos de retorno: o principal assembly ou um asssembly satélite.

O exemplo a seguir mostra como aplicar o atributo no nível de classe:

[assembly: NeutralResourcesLanguageAttribute("de" , UltimateResourceFallbackLocation.Satellite)]

O local de fallback final, isso instrui o ResourceManagerpara procurar por recursos do subdiretório "de" no diretório do assembly atualmente em execução.

Alternativa de empacotamento sugerida

Devido a restrições de time ou orçamento, talvez não seja viável para a criar de um conjunto de recursos para cada subcultura que ofereça suporte a seu aplicativo.Nessa situação, você pode criar um único satélite assembly para uma cultura pai que pode ser usada pelo subcultures todas relacionadas.Por exemplo, você poderia fornecer um assembly único satélite inglês (en) que poderia ser recuperado por usuários que solicitam recursos específicos de região do inglês e um asssembly satélite alemão único (de) para os usuários que solicitam recursos alemão específicos da região.Por exemplo, solicitações para alemão na Alemanha (de-DE), alemão na Áustria (de-AT) e alemão na Suíça (CH de) faria fallback para o asssembly satélite alemão (de).selecionar cuidadosamente os recursos padrão para compilar com o assembly principal.Os recursos padrão são fallback final e, portanto, devem ser os recursos que serão solicitados pela maioria dos usuários do seu aplicativo.Embora esta solução implanta recursos que estão menos culturalmente específicos, ele pode reduzir significativamente os custos de localização do seu aplicativo.

Consulte também

Conceitos

Recursos em aplicativos

Cache global de assemblies

Criando assemblies satélites