Formato do arquivo de manifesto XML

Atualizado: setembro de 2014

O arquivo de manifesto XML descreve o conteúdo de pacote e especifica como o conteúdo de pacote é mapeado em uma estrutura de diretórios para cada função. Geralmente, um arquivo implantado para uma determinada função é necessário em outras funções. O único manifesto no novo formato de pacote permite que o criador inclua o arquivo duplicado apenas uma vez e, em seguida, descreva declarativamente como implantar esse arquivo para várias funções. O novo formato de pacote simplifica a estrutura do arquivamento e permite que os criadores de pacote otimizem os arquivos que compartilham arquivos por funções ou dentro de uma função. Isso resulta em um tamanho de pacote menor que pode permitir uma implantação mais rápida para o Windows Azure.

Por convenção, o arquivo de manifesto XML é chamado package.xml. No entanto, o manifesto XML pode ser qualquer arquivo no arquivamento, contanto que a relação aponte para um arquivo de manifesto XML e o arquivo de manifesto XML esteja de acordo com o esquema.

Este tópico descreve o formato do arquivo de manifesto XML usando exemplos. Para ver o esquema do arquivo de manifesto XML, consulte Esquema do arquivo de manifesto XML.

O formato XML básico é o seguinte:

<?xml version="1.0" encoding="utf-8"?>
<PackageDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
  <PackageMetaData />
  <PackageContents />
  <PackageLayouts />
</PackageDefinition>

O namespace de XML para o arquivo de manifesto XML é:

http://schemas.microsoft.com/windowsazure

O manifesto XML contém três seções. Cada seção é uma coleção de recursos nomeados onde todos os nomes são URIs relativas pelo uso da sintaxe "a/b/c…". Esses nomes são tratados com diferenciação de maiúsculas e minúsculas ao determinar igualdade e devem seguir as convenções de codificação e saída de URI normais. Este tópico descreve cada uma das três seções na seguinte ordem:

A coleção de PackageMetaData é um repositório de chave/valor, onde chaves e valores são cadeias de caracteres. A seguir está um exemplo de uma coleção de PackageMetaData:

<PackageMetaData>
  <KeyValuePair>
    <Key>http://schemas.microsoft.com/windowsazure/ProductVersion/</Key>
    <Value>1.7.30308.2000 </Value>
  </KeyValuePair>
</PackageMetaData>

A soma dos bytes UTF-8 que codificam a chave e os valores não deve exceder 1MB. Os processadores de pacote com mais de 1 MB de metadados podem ser rejeitados por qualquer processador de pacote.

Para evitar conflitos de namespace, as chaves de metadados devem ser URIs que seguem as mesmas convenções usadas por namespaces XML.

A coleção PackageContents descreve os arquivos que compõem o pacote. Isso inclui o nome de arquivo, o comprimento, um hash sha256 opcional de conteúdo e o caminho. A seguir está um exemplo de uma coleção de PackageContents:

<PackageContents>
  <ContentDefinition>
    <Name>Content/Example/WithoutHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>None</IntegrityCheckHashAlgortihm>
      <IntegrityCheckHash/>
      <DataStorePath>File00</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
  <ContentDefinition>
    <Name>Content/Example/WithHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>Sha256</IntegrityCheckHashAlgortihm>          <IntegrityCheckHash>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=</IntegrityCheckHash>
      <DataStorePath>File01</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
</PackageContents>

Um item de conteúdo é um fluxo nomeado de bytes e recursos de conteúdo do blob que pode ter tamanho ilimitado. Opcionalmente, este fluxo de bytes pode ter uma verificação de integridade para verificar que os bytes foram transportados corretamente sem danos.

Os valores válidos para o elemento IntegrityCheckHashAlgortihm são None e Sha256. Se None for especificado, então o elemento IntegrityCheckHash deve ser o elemento vazio. Para Sha256, a cadeia de caracteres deve ser uma codificação de base 64 de bytes de hash. Essa cadeia de caracteres deve ser xs:base64Binarydo tipo XSD.

Os nomes são URIs relativas e tem diferenciação de maiúsculas e minúsculas. Cada item de conteúdo tem um elemento DataStorePath, que é um URI relativo que se refere ao fluxo de bytes no arquivamento do OPC para aquele item. O nome de DataStorePath é arbitrário. Para garantir que os arquivos de OPC possam ser facilmente desempacotado e empacotadas novamente, os nomes de item de OPC devem ser US-ASCII e devem ser exclusivos quando comparados sem diferenciação de maiúscula e minúscula. Você também deve uso de nomes curtos para evitar limites de caminho do sistema de arquivos.

Os conteúdos dos mapas de coleção PackageLayouts recorrem a um layout específico de arquivos e diretórios na VM do Windows Azure. O layout do arquivo inclui a hora de criação e alteração, além de um caminho relativo. Os caminhos de devem ser considerados específicos a um determinado sistema de arquivos de destino. Como a sintaxe dos caminhos depende do sistema operacional, eles devem ser tratados como valores opacos. Como os layouts são simplesmente uma descrição de mapeamento, o tamanho de um layout é proporcional ao número de arquivos no layout e não ao tamanho do conteúdo. Isso significa que, no futuro, os autores de pacote podem potencialmente incluir layouts alternativos; por exemplo, um layout direcionado para o Linux e outro para o sistema operacional Windows e, em seguida, pacotes desconhecidos do sistema operacional. No entanto, para o SDK do Windows Azure 1.7, os pacotes devem seguir as convenções do Windows.

Os mapas de coleção PackageLayouts empacotam conteúdos para um layout específico de arquivos e diretórios na máquina virtual do Windows Azure. Os layouts de pacote são nomeados e um pacote pode ter vários layouts diferentes. Cada layout descreve como extrair o fluxo de bytes de um item do conteúdo do pacote para um arquivo em um sistema de arquivos de destino. Cada layout é uma lista de caminhos de arquivos únicos usando as convenções de nomenclatura do sistema de arquivos de destino. Os autores de pacotes podem, potencialmente, incluir layouts alternativas e criar pacotes desconhecidos do sistema operacional. Por exemplo, um pacote pode incluir um layout direcionado para Linux e outro para o Windows. O layout também inclui metadados do arquivo, como a hora de criação e modificação do UTC e os atributos somente-leitura.

O seguinte exemplo de uma coleção de PackageLayouts contém dois layouts, chamados de fileCollection1 e fileCollection2. Ambos os layouts descrevem a criação de dois arquivos de recursos de pacote Content/Example/WithoutHash e Content/Example/WithHash. No entanto, eles mapeiam o conteúdo para nomes de arquivo diferentes. Em fileCollection1, os nomes de arquivo são exclusivos quanto à diferenciação de maiúscula e minúscula. Em fileCollection2, os nomes são diferentes apenas por maiúscula e minúscula. Este exemplo ilustra como o formato de empacotamento é projetado para ser desconhecido, mas os autores de pacote que criarem layouts de arquivo devem estar cientes das convenções do sistema e arquivos de destino. O segundo layout de arquivo, fileCollection2, só pode ser extraído em um sistema de operação cujo sistema de arquivos tem diferenciação de maiúsculas e minúsculas. Em particular, a cadeia de caracteres codificada no argumento de FilePath é tratada como uma chave opaca, comparada com diferenciação de maiúsculas e minúsculas.

<PackageLayouts>
    <LayoutDefinition>
      <Name>fileColletion1</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>Readme.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9633733Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>ReadmeToo.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
    <LayoutDefinition>
      <Name>fileColletion2</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>README</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>Readme</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
  </PackageLayouts>

Consulte também

Mostrar: