Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo

Aplicativos Web e serialização do Azure

Atualizado: janeiro de 2015

Na gravação de aplicativos para Microsoft Azure Azure, a serialização de dados se torna cada vez mais importante em comparação com a gravação de aplicativos locais. Os aplicativos do Azure são cobrados pelo uso do banco de dados, armazenamento geral, transferências de dados e armazenamento em cache. Para obter mais informações sobre preços, consulte Visão geral dos preços do Azure. Além disso, os aplicativos do Azure podem ser usados em dispositivos móveis como telefones, tablets, etc. e isso pode apresentar latência devido a sua natureza parcialmente conectada. Todos esses fatores indicam que é muito importante saber como seu aplicativo enviará e receberá dados. As cargas menores reduzirão os custos de largura de banda e armazenamento e podem ajudar a minimizar a latência.

. O serializador determina como o objeto .NET é convertido em XML. WCF fornecido com 4 serializadores diferentes:

Após serializados, os dados XML são gravados para a transmissão como uma série de bytes. O processo de converter o XML em um fluxo de bytes é chamado de codificação. O WCF suporta as seguintes codificações: de texto, binária e MTOM. A serialização é controlada por atributos no contrato de serviço. Por padrão, o DataContractSerializer é usado; isso é especificado pelo ServiceContractAttribute. Para usar o XmlSerializer, aplique o XmlSerializerFormatAttribute ao contrato de serviço. O DataContractJsonSerializer é usado quando o WebGetAttribute ou o WebInvokeAttribute é aplicado a uma operação de serviço. Ambos os atributos permitem que você especifique RequestFormat e ResponseFormat. Para usar JSON para solicitações e respostas, defina ambos como WebMessageFormat.Json. Para usar JSON, utilize o WebHttpBinding que configura automaticamente o WebHttpBehavior. Para obter mais informações sobre a serialização no WCF, consulte: Serialização e desserialização, Serialização no Windows Communication Foundation. Para obter mais informações sobre JSON e WCF, consulte Uma introdução aos serviços RESTfull com WCF e Visão geral do REST no WCF.

ImportantImportante
O uso de JSON requer o uso de WebHttpBinding e WebHttpBehavior, que não dão suporte à comunicação com o SOAP. Os serviços que se comunicam com WebHttpBinding não dão suporte à exposição de metadados de serviço; portanto, você não poderá usar a funcionalidade Adicionar Referência de Serviço do Visual Studio ou a ferramenta de linha de comando svcutil para gerar um proxy do lado do cliente. Para obter mais informações sobre como chamar programaticamente os serviços que usam WebHttpBinding, consulte Como consumir serviços REST com WCF

O protocolo Open Data no momento dá suporte aos dois seguintes formatos de serialização:

  • Formato de sindicalização Atom (Atom): um formato de intercâmbio para Web feeds baseado em XML.

  • JavaScript Object Notation (JSON): um formato de intercâmbio de dados legível e leve.

Em OData, os clientes podem solicitar o formato desejado de serialização da resposta definindo o cabeçalho de mensagem Accept. O OData também fornece uma opção de consulta do sistema $format que pode ser usada por clientes que não podem definir os cabeçalhos de solicitações. Os serviços de dados WCF dão suporte aos formatos de serialização Atom e JSON, mas não à opção de consulta de $format. Para dar suporte à serialização JSON para todos os clientes possíveis, você deve habilitar o suporte à opção de consulta de $format na implementação dos serviços de dados de WCF. Para obter mais informações, consulte Diretrizes do OData no Azure.

Em geral, é útil demonstrar as diferenças importantes em tamanhos de serialização, mostrando as serializações do mesmo tipo serializado de maneira diferente. Esta é a definição de um tipo de Person de exemplo:

[DataContract(Namespace="http://example.org/person")]
    public class Person
    {
        public Person() { }
        public Person(string last, string first, string email)
        {
            lastName = last;
            firstName = first;
            emailAddress = email;
        }

        [DataMember]
        public string firstName { get; set; }

        [DataMember]
        public string lastName { get; set; }

        [DataMember]
        public string emailAddress { get; set; }
    }
}           

O DataContractSerializer serializou uma instância de Person desta forma:

<?xml version="1.0"?>
    <Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.org/person">
    <emailAddress>kim.abercrombie@contoso</emailAddress>
    <firstName>Kim</firstName>
    <lastName>Abercrombie</lastName>
</Person>

O XmlSerializer serializou uma instância de Person desta forma:

<?xml version="1.0"?>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <firstName>Kim</firstName>
    <lastName>Abercrombie</lastName>
    <emailAddress>kim.abercrombie@contoso</emailAddress>
</Person>

O DataContractJsonSerializer serializou uma instância de Person desta forma:

{"emailAddress":"kim.abercrombie@contoso","firstName":"Kim","lastName":"Abercrombie"}

Outra área a considerar é o codificador de mensagem. Os codificadores convertem o XML em uma série de bytes que podem ser enviados através da transmissão. Isso pode reduzir o tamanho da carga consideravelmente. Os codificadores são configurados na associação. Para obter mais informações sobre codificadores, consulte Escolhendo um codificador da mensagem. Os codificadores binários da Microsoft fornecerão a menor representação dos dados; porém, ela só pode ser usada em cenários onde o cliente e o serviço estão em execução no .NET Framework. Se seu aplicativo exigir a interoperabilidade com outras plataformas, use o codificador de texto. Você também pode implementar seu próprio codificador personalizado e executar algum tipo de compactação. Para obter mais informações, consulte Codificador da mensagem personalizada

A escolha dos melhores serializadores e codificadores a serem usados varia de acordo com o aplicativo e suas necessidades de interoperabilidade. Para cenários onde o serviço e o cliente estão em execução no .NET Framework, considere o uso do codificador binário e do DataContractSerializer. Para cenários onde a interoperabilidade é necessária, use o codificador de texto. Nesses tipos do cenários, o DataContractJsonSerializer fornecerá a menor representação, mas isso requer o uso de um serviço não SOAP. Se você precisar usar o SOAP, considere o uso do DataContractSerializer.

Mostrar:
© 2015 Microsoft