Elemar DEV

Tecnologia e desenvolvimento .net

Desenvolvendo para Windows 8 – Parte 7 – Entendendo “Contracts” e “Extensions”

Olá pessoal. Tudo certo?!

O post de hoje é um “choque”. É uma provocação para nossa forma de pensar desenvolvimento de aplicações. A interface Metro “não aceita” nosso mindset atual.

Quer ter uma excelente idéia do que estou querendo dizer, veja a excelente série de vídeos produzida pelo Fernando MartinDesevendando o Windows 8.

Se você está chegando agora, considere dar uma olhada nos posts anteriores (consulte o índice de séries).

O que mudou?

O usuário precisa ter uma experiência fluída e uniforme. No passado, pensávamos nossas aplicações como “blocos monolíticos” – com interfaces independentes. Hoje, não pode ser mais assim. Antes, ignorávamos a exisitência de outros aplicativos. Agora, precisamos pensar como “integrar” as coisas.

Antes, toda a interface com o usuário “ficava dentro” de nossos aplicativos. Agora, boa parte da interface fica “no Windows”.

O Windows 8 funciona como um “orquestrador” dessa integração. Para isso, provê e define um conjunto extenso de contratos e extensões.

O que são, mesmo, contratos?!

Já falei sobre contratos na parte 4, mas acho que é importante repetir. Veja:

Metro style apps use contracts to declare the interactions that they support with other apps. These apps must include required declarations in the package manifest and call required Windows Runtime APIs to communicate with Windows and other contract participants.

A contract is like an agreement between one or more apps. Contracts define the requirements that apps must meet to participate in these unique Windows interactions.

For example, Windows lets users share content from one app to another. The app that shares content out supports a source contract by meeting specific requirements, while the app that receives the shared content supports a target contract by meeting a different set of requirements. Neither app needs to know anything about the other. Every app that participates in the sharing contract can be confident that the sharing workflow is completely supported, end-to-end, by Windows.

De forma bem simplória, podemos assumir que, hoje, estamos acostumados com apenas um “contrato” – Launch. Ou seja, estamos acostumados a ter o sistema operacional “pedindo” para nossa aplicação iniciar.

No Windows 8, há um número maior de contratos. Ou seja, o Windows pode pedir mais coisas para nossa aplicação, além de “inicie e apresente algo”.

São contratos no Windows 8:

  • App to App Picking;
  • Cached File Updater;
  • Play To;
  • Search To;
  • Settings;
  • Share.

App to App Picking

Seu aplicativo conseguiria “gerenciar arquivos” para outros?!

Na interface Metro, uma App solicita “imagens”. O Windows, então, abre um “File Picker” que, no lugar prover uma lista de diretórios (estrutura de pastas), abre aplicativos que relacionam conteúdo.

Da mesma forma, sua aplicação deseja salvar uma imagem?!, O Windows apresenta um outro File Picker para você selecionar uma App que cuidará da gravação.

A screen shot of a file picker with the center area emphasized to show where the app page will be loaded.

Reparou na mudança?! Uma app pode “abrir e salvar” da galeria de imagens do Facebook, por exemplo, sem precisar implementar o “cliente do serviço”. Uma outra app faz isso para você.

Da mesma forma, você pode disponibilizar e salvar arquivos de sua app direto. Quem ganha?! O usuário.

Repare, “os limites” das aplicações foram explodidos.

A MSDN oferece um app de exemplo para implementação desse contrato.

Cached File Updater

Aqui, quase um complemento para o contrato anterior. Vejamos a descrição do próprio MSDN:

You can provide updates for particular files to help users who want to use your app as a central repository to track and maintain files. For example, Microsoft SkyDrive can track a file to ensure that the user sees the latest version of the file and trigger updates to the file if the SkyDrive app can provide a newer version. Additionally, if the user saves a newer version of a tracked file, SkyDrive can trigger an update to its version of the file to ensure that SkyDrive always has the newest version.

Vamos entender a coisa um pouco melhor. No Windows 8, temos uma experiência conectada. Ou seja, não conseguimos fazer uma distinção clara entre conteúdo local e conteúdo da nuvem. Entretanto, considere que ninguém, em nenhum lugar, consegue estar “on line” o tempo todo. Por exemplo, se você viaja de avião, fica sem internet por algum tempo.

Esse contrato deve ser implementado por aplicativos que vão manter um “cache” de conteúdo primariamente on-line. Pegou a ideia?!

Play To

Seu app consegue “reproduzir” conteúdo?! Músicas, vídeos, apresentações ou algo assim?! Então ele deverá implementar esse contrato e será opção para ser evocado pelo Windows quando o usuário desejar reproduzir algum conteúdo.

Antes, havia a associação com “extensão de arquivos”. Entretanto, considere que essas mídias não são mais, necessariamente, arquivos. Elas podem estar na nuvem (como recursos), em CDs e .. por aí vai.

Interessado!? Dá uma olhada nesse exemplo.

Search To

Aqui uma “bomba” para interfaces convencionais! A orientação do Windows é NÃO IMPLEMENTE BUSCA NA INTERFACE DO SEU APP. No lugar disso, deixe o usuário usar a opção Search da Charm Bar.

O bacana de implementar esse contrato é que nossa App sempre será uma opção quando o usuário for localizar algo. Considere: o usuário aciona o Charm Bar e digita o nome de um cliente dele – ele terá a opção de localizar dados nos contatos do outlook e.. no seu aplicativo.

Abaixo, você pode ver o demo da Microsoft com a “famosa” Contoso.

A cropped screen shot of the search results view that was provided by the BUILD app for the conference (results view is partially occluded by the search pane),

Repare,

o App perde o foco. O destaque é aquilo que o usuário deseja fazer. Ele deseja localizar dados de um cliente, por exemplo, sua app se coloca a disposição para realizar essa operação (assim como o Outlook, certamente, o fará).

Settings

Novamente, sua aplicação não deve implementar um “PAINEL DE CONFIGURAÇÃO” diretamente. No lugar disso, deverá implementar um contrato para configuração.

Como usuário: quer adicionar contas de email, no app de email, acione esse charm. Quer adicionar contas do Twitter, em um cliente Twitter, acione esse charm.

Como desenvolvedor: sua app precisa de alguam configuração, implemente o contrato para que os usuários possam chegar na “tela de configuração” através do charm.

Share

Esse contrato já recebeu dois posts para tratar só dele. Veja a parte 4 e a parte 5 para entender o propósito dele.

O que são extensions?

Vejamos a descrição do MSDN:

An extension is like an agreement between an app and Windows. Extensions lets app developers extend or customize standard Windows features primarily for use in their apps and potentially for use in other apps.

Qual a diferença entre contratos e extensões?! Fundamentalmente, extensões fazem interface direta com o Windows – complementam o Windows. Enquanto isso, contratos são voltados para integrar aplicações ou melhorar a experiência do usuário enquanto estiver usando o aplicativo. Pegou?!

São extensões:

  • Account picture provider;
  • AutoPlay;
  • Background tasks;
  • Camera settings;
  • Print task settings;
  • Contact picker;
  • File activation;
  • Game explorer;
  • Protocol activation;
  • SSL/certificates.

Account picture provider

O usuário deseja trocar a foto de seu perfil no Windows? Pois bem, o Windows deixa que sua aplicação forneça essa foto.

Veja essa app de exemplo para ver como fazer isso.

AutoPlay

Quando o usuário conecta um dispositivo ao computador, o Windows dispara um evento chamado AutoPlay. Implementando esta extensão, sua App será relacionada para o usuário como uma possível alternativa para tratar desse dispositivo.

Informações detalhadas sobre essa extensão, que certamente abordaremos em um post futuro, já estão disponíveis no MSDN.

Background tasks

Sua app precisa executar operações que não demandam interação com o usuário?! No ambiente Metro essas operações podem ser excutadas em background através dessa extensão. Trata-se de um tópico extremamente importante e que voltará a ser conduzida por aqui.

Camera settings

Para apps que vão utilizar a câmera e precisam fazer ajustes no funcionamento do dispositivo durante o processo. Ou ainda, para fabricantes de hardware que desejam oferecer uma interface, em Metro Style, para realização de ajustes e configurações avançadas.

Print Task

Mesmo conceito do “Camera Settings”, aplicado a impressora.

Contact Picker

No Windows 8, contatos são informações de primeira relevância. Podemos fazer com que nossa app seja considerada quando um contato for requisitado por qualquer outra App (juntando contatos do Facebook, Twitter, Linkedin, ..).

Há um bom exemplo aqui.

File Activation

O bom e velho mecanismo de associação de uma extensão de arquivo com um app. Agora, todo o processo é facilitado. Afinal, no lugar de associar extensões no registro do Windows basta informar dependências no manifesto.

Manifest designer for file types

 

Game explorer

Registra a app como game e facilita o controle parental. Este artigo do MSDN descreve o processo.

Protocol activation

Qualquer app pode “registrar” um protocolo de comunicação para o Windows.

SSL/Certificates

Registra um certificado a app.

Concluindo

O Windows 8 apresenta alternativas muito interessantes de desenvolvimento. Com ele, podemos prover experiências fluídas integrando nosso software a experiência do sistema operacional.

De fato, o usuário precisa pensar na “tarefa”, nunca no app.

Minha recomendação: faça esforço real para entender esse paradigma (principalmente os contratos).

Era isso.

Um Comentário em “Desenvolvendo para Windows 8 – Parte 7 – Entendendo “Contracts” e “Extensions”

  1. Leandro Souza
    02/09/2012

    Vou prestar a prova 71-484 amanhã e a sua série esta bem simplificada e ajuda muito quem esta começando agora com Windows 8.

    Continue assim, compartilhando o seu conhecimento.
    Obrigado.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

Você está comentando usando sua conta WordPress.com. Sair / Mudar )

Imagem do Twitter

Você está comentando usando sua conta Twitter. Sair / Mudar )

Foto do Facebook

Você está comentando usando sua conta Facebook. Sair / Mudar )

Conectando a %s

Informação

Publicado às 20/07/2012 por em Post e marcado .

Estatísticas

  • 429,273 hits
%d bloggers like this: