Professional Documents
Culture Documents
Journal 13
Software + Serviços
O Barramento de Serviços
para a Internet
Projeto Astoria
Implicações do Consumo
de Software + Serviços do
TI Corporativo
Mashups Corporativos
Journal 13
Apresentação 1
por Simon Guest
Projeto Astoria 12
por Pablo Castro
Astoria é uma nova tecnologia para a criação de serviços que expõem dados na web. Conheça os detalhes dessa nova
tecnologia que se desdobra em software e serviço.
Mashups corporativos 24
por Larry Clarkin e Josh Holmes
Os mashups não são apenas para usuários e consumidores finais. Veja como criar mashups quando a empresa possui várias
fontes de dados.
Diagramação, finalização e impressão (BR) Iniciamos esta edição com Don Ferguson, cujo perfil foi o destaque do Jornal 11, lembra-
Arthéria Comunicação & Multimídia se? Don compartilha suas idéias sobre os aspectos arquiteturais de como transmitir
www.artheria.com.br mensagens pela Internet por meio de um barramento de serviços para a Internet ou ISB
(Internet Service Bus).
Depois do artigo do Don, e como parte de nossa série Perfil do Architecture Journal, é
com grande entusiasmo que compartilhamos uma entrevista com o próprio Ray Ozzie.
Nesta entrevista, Ray nos revela alguns dos detalhes da visão software + serviços e o que
®
representa ser arquiteto-chefe de software da Microsoft.
Depois da entrevista com Ray, Pablo Castro nos oferece uma síntese técnica do Projeto
As informações contidas neste The Architecture Journal (“Jornal”)
Astoria. Astoria é um novo serviço que expõe dados para clientes da web no âmbito de
têm finalidade informativa, apenas. As matérias do Jornal não
constituem a opinião da Microsoft Corporation (“Microsoft”) nem uma rede corporativa e pela Internet. Kevin Sangwell vem a seguir, com suas idéias sobre
da CMP Media LLC ("CMP") e, tampouco, são recomendações da as implicações do consumo de serviços pelo
Microsoft ou da CMP; assim sendo, você não deve confiar em TI corporativo e, este texto nos leva
nenhuma das matérias deste Jornal sem solicitar o aval de um diretamente a um artigo sobre mashups na
consultor independente. A Microsoft e a CMP não fazem
empresa, escrito por Larry Clarkin e Josh
declarações nem oferecem garantias quanto à exatidão ou
adequação para determinada finalidade de qualquer matéria deste Holmes.
Jornal e, em nenhuma circunstância, nem a Microsoft, nem a CMP Para fechar esta edição, Chip Wilson e Alan
aceitará responsabilidade de qualquer tipo, inclusive
Josephson investigam o uso do Microsoft
responsabilidade por negligência (salvo em caso de danos físicos
ou morte) com relação a quaisquer tipos de perdas ou danos Office como plataforma para software +
(incluindo, mas não se limitando, aos casos de perda de negócios, serviços. Finalmente, temos a divertida
de receita, de lucros ou prejuízo imprevisto) resultantes do uso das analogia escrita por Gianpaolo Carraro que
informações deste Jornal. O Jornal pode ter imprecisões técnicas e nos faz esta pergunta: E se a arquitetura
erros tipográficos. O Jornal pode ser atualizado periodicamente e,
fosse um planeta? Nesse texto, Gianpaolo analisa uma perspectiva interna para revelar
às vezes, poderá estar desatualizado. A Microsoft e a CMP não se
responsabilizam pela atualização das informações deste Jornal mais sobre os benefícios de se utilizar o software + serviços.
nem por deixar de fazê-lo. Este Jornal contém matérias Aqui no The Architecture Journal, gostamos de "praticar o que pregamos”. Para tanto,
encaminhadas e criadas por terceiros. Até o máximo permitido
temos prazer em anunciar uma nova experiência offline do Jornal, denominada "Journal
pela lei aplicável, a Microsoft e a CMP isentam-se de todas as
responsabilidades por qualquer ilegalidade decorrente de erro, Reader" (Leitor do jornal).
omissão ou imprecisão deste Jornal ; além disso, a Microsoft e a Demonstrando muitos dos princípios destacados nesta edição, este novo leitor é um
CMP não se responsabilizam pelas matérias recebidas de terceiros.
aplicativo instalado localmente que possibilita transformar cada edição do Jornal em uma
As marcas comerciais a seguir são marcas comerciais registradas
experiência fácil de ler, imersiva, com pesquisa integrada. O aplicativo faz a sincronização
da Microsoft Corporation: BizTalk, Microsoft, SharePoint, SQL
Server, Visual Studio, Windows, Windows NT e Windows Server. com nossos serviços de gerenciamento de conteúdo e, assim, será possível ter acesso
Quaisquer outras marcas comerciais são de propriedade de seus automático às mais recentes edições do Jornal, sem necessidade de fazer o download de
respectivos proprietários. arquivos PDF ou ler online.
Todos os direitos autorais e outros direitos de propriedade Recebemos grande volume de feedback dos leitores sobre como o jornal é lido e
intelectual das matérias publicadas no Jornal pertencem à
Microsoft Corporation ou estão a ela licenciados. Copiar,
esperamos que este novo serviço ofereça uma forma de leitura exclusiva e útil. Já no
reproduzir, transmitir, armazenar, adaptar ou modificar o layout ou início de novembro, você poderá fazer o download do leitor e obter mais detalhes em
o conteúdo deste Jornal são ações proibidas, a não ser que haja nosso website: http://www.architecturejournal.net.
autorização prévia, por escrito, da Microsoft Corporation e de cada
um dos seus autores.
Copyright © 2007 Microsoft Corporation. Todos os direitos
reservados.
Simon Guest
Muitas das tendências tecnológicas precedentes são completamente Administrar as viagens do Dave envolve muitas tarefas manuais para
conhecidas e aceitas. Este artigo discute uma terceira tendência, mais interagir com as agências de viagens por meio dos respectivos websites.
controversa: a capacidade de programação universal. Grande parte de Ele precisa coordenar tarefas manualmente em vários sites e
graduados do nível médio e das universidades possuem qualificações copiar/colar dados entre campos. Existe também alguma lógica
de programação básica quando passam a integrar a força de trabalho; seqüencial, por exemplo, fazer reserva em um restaurante e alugar um
muitos alunos já desenvolveram aplicativos PHP ou Visual Basic simples carro para chegar até o restaurante. As atitudes de Dave são
similares a um aplicativo composto ou solução de integração de parceiros que precisam usar o aplicativo e isso exige a segurança da
aplicativo corporativo (EAI - Enterprise Application Integration). O empresa. Alguns aplicativos podem fazer parte de importantes
trabalho manual é entediante e passível de erros. Dave conhece decisões do negócio, como a aprovação de empréstimos. Governança
programação básica e decide escrever um pequeno mashup. O mashup e conformidade exigirão acesso e entrada de dados de registro, assim
usa os websites das agências de viagens por meio de um script de como gravar as versões do código desses aplicativos. Transferir os
página web do lado do cliente ou clipping de HTML simples (Figura aplicativos de situação para a central de dados traz implicações
1(a)). O mashup facilita a vida do Dave, acrescentando produtividade ao profundas. As centrais de dados precisarão dar suporte a centenas ou
seu trabalho, pois o tempo que economizará na administração de suas milhares de aplicativos que mudam constantemente, além das
viagens poderá usar no seu trabalho. O mashup também é legal e isso soluções básicas do negócio. A central de dados precisa administrar
impressiona seus amigos. dezenas de servidores de aplicativos básicos supercarregados,
Mary e Ludwig gostam do aplicativo e Dave lhes oferece o código. acessados por milhares de usuários e milhares de servidores virtuais
Desejam uma IU diferente, mas compartilham o código. Assim sendo, raramente acessados por equipes pequenas que usam aplicativos
aprimoram o aplicativo separando a IU do acesso ao website, específicos.
scripting, fazendo o cache pela implementação de uma versão simples Existem muitos cenários em que as soluções sistemáticas consomem
de modelo-visão-controlador (Figura 1(b)). Este aprimoramento aplicativos oportunistas. O Dave achará bem legal se o departamento
também permite a reutilização do código para acesso por meio de de TI utilizar um de seus aplicativos.
outros dispositivos como PDAs ou celulares (Figura 1(c)). Por fim,
Em resumo, os aplicativos oportunistas incentivam as soluções
decidem deslocar a camada do modelo para um servidor web de
sistemáticas e estas solidificam os aplicativos oportunistas (como o
departamento e implementam um aplicativo web simples. Esse
Representational State Transfer (REST) -> Web Services). Essas
procedimento permitirá que várias pessoas tenham acesso às
dinâmicas também movimentam o software como serviço ou mais
informações, por exemplo, os assistentes.
precisamente, software + serviços. O conceito de software + serviços
Os amigos construíram nessa oportunidade um aplicativo composto: oferece uma plataforma que une os desenvolvimentos de aplicativos
uma simples solução pseudo-EAI. Na medida em que programadores sistemático e oportunista com a distribuição.
qualificados são admitidos para integrar a força de trabalho, esses
aplicativos específicos e ocasionais serão cada vez mais comuns. Existe Software + serviços, e um barramento de serviços para a
o aspecto "legal" que dá destaque aos criadores e os aplicativos Internet
simplificarão as tarefas entediantes. Os profissionais também podem Barramento de serviço corporativo
construir aplicativos ocasionais para problemas de curta duração do Imagine o que acontece se a empresa aérea cancela o vôo de conexão
negócio como uma convenção. Os aplicativos desempenham funções do Dave, no trecho Dallas-São Francisco, enquanto ele faz o trecho
análogas às das planilhas, quando o usuário executa uma tarefa do Nova York-Dallas. Dave não conseguirá chegar em São Francisco e
negócio e acessa bancos de dados e aplicativos de base existentes. precisará passar a noite na cidade do aeroporto de conexão. Será
Aplicativos de situação oportunista terão efeito profundo sobre a preciso alterar todas as reservas: hotel, aluguel de carro e restaurante.
distribuição sistemática dos aplicativos corporativos. Um efeito Dave poderia usar o seu mashup para simplificar essas mudanças
acontecerá sobre o desenvolvimento do aplicativo corporativo. Os quando desembarcar. Seria ainda melhor ("mais legal") se fosse
aplicativos de situação podem "forçar" os aplicativos corporativos possível refazer a reserva automaticamente, durante o vôo. As
básicos ou utilizá-los de modos inesperados. Isso fará com que a empresas aéreas e os sites que monitoram vôos emitem “feeds” com
organização de TI transfira algumas das "camadas de modelo" para os atualizações dos horários de vôo. De modo ideal, o aplicativo do Dave
servidores corporativos, para aprimorar o desempenho e a estaria sempre sendo executado em algum lugar "da nuvem". O
integridade. Resumindo: os aplicativos de situação têm casos de uso aplicativo faria a monitoração dos “feeds” e usaria lógica simples para
definidos que podem conduzir a transformação sistemática do reagir a eventos e modificar o itinerários e os planos.
aplicativo corporativo. Os aplicativos de situação podem substituir Não é provável que um simples aplicativo de usuário final pudesse
modelos simples para documentar casos de uso e orientar a sempre ajustar o itinerário, mas a maioria dos ajustes é, muitas vezes,
modelagem formal. bastante simples. Dave só teria de interferir manualmente nos casos
Muitas pressões tratarão de transferir os aplicativos de situação, tanto complexos e poderia, também, aprovar as alterações feitas
quanto possível, para os servidores corporativos. Poderá haver automaticamente pelo seu aplicativo durante o vôo.
O cenário geral do aplicativo para ajustar o
Figura 1: Evolução do mashup itinerário é um tipo de problema comum nas
empresas. Problemas similares podem acontecer
A com ordens de compra e aprovação de contas de
C despesas, por exemplo. O cenário é um exemplo
de aplicativo composto que implementa um
padrão de processamento direto (STP - Straight-
Through-Processing) (vide Referências). As
empresas implementam uma abordagem
sistemática para resolver esses problemas. A
Figura 2 oferece uma visão geral de como seria o
aplicativo composto se a empresa aérea, o hotel,
D restaurante, a locadora e outros sistemas
B
"
seu site PHP pessoal dirigido a banco de dados;
Figura 4: Um barramento de serviços para a internet
"
portal de colaboração familiar por meio do http://www.twiki.org/;
"
presença em espaços como no Windows Live Spaces (http://home.
services.spaces.live.com/).
Don, amigo do Dave, pode inscrever-se com o componente de
identidade do ISB e criar uma ID de usuário don@foo.bar. Dave pode
Serviços de usar a IU web do componente da identidade para especificar quais
Conectividade Workflow
Identidade URIs ISB podem ser acessadas pelo Don. Dave também pode definir
grupos e conceder acesso aos grupos. Don pode ter acesso aos URIs
depois de estar conectado no ISB. O ISB simplifica o gerenciamento de
segurança do Dave porque ele pode manter um banco de dados
centralizado e, depois, autorizar o "ISB" a acessar sua página wiki e
outros recursos. O ISB protege os recursos atuais por meio do controle
de acesso dos URIs ISB que os antecedem. O ISB tem como benefício
um único espaço para que Dave defina e atualize identidades, grupos,
recursos e diretivas de acesso para todos os seus "serviços" na web.
Acabamos de descrever ações explícitas de usuário por meio de
fornecidos por outros sites. ISBs, empresas que hospedam web PHP e páginas da web. Outra abordagem bastante comum será a de ter
armazenamento como serviço, tipo S3 da Amazon, são exemplos de aplicativos nas extremidades que participem das APIs de Web Services
infra-estrutura de implementação de aplicativo de SaaS. Isso contrasta que utilizam o aplicativo composto para ter acesso ao ISB.
com Salesforce.com o qual, de início, era aplicativo SaaS comercial.
O componente da identidade também dará suporte às funções do STS
O conceito básico do ISB está construído ao redor do espaço URI (Security Token Service) do WS-Security, e fará a federação com outros
(Uniform Resource Identifier). A equipe de Dave que trabalha no STSs. Isso permite ao Dave gerenciar o acesso a identidades não
aplicativo registra e é "proprietária" do site URI registradas no ISB. Se foo.bar fosse uma empresa em que Dave confia
O ISB oferece uma função de identidade e acesso para controlar quais e se esta implementar um STS, Dave poderá definir diretivas de acesso
http://ISB.net/DaveAndTeam. URIs abaixo dessa raiz representam para identidades autenticadas em foo.bar.
pontos de integração do aplicativo e são similares a destinos nas filas Com o tempo, os ISBs oferecerão outras diretivas e implementações
do Java Messaging Service em middleware orientado a mensagem ou que podem ser aplicadas aos URIs. Os exemplos podem incluir WS-
tópicos em sistemas com o padrão publicação/assinatura. A equipe ReliableMessaging (troca confiável de mensagens em Web Services) ou
desenvolve um aplicativo ISB pela associação de diretiva e função com registro implícito de mensagens. O conceito é similar à associação de
URIs. O aplicativo composto é um conjunto de URIs, diretivas e diretivas de qualidade de serviço com conexões em middleware
funções. orientado a mensagem.
O ISB oferece uma função de identidade e acesso para controlar quais O ISB aproveita as capacidades de identidade e acesso para fornecer
mensagens podem ser enviadas a um URI e por quem. A função de "conectividade universal segura" aos aplicativos – mesmo para aqueles
identidade e acesso é um exemplo de associação de diretiva com um protegidos por firewalls. Isso inclui suporte para ampla gama de
URI. padrões e protocolos de conectividade. Entre os exemplos incluem-se
Como exemplo, Dave poderia escolher manter uma página wiki em HTTP orientado a REST, WS-* e padrões dirigidos a evento
um website público que mostrasse suas reservas de viagens. Ele encontrados em muitos aplicativos corporativos. Especificamente, o
desejará controlar o acesso à página wiki. Configurar e atualizar componente de conectividade do ISB oferece três funções básicas:
bancos de dados de autenticações e autorizações em seu website 1. Transmissão: possibilita a comunicação entre o ISB e os
pessoal pode ser entediante. O problema ficará mais complexo se aplicativos protegidos por firewalls. Existem muitas técnicas para
Dave tiver páginas e dados em vários websites, por exemplo: realizar esta capacidade (BizTalk Labs, vide Referências). A função
de transmissão elimina a necessidade de configurar conexões
Figura 5: Processamento de mensagem ISB sistemáticas em toda a empresa para cenários simples.
2. Protocolo: oferece um conjunto de protocolos comuns para a
XML HTML troca de mensagens, como WS-* ou REST. O ISB também fornece
E-mail
mapeamento de protocolo para conexão automática de
extremidades utilizando protocolos diferentes. Por exemplo, é
"LE-"
possível conectar um “feed” RSS a uma conexão de mensagens
XML
WS-*, sem necessidade de modificar nenhum dos aplicativos.
3. Funções: oferecem suporte para associar funções simples tipo
"OL" ESB ao URL. Entre os exemplos seria possível incluir distribuição
Cancela múltipla (multicast), WS-Eventing (eventos de Web Services), troca
HTTP POST de mensagens persistentes, etc.
A camada de conectividade opera no nível da infra-estrutura de 3. Converte a mensagem para o formato esperado pela locadora,
tecnologia. Simplifica o desenvolvimento da solução removendo a ou seja:
complexidade graças a vários "encanamentos", por exemplo, REST vs
a) e-mail em HTML para um provedor
WS-*. Os projetos que devem implementar a integração da infra-
estrutura neste nível incorrem em custo e risco significativos. O ISB b) HTTP POST para o segundo provedor
elimina esses problemas. Construir funções para processamento de mensagens pode ser
A camada de conectividade desconhece os elementos no nível do bastante simples. Muitos dos cenários de aplicativos comuns são
aplicativo e os formatos das mensagens. A construção de um instanciações simples de padrões e modelos. Um provedor de ISB
aplicativo composto exige adaptação entre formatos diferentes de oferecerá uma simples ferramenta de desenvolvimento de aplicativo
mensagens implementados pelos serviços conectados. Um exemplo baseada em web que permite aos programadores selecionar modelos
das funções do ISB poderia ser a conversão de parâmetros de um de atividade e definir parâmetros de configuração por meio de um
comando HTTP GET em elementos de uma mensagem XML. O ISB formulário web. No caso do roteamento, o formulário web permitiria
oferece um workflow simples (coreografia do serviço) que fornece ao programador especificar o campo da mensagem para roteamento e
suporte para mapeamento no nível do aplicativo (Figura 5). os valores da respectiva tabela. Com o tempo, os ISBs oferecerão
O ISB oferece um conjunto de "atividades-modelo" para funções ferramentas mais poderosas, como as ferramentas de processamento
simples. Um workflow é um gráfico composto de modelos de atividade de mensagens do BizTalk. O processamento de mensagens
de instanciação. Suponha que a empresa aérea emita status de vôos por (roteamento, conversão, etc.) é suficientemente robusto para muitos
meio de um feed RSS e parte do aplicativo do Dave espera receber cenários de aplicativos. Contudo, para outros cenários, é preciso ter
notificações das atualizações pelo WS-Eventing. A camada de seqüenciamento simples e fluxo de controle. Imagine a tarefa de fazer
conectividade é compatível com a integração de RSS e WS-*. Ainda é uma reserva de hotel em Dallas quando Dave estiver atrasado. Uma
necessário converter a carga da mensagem do formato RSS para o descrição simples do processo poderia ser:
formato de evento XML esperado pelo aplicativo do Dave. Em geral, o
ISB oferecerá um modelo de atividade configurável e reutilizável para o “SOFTWARE COMO SERVIÇO" TOTAL É UM MITO.
mapeamento RSS para XML. TODAS AS SOLUÇÕES SAAS REPRESENTATIVAS
Outro modelo de atividade comum será o roteamento baseado em INCLUIRÃO, EM ALGUM MOMENTO, UM ITEM DE
seleção. O aplicativo do Dave pode emitir uma mensagem de SOFTWARE INSTALADO NO LOCAL: UM HÍBRIDO.
cancelamento: cancel car reservation ID=1234. Se os códigos de reserva
de uma locadora de autos começam com "LE-" e os de outra com "OL",
QUASE TODOS OS CENÁRIOS QUE UTILIZAM ISB
o aplicativo do Dave pode enviar eventos de cancelamento para um E SAAS SÃO, NA VERDADE, HÍBRIDOS DE
único URI ISB. A seguir, o seletor processa a mensagem roteando-a para SOFTWARE INSTALADOS NO LOCAL E
a extremidade correta.
EXTERNAMENTE. SOFTWARE + SERVIÇOS É O
Combinar atividades de processamentos de mensagens mais TERMO PARA O MODELO HÍBRIDO".
complexos pode ser útil e será uma função comum dos ISBs. Como
exemplo, a Figura 6 apresenta as atividades do URL que Dave define 1. Enviar um pedido de reserva para a cadeia de hotel AAA
para recebimento da mensagem de cancelamento da reserva do carro: 2. Receber uma resposta.
1. Recebe a mensagem de cancelamento em XML utilizando WS-*. 3. Se bem-sucedido, sair
2. Possui uma atividade que extrai o elemento de ID da reserva e 4. Enviar um pedido de reserva para a cadeia de hotel BBB
consulta o prefixo em uma tabela.
5. Se bem-sucedido … …
Transform
Inform
Car
Terceiros farão a conexão de serviços de valor agregado ao
Service
Feed
Feed
Inform
Receive
Receive
Filter
Transform
Filter
Transform
Feed
Cancel
Inform
Car
Service
New
Hotel
Reservation
Success
ISB. O primeiro tipo serão os serviços de infra-estrutura como
Transform Car Inform
Service New
Transform New
Car
Empresas que implantam aplicativos no ISB desejarão definir contratos A comunidade é um importante aspecto da Web 2.0. Pode ser, na
de nível de serviço (SLAs) especificando tempo de resposta, taxa de verdade, o aspecto mais importante. Os serviços de infra-estrutura,
transferência, disponibilidade, etc. O SLA determinará o custo cobrado blocos básicos de construção de aplicativos e modelos de solução
pelo provedor de ISB. O problema geral de se executar SLAs para também surgirão em meio a uma comunidade associada com ISBs,
aplicativos arbitrários é enorme. Contudo a tarefa do ISB é mais que oferece e compartilha código. A comunidade também
simples, pois não implanta código de usuário arbitrário. Instanciar e proporciona um fórum de suporte de auto-atendimento e estabelece
configurar modelos pré-construídos para atividades de diretiva, o renome de provedores de "software como serviço".
publicação/assinatura e workflow, por exemplo, restringem os Software + serviços
aplicativos. Isso simplifica executar SLAs, custo previsível e integridade.
"Software como serviço" total é um mito. Todas as soluções SaaS
Uma arquitetura de referência de software + serviços para representativas incluirão, em algum momento, um item de software
aplicativos oportunistas litantes. instalado no local: um híbrido. Alguns elementos de uma solução
A Figura 7 apresenta uma visão geral de extremo alto nível sobre instanciada residirão no barramento (workflows, por exemplo); outros,
como se juntam as peças deste artigo. Primeiramente, o barramento em serviços conectados ao barramento (como um sistema de
de serviços para a Internet é universal e faz a conexão de todos os gerenciamento de conteúdo XML) e alguns serão "instalados" no local.
sistemas e servidores. Haverá muitos aplicativos compostos nos quais
Quase todos os cenários que utilizam ISB e SAAS são, na verdade,
alguns elementos estão no "ESB" e outros, no ISB. Aplicativos
híbridos de software instalados no local e externamente.
compostos multiorganizacionais são um exemplo óbvio que
implantaria elementos em um ISB na "nuvem". Outra possibilidade são Em outro exemplo, imagine um provedor de armazenamento de
os aplicativos compostos uniorganizacionais, de curta duração. Por dados usado por Dave para armazenar os itinerários do seu aplicativo.
exemplo, um aplicativo composto que a empresa utiliza para Ler/atualizar o itinerário sempre por acesso remoto fragiliza o
administrar uma conferência interna. Reutilizar uma plataforma de processo. Provavelmente, o fornecedor de armazenamento fornecerá
software pré-configurada e instalada na "nuvem" pode ser mais um pacote de software instalado no local e no PC para otimizar o
eficiente do que adquirir, instalar, configurar e dar suporte a itens de acesso aos dados por meio de cache, replicação, controle de versões,
hardware e software para executar o aplicativo internamente. etc. Software + serviços é o termo para o modelo híbrido.
AJ: Na medida em que esses padrões surgem ou os frameworks programar na década de 1960 e, nesse tempo, havia um modelo de
são disponibilizados, na sua opinião, qual a diferença da visão programa na cabeça da gente. Começava com o comando main e a
software + serviços dos consumidores em relação à visão das partir daí você escrevia. Em dado momento, o comando passou a ser
corporações? WinMain e transformou-se mais em um modelo baseado em evento.
O novo modelo de programação começa quando você pensa em um
RO: Essa é uma boa pergunta. Não tenho certeza de que os padrões
modelo declarativo, iniciando com XAML e uma tela para construir o
sejam todos assim tão diferentes, exceto a única coisa na empresa que
seu aplicativo nessa base.
não existe no espaço do consumidor: o servidor corporativo. Se você
estiver na empresa e construir sistemas para seus clientes, será igual a "NESTE MOMENTO, REFATORAR O SEU
construir sistemas para consumidores. Se estiver construindo para
APLICATIVO PARA UMA EXPANSÃO HORIZONTAL
funcionários, haverá mais problemas de integração de sistemas.
Provavelmente você desejará construir soluções com algum tipo de E NÃO VERTICAL, FAZENDO-O TAMBÉM
afinidade com outro servidor local, na mesma geografia, e localizar EXTENSÍVEL EM TERMOS DE ESCOPO MUITO
esses servidores com base em padrões de acesso a dados pode ser LARGO OU ESTREITO É, PROVAVELMENTE, O
bastante significativo. Mas, com o tempo, cada vez mais vejo empresas
MAIS INTERESSANTE".
adotarem a prestação de serviços; inicialmente para infra-estrutura
como serviços de e-mail e outros de nível básico, antes de passar para Este novo modelo é diferente: a gente começa fazendo o protótipo
os aplicativos corporativos. com ele, sem imaginar o poder e o nível de produtividade que se
adquire assim que adotar esta nova forma de pensar. A prototipagem
AJ: Na medida em que os leitores pensam mais sobre adotar o
o leva para uma nova perspectiva em que se começa a pensar...
modelo software + serviços, onde devem começar hoje? E como
"Nossa"! Agora entendo como pude construir algo em Silverlight e
saberão que serão bem-sucedidos?
implantá-lo rapidamente em todos os sistemas com um navegador".
RO: Vou começar pela última. Se estiverem tentando alcançar metas e Seguir essa abordagem será muito mais fácil do que descobrir como
objetivos, serão bem-sucedidos. Agora, quanto a onde começar, no escrever em JavaScript para os vários tipos de navegadores.
meu ponto de vista, recomendaria tornar-se extremamente fluente em
AJ: Você mencionou uma relação entre designers e
tecnologias, tanto da perspectiva de desenvolvedor como de designer.
Para a plataforma Microsoft, isso significa entender de Expression desenvolvedores. Historicamente, eu diria que esses profissionais
Studio e Visual Studio. Depois, continue, explore e faça protótipos de não se comunicaram tão bem quanto deveriam. Você vê
coisas em WPF (Windows Presentation Foundation) no Vista: é uma mudanças nesse comportamento com essa nova onda
ferramenta surpreendentemente robusta. Como você sabe, comecei a tecnológica?
Ray Ozzie
Arquiteto-chefe de estratégia (CSA), Microsoft Corporation
Ray Ozzie, visionário do setor e esteve envolvido com o desenvolvimento dos primeiros sistemas
pioneiro no trabalho cooperativo operacionais distribuídos da Data General Corp.
apoiado por computador, é
Ray formou-se em ciência da computação pela University of Illinois,
arquiteto-chefe de software da
Urbana-Champaign, e lá conheceu a natureza e o significado dos
Microsoft. Ray assumiu o cargo de
sistemas colaborativos e o trabalho em equipe apoiado por
arquiteto-chefe de software em
computador durante o trabalho desenvolvido no projeto
junho de 2006, quando o
Ray Ozzie embrionário da universidade denominado PLATO. Esse trabalho teve
presidente Bill Gates anunciou seu
desejo de abdicar de suas grande influência na sua visão dos sistemas colaborativos e nos
responsabilidades diárias na Microsoft até julho de 2008. No seu projetos que assumiu em toda a sua carreira. Ao final do curso, teve
cargo de CSA, Ray é responsável pela supervisão da estratégia a honra de ser reconhecido como um dos melhores alunos da
técnica e a arquitetura de produtos da empresa. Ray também escola.
supervisiona o desenvolvimento da próxima geração de plataformas Reconhecido também como um dos sete "Pioneiros do Windows",
de serviços de software da empresa. Ray foi nomeado "Pessoa do ano" em 1995 pela PC Magazine, e foi
Anteriormente, de abril de 2005 a junho de 2006, Ray era executivo conduzido ao Hall da Fama do Computer Museum Industry e ao
de infra-estrutura da área de tecnologia (CTO – Chief Technology Hall da Fama do InfoWorld. Em novembro de 2000 ele recebeu o
Officer). Assumiu o seu cargo em abril de 2005, depois que a prêmio W. Wallace McDowell do Institute for Electrical and
Microsoft adquiriu a Groove Networks, uma empresa de software Electronics Engineers (IEEE) Computer Society e, em 2001, foi
colaborativo de próxima geração fundada por ele em 1997. considerado um pioneiro em tecnologia do World Economic Forum.
Antes da Groove, Ray fundou e era presidente da Iris Associates, Atuou como membro do Computer Science and
empresa na qual criou e liderou o desenvolvimento do Lotus Notes. Telecommunications Board do Nacional Research Council e fez parte
Antes disso, contribuiu para o desenvolvimento do Lotus Symphony do comitê do NRC, que produziu o memorável relatório CRISIS
e dos produtos TK!Solver e VisiCalc da Software Arts; além disso, sobre o impacto social da criptografia.
RO: Em qualquer solução efetiva que tenha um elemento de projeto, EQUILÍBRIO CERTO DO ENFOQUE SOBRE
ambos precisarão encontrar uma forma de entender-se. Não há nada
TENDÊNCIAS INTERNAS E EXTERNAS QUE LHE
que a Microsoft possa fazer para mudar o DNA, ou seja, o tipo de
pessoa que é um designer ou um desenvolvedor. DARÃO A PERSPECTIVA QUE PRECISA".
O que eu tenho observado é que desenvolvedores e designers se AJ: Você está no setor de software há mais de 25 anos e,
esforçam de formas diferentes. Alguns designers podem se aprofundar nitidamente, é uma apaixonado por software e tecnologia. O que
no entendimento dos desafios enfrentados pelos desenvolvedores. E mantém a constante motivação? O que o motiva a se levantar
alguns desenvolvedores podem entender mais efetivamente os pela manhã?
desafios enfrentados pelos designers. Ter ferramentas onde há
RO: Gosto de resolver problemas. Gosto do que é complexo e de
sobreposição, onde não existe uma fronteira absoluta entre uma
tecnologia. Tenho tido sorte porque logo no início da minha carreira
ferramenta de programação e outra, de desenvolvimento, é
extremamente importante e útil. O núcleo do Microsoft Expression tive a oportunidade de trabalhar em sistemas implantados em larga
está realmente orientado para o designer. O trabalho realizado pelos escala. Assim, de certa forma, sou um escravo do pensamento de
programadores traduz-se em XAML, o qual pode ser importado e causar um grande impacto nas coisas que fazemos. Cada indivíduo
usado no Visual Studio por um desenvolvedor. Estou entusiasmado e acorda pela manhã com diferentes motivações. Para mim, trata-se de
otimista sobre como ferramentas como essa unirão desenvolvedores e ser um construtor. Gosto de resolver problemas que possam
designers resultando em benefício para o usuário. influenciar positivamente as vidas das pessoas.
AJ: Atualmente, temos vários leitores do The Architecture Journal AJ: Imagino que para fazer isso você deve ter um grande cabedal
ocupando cargos de desenvolvedores que aspiram tornar-se em várias tecnologias. Posto isso, e considerando as equipes de
arquitetos de software. Tendo em conta as suas produto com as quais interage diariamente, como você se
responsabilidades, como é o dia na vida de um arquiteto-chefe mantém atualizado?
de software da Microsoft? RO: É realmente uma combinação interessante. A coisa mais fácil e
RO: No meu ponto de vista, a profissão de arquiteto trata de natural é simplesmente falar com as pessoas na sua área de influência
compatibilizar padrões. Refere-se a estar exposto a ferramentas e e entrar em contato com várias tecnologias, como parte do seu
técnicas do ramo suficientes para que, com o tempo, você comece a trabalho. Mas, para ter sucesso a longo prazo, é preciso estar em
desenvolver um conjunto de padrões diferentes que trabalham em contato com as tendências e com o que está acontecendo
diferentes situações. Isso é válido para a arquitetura de software e, externamente, especialmente saber o que os clientes ou cada um dos
provavelmente, também para outros tipos de arquitetura. Quer você usuários está dizendo e fazendo.
construa pontes ou projete edifícios, está tentando aplicar padrões a Dedico boa parte do meu tempo à leitura de blogs, acompanhando
uma determinada situação. influenciadores específicos cujas opiniões são muito interessantes,
O meu cargo na Microsoft é interessante porque existem arquitetos de tanto as relacionadas aos nossos produtos como aquelas totalmente
peso nos diferentes grupos de produtos, nas várias divisões da dissociadas.
empresa e eles estão realizando um ótimo trabalho com os seus Compareço a uma combinação de conferências que denomino
produtos. O meu papel é essencialmente relacional. Quero dizer, devo "cabeça" e "cauda". Durante o ano, participo de algumas em que se
entender como os clientes estão utilizando os vários produtos juntos reúnem os influenciadores conhecidos do setor. Essas me permitem
e, depois, me pergunto quais os padrões que vejo. Qual é a menor rastrear as principais questões da concorrência ou, no mínimo,
coisa possível que eu poderia sugerir para uma equipe de produto, conhecer as apresentações do que os concorrentes estão falando e
para que pudesse refazer a arquitetura do produto para minimizar os
fazendo. Mas, eu também aprecio as conferências de cauda, onde é
pontos de contato com outros produtos? Ou, por uma perspectiva do
possível ter uma noção mais próxima do que realmente está
negócio, qual a menor coisa possível que seria possível passar para
acontecendo. Gosto de encontrar pessoas recém-formadas, que têm
esses produtos para agregar valor para os nossos clientes e criar uma
idéias e entendem os tipos de escolhas tecnológicas que fazem e por
vantagem competitiva para as nossas soluções no mercado. No nível
quê. No nível mais alto, meu conselho ao arquiteto aspirante é
mais alto, meu conselho aos arquitetos aspirantes é o seguinte: pense
descobrir o equilíbrio certo do enfoque sobre tendências internas e
duas vezes. É preciso passar um tempo como programador para
externas que lhe darão a perspectiva que precisa.
entender os vários padrões existentes e reconhecer os atributos de
sistemas bem arquitetados para, então, passar para o próximo nível de AJ: Esse é, sem dúvida, um ótimo conselho. Em relação a isso, na
abstração das soluções que você estiver construindo. sua opinião, quais são as características que definem um
AJ: Parece, então, que a habilidade de compatibilizar padrões arquiteto de software eficiente?
deve realmente passar pela experiência? RO: Os arquitetos mais eficientes com os quais já trabalhei são aqueles
RO: Totalmente. Trata-se especialmente das coisas que ninguém gosta que cumpriram suas obrigações. São aqueles que passaram muito
de pensar no nível arquitetural. Por exemplo, características de tempo nas "trincheiras" construindo e depurando sistemas bastante
desempenho, E/S, confiabilidade... Você pode ter tido experiência com complexos. Aprende-se muitas coisas consertando os defeitos das
um sistema que trabalha bem, frente a determinado nível de outras pessoas. Quando alguma coisa falha e o responsável já saiu da
complexidade, mas se utilizado em um ambiente mais dinâmico empresa, é possível aprender muito fazendo engenharia reversa ou
poderia apresentar-se muito frágil. Isso só se aprende com a estudando a documentação. Quanto mais sistemas você puder
experiência. conhecer pelo lado de dentro, mais será possível desenvolver e
entender o que são boas e más práticas em padrões de programação.
"NO NÍVEL MAIS ALTO, MEU CONSELHO AO Como disse antes, é essa biblioteca de padrões da sua mente que o
ARQUITETO ASPIRANTE É DESCOBRIR O definirá como um arquiteto.
web. Este artigo explora a mudança dos modernos Neste artigo, tratarei dos aspectos arquiteturais que sofrem o impacto
das abordagens modernas do desenvolvimento de aplicativos
aplicativos e serviços web centralizados e o papel que o
preparados para web, com enfoque em como os serviços de dados se
Astoria pode desempenhar nessas novas arquiteturas. integram no quadro.
Figura 1: Fluxo de conteúdo tradicional (à esquerda) e como o fluxo se modifica nos aplicativos web modernos (á direita)
Dados
010
1
010 01
1
101 00
Servidor Web 1
101
011
0 Servidor Web
0 10
Cliente Cliente
Apresentação + Apresentação
dados (por (por exemplo, HTML)
exemplo, HTML
com dados
incorporados)
Servidor de Servidor de
banco de dados banco de dados
Curiosamente, este novo ciclo de tecnologias está agindo como uma As etapas detalhadas para a criação de serviços de dados Astoria,
função de força para transferir a organização do aplicativo na direção assim como farta documentação sobre o URI Astoria e os formatos de
de uma meta comum em muitas arquiteturas de aplicativos: separação carga podem ser encontrados no documento “Using Microsoft
rígida entre dados e apresentação. Codename Astoria”, disponível no website Astoria no endereço
Pela perspectiva do servidor, apresentar os elementos da IU é http://astoria.mslivelabs.com.
relativamente fácil. Na maioria das vezes, são simples recursos de Depois que o serviço estiver ativo e operacional, os URIs poderão ser
arquivo no servidor, como arquivos HTML ou CSS e arquivos de mídia. utilizados para examinar os recursos expostos pela interface de dados.
Apresentar os dados é outra história. Até agora, a interação com Os exemplos a seguir utilizam o serviço experimental do Astoria on-
dados era algo que acontecia entre o servidor web e o servidor do line que hospeda alguns serviços de dados read-only. Por exemplo:
banco de dados; não havia necessidade de expor pontos de entrada http://astoria.sandbox.live.com/northwind/northwind.rs
acessíveis do código, executado em toda a web, em um navegador e/Customers
web ou algum outro agente de software. É neste ponto que entra o retornaria todos os recursos do container recurso de clientes. No
projeto Astoria. formato XML-padrão, teria esta aparência:
Interfaces de dados flexíveis
<DataService xml:base=”http://astoria.sandbox.live.
Há várias formas de expor dados aos clientes que os consumirão pela com/northwind/northwind.rse”>
web. Uma abordagem, possibilitada pelas tecnologias existentes, é <Customers>
usar uma conduta similar à chamada de procedimento remoto (RPC - <Customer uri=”Customers[ALFKI]”>
<CustomerID>ALFKI</CustomerID>
Remote Procedure Call): as funções são expostas por meio da interface
<CompanyName>Alfreds Futterkiste</CompanyName>
como os Web Services (por exemplo, interface baseada no protocolo <ContactName>Maria Anders</ContactName>
SOAP ou uma convenção simples baseada em UTI para chamar <ContactTitle>Sales Representative</ContactTitle>
métodos e parâmetros de transferência). O Microsoft Visual Studio <Address>Obere Str. 57</Address>
oferece um conjunto de ferramentas comprovado, que facilita criar e <City>Berlin</City>
<Region />
consumir interfaces construídas dessa forma. O conjunto de
<PostalCode>12209</PostalCode>
ferramentas do ASP.NET AJAX leva isso para o próximo nível, <Country>Germany</Country>
permitindo que Web Services criados com o Visual Studio trabalhem <Phone>030-0074321</Phone>
com clientes AJAX. <Fax>030-0076545</Fax>
<Orders href=”Customers[ALFKI]/Orders” />
O principal problema desta abordagem é a flexibilidade. Se a interação
</Customer>
com dados acontece apenas por meio de pontos de entrada fixos e <Customer uri=”Customers[ANATR]”>
predefinidos, qualquer cenário novo ou variação dos existentes, com ...properties
dados pouco diferentes, exigirá, tipicamente, a criação de novos
</Customer>
pontos de entrada. Ainda que este nível de controle seja conveniente ...more customer entries
em determinadas ocasiões, na maioria dos casos, maior flexibilidade </Customers>
aumentará a produtividade do desenvolvimento e contribuirá para um </DataService>
aplicativo mais dinâmico.
Pode-se também apontar para uma entidade específica utilizando
O projeto Astoria apresenta uma alternativa à abordagem RPC,
estas chaves:
baseada na semântica simples do HTTP. O Astoria adota uma definição
http://astoria.sandbox.live.com/northwind/northwind.rs
de esquema que descreve cada uma das entidades com as quais o seu
e/Customers[ALFKI]
aplicativo lida, mais as associações entre entidades expondo-as sobre
retornaria um recurso de cliente específico; novamente, utilizando o
uma interface HTTP. Cada entidade pode ser endereçável com um
formato XML no exemplo:
identificador de recurso uniforme (URI - Uniform Resource Identifier) e
a convenção do URI permite aos aplicativos atravessar as associações <DataService xml:base=”http://astoria.sandbox.live.
entre entidades, pesquisar entidades e executar outras operações com/northwind/northwind.rse”>
normalmente exigidas com dados. <Customers>
<Customer uri=”Customers[ALFKI]”>
A definição do esquema utilizado pelo Astoria é o esquema de <CustomerID>ALFKI</CustomerID>
modelo de dados de entidades (EMD - Entity Data Model), <CompanyName>Alfreds Futterkiste</CompanyName>
diretamente compatível com o ADO.NET Entity Framework. O Entity <ContactName>Maria Anders</ContactName>
Framework também inclui um robusto mecanismo de mapeamento <ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
que permite aos desenvolvedores mapear o esquema EDM em um
<City>Berlin</City>
banco de dados relacional para o armazenamento efetivo. <Region />
Para demonstrar a interação com os serviços do Astoria, utilizarei um <PostalCode>12209</PostalCode>
exemplo com base no conhecido banco de dados Northwind. É <Country>Germany</Country>
possível configurar um serviço de dados sobre o Northwind criando <Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
um aplicativo ASP.NET, importando o esquema Northwind do banco <Orders href=”Customers[ALFKI]/Orders” />
de dados em um esquema EDM, por meio do assistente ADM e,
</Customer>
depois, criar um serviço de dados Astoria voltado para aquele </Customers>
esquema EDM. </DataService>
Se o URI apontar para um recurso específico, como o que acabamos inclui um URI que representa o seu local canônico (no atributo do URI
de discutir, é possível não apenas recuperar o recurso utilizando um do elemento "Customer" acima).
comando HTTP GET, mas também atualizá-lo, utilizando HTTP PUT, ou Interação com dados da camada de apresentação
excluí-lo utilizando HTTP DELETE.
Existem várias opções para interação com fontes de dados da camada
Como a descrição do esquema fornecido ao Astoria inclui associações
de apresentação. O primeiro aspecto que definirá o escopo das
entre as entidades, estas podem também ser aproveitadas na interface
opções disponíveis para um determinado cenário é a natureza do
HTTP. Continuando com o exemplo, se cada recurso de cliente estiver
cliente (por exemplo, navegador vs cliente rico).
associado a um conjunto de recursos de pedidos, o seguinte URI
representará o conjunto de pedidos relacionado a um determinado Como a interface do Astoria é apenas HTTP puro, quase todos os
cliente: ambientes com biblioteca de cliente em HTTP podem ser utilizados
para consumir serviços de dados. A interface foi especificamente
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[ALFKI]/Orders projetada para ser fácil de usar no nível HTTP; os padrões de URI são
simples e legíveis por humanos e os formatos de carga usam JSON ou
Além de ser capaz de apontar para recursos específicos e listar os um subconjunto de XML que o mantém direto e simples.
recursos de um container, também é possível filtrar, ordenar e paginar Para aplicativos .NET, o conjunto de ferramentas Astoria inclui uma
os dados para facilitar a criação de IUs sobre o serviço de dados. Por biblioteca de cliente executável no ambiente do .NET Framework e
exemplo, para listar todos os recursos de clientes da cidade de
apresenta resultados provenientes dos serviços Astoria como objetos
Londres, ordenados pelo nome do contato, o aplicativo pode usar este
.NET; não apenas é o mais fácil para os desenvolvedores, para uso no
URI:
âmbito da base de códigos do aplicativo cliente, mas também se
http://astoria.sandbox.live.com/northwind/northwind.rs integra bem com componentes que já operam sobre objetos .NET
e/Customers[City eq 'London']?$orderby=ContactName normais. A biblioteca oferece serviços ricos como gerenciamento de
gráfico, rastreamento de modificações e tratamento de atualizações.
O formato real do URI do Astoria ainda pode estar sujeito a mudanças,
(Vide Exemplo 1.)
mas a semântica e as capacidades devem permanecer relativamente
estáveis. A biblioteca de cliente do Astoria é executável tanto no .NET
Framework como no Microsoft Silverlight. Isso permite a criação de
Em qualquer dos casos, os dados são trocados em formatos simples
como XML ou JSON. O formato real pode ser controlado pelo cliente- aplicativos de desktop e baseados no Silverlight utilizando a mesma
agente utilizando negociação do tipo de conteúdo HTTP normal. Os API, por simples referência ao respectivo conjunto Astoria no
dados são codificados como recursos que simplesmente mapeiam ambiente de destino.
propriedades de entidades EDM em elementos XML ou propriedades
JSON, as quais estão vinculadas por hyperlinks a outros recursos com Exemplo 1: Acessar um serviço Astoria do código .NET utilizando a
os quais estão associadas. Por exemplo, o URI do exemplo anterior: biblioteca de cliente do Astoria
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[ALFKI]
WebDataContext ctx = new WebDataContext(
resultaria na seguinte resposta (em XML): “http://astoria.sandbox.live.com/
Northwind/Northwind.rse”);
<DataService xml:base=”http://astoria.sandbox.live.
WebDataQuery<Customer> customers = ctx.
com/northwind/northwind.rse”>
CreateQuery<Customer>(“/Customers?$orderby=CompanyNa
<Customers>
me”);
<Customer uri=”Customers[ALFKI]”>
foreach(Customer c in customers) {
<CustomerID>ALFKI</CustomerID>
Console.WriteLine(c.CompanyName);
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
}
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
<City>Berlin</City>
<Region />
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
<Orders href=”Customers[ALFKI]/Orders” />
</Customer>
</Customers>
</DataService>
Exemplo 2: Acessar um serviço Astoria de um aplicativo AJAX (o Exemplo 3: Utilizar a API assíncrona no cliente Astoria para .NET
exemplo usa a biblioteca ASP.NET AJAX)
WebDataContext ctx = new WebDataContext(
function ListCustomers() { “http://astoria.sandbox.
live.com/Northwind/Northwind.rse”);
var req = new Sys.Net.WebRequest();
req.set_url(“Northwind.svc/Customers?$orderby=Co WebDataQuery<Customer> q = ctx.
mpanyName”); CreateQuery<Customer>(“/Customers[City eq 'London']”);
req.get_headers()[“Accept”] = “application/json”;
req.add_completed(onCustomersCompleted); q.BeginExecute(
req.invoke(); delegate(IAsyncResult ar)
{
} foreach (Customer c in q.EndExecute(ar)){
// process each customer
function onCustomersCompleted(response) { }
if(response.get_statusCode() != 200) },
alert(“Error retrieving customers: “ + null);
response.get_responseData());
Para tratar do requisito que permite a introdução da lógica do
else {
var res = response.get_object(); negócio, rigidamente vinculada a determinadas peças de dados, o
var html = “<ul>”; Astoria é compatível com dois mecanismos de personalização:
for(var i = 0; i < res.length; i++) { operações e interceptores de serviço.
html += “<li>” +
res[i].CompanyName + “</
O serviço padrão do Astoria consiste inteiramente em containers de
li>”; recursos localizados nos pontos de entrada do gráfico de recursos
como, por exemplo, /Customers (clientes) ou / Products (produtos).
} Além desses, os desenvolvedores podem definir as operações de
html += “</ul>”; serviço que encapsulam a lógica do negócio e as consultas. Por
exemplo, em um determinado aplicativo, talvez não se queira listar
// “Customers” is a DIV element defined in
the HTML document todos os clientes; em lugar disso, o aplicativo poderia oferecer um
$get(“Customers”).innerHTML = html; ponto de entrada para listar os "meus clientes" e, ainda assim, poderia
} haver um requisito em que os usuários pudessem recuperar, de cada
} vez, os clientes de uma determinada cidade. O desenvolvedor pode
No caso dos aplicativos web estilo AJAX, a maioria dos frameworks definir uma operação de serviço "MyCustomersByCity" (meus clientes
AJAX inclui invólucros fácil de usar para acesso de HTTP para recursos por cidade), que obtém a identidade dos usuários do contexto (da
externos. Esses invólucros são até compatíveis com a materialização da propriedade ASP.NET's HttpContext.User, por exemplo), e depois
resposta em objetos JavaScript se você indicar que a resposta será formular uma consulta que fatore a identidade do usuário e o nome
dada no formato JSON. (Vide Exemplo 2.) da cidade, transferida como um argumento. Por exemplo:
Independentemente do tipo, os aplicativos serão executados em [WebGet]
ambientes com latência relativamente alta entre o cliente e o serviço public static IQueryable<Customer> CustomersByCity(No
de dados, portanto o uso de técnicas típicas de execução assíncrona rthwindEntities db, string city)
{
deverá ser a norma. A API cliente tem suporte incorporado para
execução de requisição assíncrona. Para o caso de aplicativos AJAX, a if (city == null || city.Length < 3) throw new
interface XMLHTTP, com a maioria dos invólucros, oferece suporte Exception(“bad city”);
para requisições de envio de modo assíncrono. (Vide Exemplo 3.)
var q = db.Customers.Where(“it.City = @city”,
Introdução à lógica do negócio new
ObjectParameter(“city”, city));
Com o Astoria, basta que o desenvolvedor aponte para um banco de
dados ou esquema EDM pré-construído para que uma visão HTTP seja
// add user-based filter condition to q
automaticamente gerada. Embora isso seja ótimo para as iterações
iniciais de um aplicativo, essa interface totalmente aberta quase nunca
return q;
será adequada à produção de aplicativos.
}
Em muitos bancos de dados, existe uma divisão relativamente clara
entre os dois tipos de dados (quase sempre, dois tipos de tabelas): há seria então invocável (callable) com um URI seguindo este padrão:
uma parte dos dados com suficiente semântica implícita em si (isto é /MyCustomersByCity?city=Seattle
válido para conceitos mais simples como a "categoria de produto").
Nesses casos, a lógica do negócio (em geral magra ou inexistente) e a Um recurso interessante do Astoria é que as operações de serviço
interface direta para os dados é o quanto basta. A outra parte dos podem optar por retornar uma consulta em lugar dos resultados reais,
dados só faz sentido com alguma lógica do negócio à volta dela; por como apresentado no exemplo anterior. Quando o objeto da consulta
exemplo, os dados apresentados precisam ficar restritos com base no retorna, o restante do padrão URI ainda pode ser usado; assim, por
contexto, ou as modificações precisam transferir validações externas exemplo, o cliente ainda poderia acrescentar uma opção "orderby"
(pedido por) ao URI.
ou, ainda, quando um determinado valor é alterado, outro efeito
colateral precisa acontecer, e assim por diante. /MyCustomersByCity?city=Seattle&$orderby=CompanyName
THE ARCHITECTURE JOURNAL • Journal 13 • www.architecturejournal.net 15
Projeto Astoria
A operação de serviço também pode conter código para realizar repositórios de dados especializados ao uso de bibliotecas de acesso
validações, atividade de registro ou qualquer outra necessidade. Tal baseadas em LINQ para serviços online (por exemplo, existem
condição oferece um bom meio termo entre o RPC rígido, que implementações informais do LINQ para a Amazon e LINQ para o
dificulta a construção de IUs flexíveis e as interfaces de dados Flickr que fornecem capacidades limitadas de consulta àqueles sites
totalmente abertas, que não permitem controlar os dados que fluem da Internet).
pelo sistema.
Cenários de implantação: aplicações e serviços
Nos cenários para os quais se deseja preservar a interface centrada em Hoje, um aplicativo web típico, dirigido a dados, terá o seu próprio
recursos, os interceptores podem ser usados. Um interceptor é um banco de dados além de um ou mais servidores web. Para aplicativos
método invocado sempre que uma determinada ação acontece em corporativos, esses servidores fazem parte da infra-estrutura de TI e
um recurso no âmbito de um dado container de recursos. Por para aplicativos hospedados em ISPs, a maioria destes oferece serviços
exemplo, um desenvolvedor poderia registrar um interceptor para ser de banco de dados.
invocado sempre que houver mudança (POST/PUT/DELETE) no
Seguindo o mesmo pensamento, espera-se que muitos aplicativos
container de recursos dos produtos ("Products"). O interceptor pode
que usem o Astoria como o seu serviço de dados, construídos com
desempenhar validações, modificar valores e até escolher abortar a
base no AJAX ou Silverlight, ainda assim tenham banco de dados
requisição.
próprio. Nesses cenários, o serviço de dados do Astoria pode fazer
Extensibilidade e fontes de dados alternativas parte do próprio aplicativo web e, assim, serão implantados com os
Até o momento, falei do Astoria no contexto do EDM e do ADO.NET demais componentes do aplicativo. Este é um dos cenários que temos
Entity Framework. Utilizar o Astoria para revelar dados em um banco com alvo para o Astoria, mas não é o único que pretendemos.
de dados é, sem dúvida, a melhor opção; entretanto, nem todos os O Astoria como tecnologia para construir serviços de dados para o
dados estão em um banco de dados. consumo de outros sistemas é outra forma de considerá-lo. Os
Na primeira CTP (Community Technology Preview) pública do Astoria, provedores de dados podem configurar servidores Astoria com os
tínhamos nos voltado apenas para o Entity Framework. Na medida em quais outros aplicativos podem interagir, consumindo e atualizando
que fazemos iterações do design do produto, estamos mudando isso dados, conforme necessário e permitido pelas diretivas de segurança.
para oferecer mais opções. Especificamente, para criar cenários onde O provedor de dados pode ser o mesmo proprietário do aplicativo
se deseja expor fontes de dados, não bancos de dados, o suporte será que consome os dados ou pode ser um serviço consumível por
dado utilizando qualquer fonte de dados preparados para LINQ, a terceiros.
serem expostos por meio da interface HTTP. Ainda mais uma forma de considerar o Astoria é como um serviço de
LINQ define uma interface geral denominada IQueryable: permite aos uso geral para armazenamento de dados. Para explorar essa idéia,
consumidores compor consultas de modo dinâmico sem precisar configuramos um serviço online experimental que hospeda vários
saber quaisquer detalhes sobre a natureza do alvo da consulta. É conjuntos de dados de exemplo, inclusive os bancos de dados
responsabilidade da implementação atual da IQueriable de cada fonte Northwind e AdventureWorks, um subconjunto de artigos do
interpretar ou converter as consultas de modo apropriado. Isso Microsoft Encarta e um snapshot de dados compatíveis com o site
permite ao runtime do Astoria ter uma "consulta base" para compor social de marcadores Microsoft TagSpace. Transformar isso em um
com operações como ordenação e paginação. (Vide Figura 2.) serviço para o mundo real exige tecnologia muito além da interface e
dos padrões HTTP, e esse é um espaço fora do escopo do projeto
Com a adoção desse ponto de extensibilidade, os desenvolvedores Astoria; todavia, ainda consideramos que o serviço experimental tem
poderão contar com um amplo conjunto de fontes de dados no valor como ferramenta de aprendizado, só para ver o que os
cenário, expondo-as por meio da interface HTTP. Isso vai do acesso a desenvolvedores de aplicativos poderiam construir tendo-o como
base.
Figura 2: Diagrama da arquitetura do Astoria ilustrando a Segurança
estrutura em camadas baseada em IQueryable Expor uma interface de dados webfacing exige elaboração cuidadosa
com relação ao acesso seguro, para confirmar que apenas os dados
Canal de comunicação
(ex: HTTP por meio de WCF) que devem ficar disponíveis estejam efetivamente acessíveis pela
interface HTTP. Isso envolve uma infra-estrutura de autenticação e
diretivas de autorização adequadas.
Interface de host
Adaptador de host Astoria Embora muitos pontos de design do Astoria apliquem-se igualmente
ao Astoria como componente de aplicativo e como serviço, a
Runtime Astoria (tradução, autenticação é uma das áreas à qual essa afirmação não se aplica.
formato, diretivas URL...) Iqueryable
(+ outras interfaces)
REST e Astoria
Entity Outras fontes
Framework de dados...
O acrônimo REST significa Representational State Transfer
(Transferência de estado representacional) e foi criado por Roy
Fielding. Refere-se, de forma livre, a um estilo arquitetural em que
os sistemas apresentam uma abstração bastante simples,
orientada a recurso para o estado do aplicativo e uma interface
uniforme para agir sobre esses recursos. Existem também aspectos
Armazenamento como estrutura em camadas e armazenamento em cache que se
de dados
"
Serviços acabados são análogos aos aplicativos totalmente Nem os produtos Active Directory (AD) ou os metadiretórios como o
desenvolvidos, distribuídos pela Internet, utilizando o modelo SaaS. Microsoft Identity Lifecycle Manager resolvem esse problema
" específico. O AD é proprietário e o seu modelo de confiança não é
S+S refere-se ao uso de aplicativos que consomem serviços
suficientemente granular e os metadiretórios não são extensamente
vinculados ou àquele construído com os serviços de bloco de
implantados e não operam em tempo real. Algo baseado em padrões,
construção.
como federação, oferece um conjunto de capacidades que a
Ao analisar uma infra-estrutura de TI ou modelo de suprimento de qualificam como uma boa escolha especificamente para a integração
aplicativo, é importante conhecer os objetivos do negócio. Por com um aplicativo ou serviço externo. Apesar do baixo acoplamento,
exemplo, a terceirização é motivada pela necessidade de obter uma opera em tempo real e não por meio de programação, simplificando o
relação positiva entre custo e eficiência, transferindo o custo e o risco provisionamento e o (des)provisionamento. As relações de confiança
de entregar um aplicativo existente, maduro, a um terceiro, em troca da federação possuem alto nível de granularidade, permitindo à
de pagamentos contratados. Por outro lado, a adoção de um serviço organização do consumidor expor apenas um subconjunto do dos
de software satisfaz a necessidade do negócio, como gerenciamento respectivos diretórios (baseado em regras); e um mapeamento de
atributos em tempo real para "declarações", reduzindo a necessidade
de cliente mais eficiente (no caso de CRM). Pela perspectiva do
de mudanças internas de diretório. (vide a Figura 3; para conhecer
gerente do negócio, SaaS parece ser o melhor dos dois mundos: o
mais sobre federação e ADFS “Active Directory Federation Services”,
beneficio para o negócio é concretizado a um custo proporcional ao vide Referências.)
uso (ou até de graça), sem investimento prévio de capital, ou adicional,
Em contraposição com SaaS, os aplicativos S+S podem ter um serviço
em recursos de TI. Ainda que o negócio esteja melhor posicionado
back-end rodando no firewall e, nesse caso, uma única empresa ou
para determinar a qualidade com que o serviço resolve o seu
identidade proxy poderia ser transferida ao serviço na nuvem. A
problema, a não ser que a área de TI faça parte da discussão, muitas integração de identidades é uma capacidade comum de muitos
das implicações mais abrangentes para a área de TI da empresa (custos aplicativos corporativos e, assim, o serviço back-end pode integrar-se
não visíveis da adoção dos serviços de software) passarão com o Active Directory ou diretórios LDAP (Lightweight Directory
despercebidas. Access Protocol) prontos para usar.
Serviços de software: novos desafios de integração Controle de acesso
Ao adotar serviços de software, um conjunto de desafios fica sob a O gerenciamento de autorização e acesso é outro aspecto que deve
responsabilidade do provedor: distribuição e suporte para os serviços. ser considerado. Muitos aplicativos oferecem capacidades diferentes,
Entretanto, ao adotar um novo modelo, a área de TI enfrenta um de acordo com o usuário. Por exemplo, um aplicativo que gerencia
despesas pode permitir ao gerente autorizar reembolsos de até
conjunto adicional de desafios e, portanto, novo (Figura 2).
$4.000; valores superiores precisam da aprovação da diretoria.
Ignorar esses novos desafios não é uma opção. Como veremos, pode Atualmente, muitos aplicativos instalados atrás do firewall corporativo
haver custos diretos e indiretos, implicações de recursos e questões de definem permissões de acordo com cada usuário; na verdade, o
conformidade. Em outras palavras, a adoção de um serviço de aplicativo contém um mapeamento entre o usuário e a respectiva
software representa um projeto híbrido de aquisição/integração para a autorização. Contudo, inúmeras organizações começam a se afastar
área de TI interna. A integração precisa ser analisada no âmbito de três das autorizações baseadas em usuário para a autorização baseada em
áreas amplas: função. As vantagens são evidentes: custos de administração menores,
autorização consistente de acordo com a função e conformidade
"
gerenciamento de identidades e acesso transparente
"
dados
"
operações
Figura 2: O consumo de serviços de software acrescenta novos desafios
Regulamentos e obrigações legais também devem ser analisados.
Gerenciamento de identidades e acesso
TI Corporativo Service Provider
O gerenciamento de identidades e acesso é um problema perene
(responsabilidades existentes)
que afeta muitos aspectos da TI: dos custos de suporte técnico, • Distribuição de serviço • Distribuição de serviço
Software Convencional
Serviços de Software
produtividade do usuário à segurança dos dados. Também é uma • Gerência de nível de serviço • Gerência de nível de serviço
área para a qual a TI corporativa deveria fornecer uma experiência • Gerência de capacidade • Gerência de capacidade
• Gerência de disponibilidade • Gerência de disponibilidade
de usuário melhor, se comparada à da Internet (e, ainda assim, • Gerência de continuidade de TI • Gerência de continuidade de TI
muitas empresas têm dezenas de diretórios de usuários). Análises • Suporte do serviço • Suporte do serviço
feitas por organizações especializadas atestam, com freqüência, que • Suporte técnico • Suporte técnico
• Treinamento • Treinamento
as redefinições de senha são responsáveis por 30%, em média, das
chamadas de suporte técnico.
A adição de um serviço acabado, com o seu correspondente
Novos desafios na adoção
• Integração
(des)provisionamento, ainda que este seja um processo humano. Por • Gerência de identidades
exemplo, quando um funcionário sai da empresa, muitas • Dados
• Operações
organizações lutam para concretizar o (des)provisionamento ou
• Segurança
desativação de contas internas em tempo hábil; o risco de exposição • Gerência de contratos
no caso de um aplicativo ou serviço externo é significativo porque • SLAs
não há firewall corporativo que impeça o usuário de ter acesso ao • Conformidade
"
Análises serão necessárias para determinar as necessidades de
Se o cliente do serviço não tem o navegador como base, a área de TI
integração de dados e ETL. interna será responsável pela implantação e por suas implicações
(testes de compatibilidade, planejamento de implantação, distribuição,
"
Regras de firewall talvez sejam necessárias para permitir a
etc.).
integração.
Se for um serviço de bloco de construção ou vinculado, será preciso
"
O firewall talvez precise ser atualizado para possibilitar a filtragem
implantar infra-estrutura de back-end na central de dados da empresa
dos dados do aplicativo (por exemplo, validação de esquema
XML). ou do cliente ou em ambos. Para a implantação de back-end, existem
desafios comuns não funcionais: Qual servidor, rede e capacidade de
"
Talvez seja preciso comprar certificados ou implementar PKI para armazenamento são adequados para a carga? Podem ser utilizados
dar suporte às exigências de autenticação, criptografia e
serviços compartilhados como o servidor SQL existente ou os web
assinatura.
farms do servidor? De que forma são fornecidas flexibilidade e
capacidade de recuperação de desastres? Podem ser
Suporte técnico
Muitos consumidores se sentem frustrados pela ineficiência e executadas em várias centrais de dados? As respostas dependerão
confusão existentes nas centrais de chamadas. Para evitar problemas mais dos componentes do local do aplicativo do que do serviço
similares, as equipes internas do suporte técnico devem ser vinculado na nuvem: ou seja, podem ser abordadas, em grande parte,
informadas sobre os novos aplicativos e serviços a serem integrados às como uma implantação de back-end normal.
operações de TI. Os usuários corporativos dependem de inúmeros Operações do provedor/continuidade do negócio
sistemas internos de TI para acessar um aplicativo externo: rede, DNS, É tentador concentrar-se simplesmente no conteúdo do SLA quandose
servidores proxy. O suporte técnico corporativo é responsável pelo trata de selecionar, monitorar e avaliar um provedor de serviço. É
atendimento desses itens e não o provedor de serviços. Muitas importante considerar como o SLA será formalizado: um SLA que
organizações percebem, agora, a importância de simplificar o estabeleça que o serviço será restaurado em 24 horas após o desastre
processo de suporte do negócio e fornecer, por exemplo, um único parece bom em princípio; entretanto, a definição de desastre e a
número de telefone e um site intranet para fazer a comunicação com forma de restauração têm importância crítica. Para o consumidor do
a equipe adequada, de primeira linha. serviço, desastre pode ser a exclusão acidental de registros do
aplicativo, mas provavelmente o provedor do serviço terá uma visão Emissão de relatórios
diferente. Analisando melhor este exemplo, a restauração de dados do Como com qualquer SLA, os grupos comerciais e de TI devem analisar
aplicativo é um processo complicado para muitos aplicativos os relatórios de desempenho e investigar quais os pontos não
corporativos. Por exemplo, restaurar uma única caixa de correio ou atendidos pelos SLAs.
mensagem do Exchange ou um simples site ou documento do
Regulamentos e obrigações legais
Sharepoint era um desafio significativo, até o amadurecimento destes
aplicativos. Agora, aplicar esse desafio a um aplicativo SaaS com vários Proporcionar conformidade com regulamentos e obrigações legais
locatários, ainda que restauração granular seja possível, fará com que terá um impacto na infra-estrutura e garantir a conformidade de um
o provedor fique relutante, devido aos custos operacionais. processo do negócio, que abrange sistemas internos e serviços
externos, pode ser especialmente desafiador. Além disso, apresenta
Outra preocupação que ouvi de vários arquitetos trata do risco de o uma solução em potencial com referência à conformidade: se o
provedor do serviço falir ou reter dados para evitar a migração para aplicativo ou o serviço estiver alinhado com o setor, existe uma boa
um concorrente. Colocar o código do aplicativo em garantia é uma possibilidade de estar de acordo com os regulamentos relevantes dos
etapa na direção correta mas, na verdade, não é suficiente. principais mercados; este talvez não seja o caso de serviços genéricos.
Mesmo em situações nas quais a conformidade é um ponto de venda
Resumo das implicações de operações do serviço, as diretivas de segurança interna da empresa ou as leis
"Os procedimentos de suporte técnico precisam ser atualizados
específicas da região, como as de proteção de dados do parlamento
para a execução de diagnóstico de primeira linha para aplicativos europeu (European Parliament Data Protection Laws), podem ser
novos e os processos de escalação precisam ser definidos com o incompatíveis com as políticas do provedor de serviço.
provedor do serviço.
Propriedade de dados
"Revisar os SLAs do suporte técnico interno para confirmar se ainda
Obviamente, as empresas desejam manter a propriedade dos dados
podem ser atendidos quando dependentes do provedor de do negócio, sempre; o contrato deve definir isso, explicitamente. Além
serviço para suporte escalado. do mais, seria prudente confirmar que os dados podem ser extraídos
quando solicitado.
Pressupondo que um consumidor corporativo pudesse obter esses Privacidade
dados, reconstruir o aplicativo na central de dados sem instalar As empresas devem avaliar cuidadosamente as diretivas de privacidade
instruções ou dar acesso aos desenvolvedores talvez não seja viável. e as condições de uso do provedor para confirmar se seus dados são
Ainda não há uma solução para isso: é uma questão de ter confiança mantidos em confidencialidade e não são utilizados para marketing
no provedor, que este fará a coisa certa caso aconteça o pior, e de que nem vendidos para terceiros, especialmente importante nos casos em
o provedor tenha boas qualidades de administrativas e comerciais. que os serviços acabados têm o suporte de anúncios publicitários.
Gerenciamento "Considerar se é válido adotar o suporte de federação nos critérios de seleção de provedor.
de identidade "Analisar se a administração baseada em funções é uma forma de reduzir complexidade e custo.
e acesso
"O caso de negócio para integração deveria ser construído sobre segurança aprimorada para obter conformidade além da
redução de custo.
"Iniciar um período de amadurecimento nas tecnologias de identidade, como federação e CardSpace.
"Produzir uma arquitetura para simplificar a integração de identidades dos serviços de software futuros.
Operações "Incluir exigências para padrões abertos (por exemplo, WS-*) nos critérios de seleção de provedor.
de dados "Induzir o monitoramento leve do serviço para dar suporte à medição do SLA.
"Se os dados ficarem residentes no provedor, determinar se restaurações físicas são necessárias/possíveis.
"Avaliar o uso de frameworks operacionais formais (por exemplo, MOF/ITIL) nos critérios de seleção de provedor.
"Confirmar se não há dúvidas sobre a estrutura de custos relativa às operações (por exemplo, existem custos adicionais para
restaurações, relatórios, etc.).
"Avaliar se o provedor oferece treinamento. É de boa qualidade e disponível em todos os idiomas necessários? Quanto demora
para receber material atualizado quando um novo recurso é lançado?
"Se for preciso implementação no cliente, decompor a programação de lançamentos do provedor (patches e versões novas) nos
processos e planos de engenharia dos desktops existentes.
"Avaliar as necessidades da implantação e suas dependências (por exemplo, testes de compatibilidade do aplicativo de desktop,
espaço na central de dados, compra de produtos de integração).
"Peça aos seus desenvolvedores para avaliar a documentação entregue pelo provedor. É de boa qualidade e disponível em todos
os idiomas necessários?
"Analisar a flexibilidade, as políticas e os procedimentos de recuperação de desastre do provedor.
Regulamentos/ "Determinar se a conformidade se aplica ao provedor e, em caso afirmativo, decidir quais relatórios/diretivas/credenciais são
legal necessários para comprovar a conformidade.
"Considerar a automatização da criação de relatórios de conformidade híbridos: interno e do provedor. Isso pode significar que
o provedor de serviço tenha de expor APIs de relatório e não apenas fornecer um relatório estático.
"Se os dados ficarem residentes no provedor, analisar o contrato para confirmar que você detém a propriedade dos dados.
"Estender os seus dados de arquitetura de integração para dar suporte à integração do serviço externo. Adicionar credenciais de
segurança para os critérios de seleção de provedor.
Geral "Criar uma arquitetura de integração de infra-estrutura para oferecer um framework para a integração do serviço de software.
poderíamos exibir os registros desse usuário, incluindo um histórico endereço dos centros de assistência técnica do local do cliente. Em
de compras. Esse interessante aplicativo já está implementado em terceiro lugar, após sabermos as informações e a localidade do cliente,
muitas centrais de chamadas, atualmente. Mas e se, além de pesquisar cada um dos
as informações do cliente, pudéssemos plotar o número do telefone painéis de conteúdo são independentes e não exigem interação com
em um mapa, utilizando um serviço disponível ao público e também as outras partes. Esse procedimento permite reunir e agregar os dados
exibir uma lista de centros de assistência técnica do local ou
de cada uma das partes a serem executadas, de modo assíncrono.
fornecedores de peças dos produtos incluídos no mapa? Com esses
dados em mãos, poderíamos responder as perguntas dos clientes em Concretizar o retorno sobre o investimento (ROI) é uma preocupação
segundos. E se também pesquisássemos as condições atuais do tempo comum das implantações da arquitetura orientada a serviço (SOA).
nessa área ou as equipes de esportes do local e os resultados dos seus Muitas organizações consideram difícil justificar o investimento inicial
jogos recentes como início de conversação ou passatempo em da criação de serviços para diferentes funcionalidades, quando seria
chamadas de longa duração? mais fácil criar um aplicativo simples. Os mashups corporativos são um
grande exemplo de como um investimento em SOA pode
Utilizando este exemplo, a Figura 3 apresenta um mashup simulado
proporcionar grande valor. (Vide na barra lateral "Mashups deliver ROI
de atendimento ao cliente que poderia ser usado por um atendente
for IDV Solutions".)
no momento do recebimento de uma chamada. Combinando dados
de serviços públicos (como a previsão do tempo e o noticiário) com Aproveitar os serviços já construídos por você
fontes de dados internas (um blog de alertas do atendimento ao O retorno imediato de uma SOA pode ser concretizado quando as
cliente e um banco de dados de locais de assistência técnica), este organizações começam a mesclar e fazer a correspondência desses
aplicativo combina os elementos de mashup com a acessibilidade de serviços entre objetivos novos e existentes. Pode ser instigante iniciar
um portal. o aproveitamento dos serviços ou aplicativos nos modos jamais
Como mostra a Figura 3, o mashup incorporado coloca um volume imaginados no momento em que foram escritos. (Vide na barra lateral,
extraordinário de informações nas mãos do agente do serviço de “Quicken Loans leverages mashups for fast results” - Quicken Loans
chamadas: dos principais itens de serviço, para que as perguntas aproveita mashups para resultados mais rápidos)
possam ser rapidamente respondidas, até pesquisas reversas de Aproveitar os serviços construídos por terceiros
chamadas passadas para ter assunto para iniciar uma conversação. Este É importante compreender que não se pode ter todas as informações
tipo de mashup é estritamente interno mas proporciona valor do mundo e que há um retorno sobre o investimento bastante alto
significativo na primeira chamada, com qualquer cliente. quando você simplesmente aproveita o trabalho árduo de outra
Existem vários elementos-chave para o êxito deste mashup. Acima de pessoa, em lugar de reinventar a roda.
tudo, deve ser contextual à tarefa em questão. Em segundo lugar, Construir serviços que terceiros possam aproveitar
deve dar prioridade às informações na ordem em que, Outra oportunidade para as empresas, na medida em que os mashups
provavelmente, serão mais úteis. É preciso saber com quem estamos tornam-se cada vez mais populares, é a de construir serviços que
lidando, quais produtos estão registrados, quais os principais itens do possam ser facilmente consumidos por aplicativos mashups. Voltando
serviço que se destinam a esses produtos e, então, começar tentando ao exemplo que citamos, o atendente do serviço de chamadas pode
responder as perguntas do usuário como, por exemplo, qual o deixar o cliente feliz informando o endereço da loja
mais próxima. Mas, imagine se as próprias lojas
Figura 3: Exemplo de mashup para a nossa central de chamadas expusessem seus inventários e disponibilidade de
produtos para o mashup. Agora, o atendente do
serviço de chamadas pode fornecer informações
ainda mais detalhadas e valiosas ao cliente. Esse tipo
de serviço seria importante para o cliente, para a
central de chamadas e para a própria loja.
Plataforma ágil
Como discutido anteriormente, muitos mashups
foram criados para distribuição na plataforma web
baseada em padrões (HTML e Java Script). Isto não é
uma limitação dos próprios mashups, mas apenas a
forma padrão de distribuir aplicativos na Internet. À
medida que vemos os mashups entrarem na empresa,
observamos também um número crescente de
mashups construídos em plataformas RIA (como o
Flash da Adobe e o Silverlight da Microsoft) e até
mesmo o surgimento de mashups para desktop ricos,
completos, construídos em Windows Presentation
Foundation. O processamento em 3-D completo, em
plataforma de cliente rica, pode aumentar o apelo
visual do mashup. Os mashups corporativos podem
aproveitar totalmente essas plataformas mais ricas
pois muitas terão maior controle dos desktops.
Resumo crítica, existe um formidável impulso por trás de uma classe de soluções
emergente conhecida como Office Business Applications (OBA).
Software + serviços (S+S) é uma visão para criar
Desde o Microsoft Office 2003, é possível construir-se aplicativos
arquiteturas de aplicativo que aproveitam ao máximo maduros sobre os aplicativos cliente do Office. Esta capacidade vai bem
recursos de ponta - os recursos dos dispositivos do além do que era possível com o Visual Basic for Applications (VBA).
cliente - para fornecer aos usuários finais experiências Embora mecanismos para integração de conjuntos de módulos
ricas e intuitivas. Esta visão representa uma etapa (assemblies) .NET em aplicativos Office estejam bem documentados, os
padrões de projeto específicos necessários para o aproveitamento pleno
incremental na direção do processamento universal, em e aprimorado da IU ainda não são bem compreendidos pelo setor.
que a tecnologia não mais interferirá nos processos de
No momento em que as técnicas para casar a IU do Office com os
raciocínio das pessoas, permitindo a humanos entender conjuntos de módulos do .NET estiverem dominadas (permitindo ao
melhor como máquinas funcionam e, a partir disto, código transferir informações de/para os documentos gerenciados
poderem realizar as suas tarefas. O Microsoft Office com pelo Office), conectar esses documentos a sistemas de back-end via
sua interface bastante conhecida, rico conjunto de serviços não será apenas lógico mas também relativamente simples,
presumindo-se que o trabalho de expor a lógica do negócio como um
serviços e base estabelecida de usuários corporativos é serviço já tenha sido realizada. Isso supera uma das maiores
uma fundação natural para a criação de aplicativos desvantagens de se implementar lógica do negócio significativa no
corporativos S+S. Office: o efeito colateral de se criarem ilhas de dados ou os chamados
"Excel Hell". Depois que os documentos estiverem conectados e
Figura 3: Criação de etapa de cálculo com base em método Figura 4: Mapeamento de um esquema gerado do método do
do Web Service Web Service
Add Web Service Method Invocation Step
SaveFunctionalCalculation
Add a Step Description: Transmits results of a functional calculation to the system of
record for a product, site, and reporting period.
Inputs: Reporting Period Start <datetime>
2 Steps) Edit / Delete Reporting Period End <datetime>
Product Code <string>
> Site Code <string>
Capacity Metric By Function Calcs <object>
Capacity Based Unit Cost Calcs <object>
(4
4 Steps) Edit / Delete Hour Rate Calcs <object>
Capacity Based Unit Cost Summary Calc <object>
Hour Rate Summary Calc <object>
Step Name
Make sure to provide a simple, but explanatory name for this step.
Save Functional Calculation Results
Além disso, uma tarefa de cálculo possui um conjunto de entradas Adicionalmente à criação de etapas de cálculo, o designer da pasta de
fornecidas pelo usuário para acionar a execução da tarefa. trabalho também especifica entradas bem tipadas para configurar
Um designer de pasta de trabalho usa o assistente de conexão para uma tarefa de cálculo utilizando um assistente de entrada de tarefa de
adicionar chamadas de método do Web Service específicas para uma cálculo para especificar nomes de entrada e seus respectivos tipos de
tarefa de cálculo (vide Figura 3). Ao especificar o identificador de dados. O processador de cálculo gera de modo dinâmico uma XSD
recurso uniforme (URI) para uma WSDL (Web Service Definition correspondente às entradas a qual é, depois, adicionada à pasta de
Language) do Web Service, seus métodos e respectivas assinaturas são trabalho como um mapa XML Excel e mapeada para as células da
recuperados e apresentados ao designer da pasta de trabalho que, planilha, como anteriormente mostrado na Figura 4. Quando a tarefa
depois, acrescenta um método de interesse para a tarefa de cálculo de cálculo é executada no cliente Excel, o sistema apresenta ao usuário
como uma etapa do cálculo. um formulário gerado que solicita os valores das entradas (vide Figura
5). Quando executado pelo processador do trabalho de cálculo no
Uma vez acrescida, o processador de cálculo gera, de modo dinâmico, servidor, são usados os valores das entradas especificados pelo
uma definição de esquema XML (XSD) correspondente às entradas e agendador de trabalho de cálculo.
saídas do método do Web Service, incluindo-a na pasta de trabalho
Execução de tarefa de cálculo
como um mapa XML do Excel. A seguir, o designer da pasta de
O mecanismo de execução é o coração do módulo processador de
trabalho faz o mapeamento dos elementos individuais do mapa XML
cálculo. É responsável por interpretar a chamada do método do Web
para as planilhas utilizando o recurso arrastar-e-soltar do painel de
Service, copiar as etapas de dados e executá-las na ordem especificada
tarefas-fonte XML (vide Figura 4). Essas tarefas serão valores escalares
pelo designer da pasta de trabalho em uma tarefa de cálculo. Quando
mapeados para células individuais ou coleções de elementos que se
o Excel é executado em um cliente, o mecanismo de execução acessa
repetem, mapeados para tabelas do Excel 2007, anteriormente
diretamente o modelo de objeto Excel, utilizando os mapas XML para
conhecidas no Excel 2003 como listas Excel. Enquanto os mapas XML vincular dados de/para planilhas. Quando executado no servidor,
preservam a estrutura hierárquica dos objetos proxy do Web Service, utiliza o Excel Services para realizar a vinculação, o cálculo e a
estes ficam desnormalizados quando mapeados para tabelas ou pastas recuperação dos dados.
de trabalho do Excel.
Ao colocar em serviço pastas de trabalho existentes, quase sempre
Figura 5: Execução de uma tarefa de cálculo
recomenda-se preservar a apresentação dos dados na pasta de
trabalho. Muitas vezes, dados similares não são apresentados na forma All Workbook
Workbook Tasks
Tasks
T Create a New Task
de tabela, como exigido pelo mapeamento de elementos que se
repetem nos mapas XML. Além disso, existe um limite para mapas - Run Capacity Management Calculation (4 Steps) Edit / Delete Run Task
XML do Excel, ou seja, as células de mapeamento não podem se Performs the capacity management calculation for a
reporting period, site, and product. Debug Task
sobrepor àquelas de outros mapas XML. Nesses casos, algumas vezes é
Run Capacity Management Calculation
preciso transferir dados de uma faixa de células da planilha para outra,
1. Reporting Period Start / Date
e Edit / Delete
para fazer com que as entradas e saídas do serviço "fiquem em linha". Reporting Period Start
Um tipo de etapa de cálculo denominada copiar dados permite ao 2. Reporting Period End / Date Edit / Delete
designer da pasta de trabalho especificar como duplicar dados para Reporting Period End 3. Product Code / List Edit / Delete
dos dados. Um tipo de etapa modificar IU permite ao designer da 2. Get FTEs Rename / Delete / Run
pasta de trabalho fazer a conexão dessas interações.
3. Get Product Stats Rename / Delete / Run
Tabela 2: Prós e contras da vida no Grão-Ducado de Enterprisia Tabela 4: Prós e contras a vida em Deviceland
A erupção do monte Web A única exigência é passar algum tempo ao final da experiência de
A República Popular do Mundo On-line é uma jovem nação instituída compras na frente de uma grande tela na qual exibe-se propaganda
em um novo continente criado pelas violentas erupções do monte (ironicamente, do Grão-ducado de Enterprisia). O tempo que você
Web. Em muitos aspectos, a República Popular se rege por valores deve passar assistindo a propaganda é diretamente proporcional ao
opostos aos do Grão-ducado de Enterprisia. Na mesma medida em valor estimado da sua experiência de compra. A Tabela 3 apresenta os
que Enterprisia é dirigida a processo, com sistemas centralizados, a prós e os contras da vida na República Popular do Mundo On-line.
República Popular caminha rápido e é centrada nas pessoas. Em lugar Deviceland
de confiar em práticas definidas e bem comprovadas, os cidadãos da Kermit-TTY, o primeiro governante de Deviceland, chegou atrasado na
República Popular preferem o procedimento tentativa-e-erro. Outro reunião do Tratado de Divisão de Architectopia, pelo qual os vários
ponto divergente trata da habilidade artesanal. Fica claro que as continentes foram alocados às várias civilizações antigas
qualidades leve e funcional são as preferências da República Popular (supostamente porque "não recebeu o memorando"). Desde então, os
para seus produtos artesanais, em detrimento da elegância ou habitantes de Deviceland são obcecados por ter acesso às informações
durabilidade. Até mesmo no tempo parecem diferentes pois o restante a qualquer hora, em qualquer lugar.
de Architectopia rege-se por anos orbitais longos e na República Formados por tribos nômades de guerreiros errantes, os residentes de
Popular o tempo é contado em dias lunares meridionais, muito mais Deviceland adaptaram plenamente seus hábitos para acomodar-se ao
curtos. estilo de vida apressado, sempre em alta velocidade. A perspicácia das
Um ditado popular desse país (considerado herege em Enterprisia) diz tribos não deve ser subestimada: é prática comum para eles observar o
“vamos tentar e ver o que acontece”. Explosões são freqüentes nos que está acontecendo nos outros países e adaptar os avanços que
laboratórios da República Popular. Muitos nem se surpreendem pois encontram à sua vida nômade - quase sempre, entretanto, à custa da
os cientistas, em sua maioria, são adolescentes que aspiram ser riqueza da experiência.
alquimistas e que se recusaram a cursar as melhores universidades do Em Deviceland, as tribos vivem muito felizes em territórios isolados,
Grão-ducado de Enterprisia. Em vez de irem à escola, preferem mas mantêm contato constante entre si e com a cidade da capital. O
dedicar sua energia inesgotável procurando pela pedra filosofal a qual, lugar mais provável no qual se encontram membros das tribos são
no dialeto local, denomina-se "IPO". Pela perspectiva sociológica, é pontos específicos conhecidos como Hot Spots. São muito populares
interessante notar que muitas dessas experimentações são em Deviceland pois fornecem "o suco", uma fonte de energia
patrocinadas por uma sociedade secreta conhecida por duas letras: necessária para todos, assim como "sinal forte", campo
C.R. (capital de risco). Entretanto, nem todos os experimentos eletromagnético quase-místico, que fornece um profundo sentimento
terminam em explosões: os poucos que tiveram êxito, em geral, de paz às pessoas. Os Hot Spots são o tema central do hino de
modificam a face de Architectopia e tornam-se modelos para todos os Deviceland: "Agora você me escuta?" A Tabela 4 lista os prós e os
outros países, ainda que adaptados às culturas locais. contras da vida em Deviceland.
Um valor fundamental da cultura da República Popular é o enfoque O novo mundo
nas formas de trabalho centradas nas pessoas, que permitiu o A recente colonização de Servicetopia, anteriormente territórios hostis
estabelecimento de uma infra-estrutura de comunicações muito de Architectopia, lançou algo novo. Em lugar de viverem isolados em
avançada. Nesse país, muito pouco parece ser divertido, se não for cidades-Estado como era o hábito em sua terra natal, os colonizadores
feito em grupo. O trabalho é feito em grupo, reuniões sociais em do velho mundo, especialmente a República de Desktopistan, o Grão-
massa são comuns e alcançar todas as pessoas é o principal estandarte ducado de Enterprisia, a República Popular do Mundo On-line e
de sua filosofia. Deviceland estabeleceram casamentos inter-raciais e mesclaram seus
valores.
Um aspecto final do interesse cultural da República Popular é a noção
de que todas as compras deveriam ser grátis, de acordo com os seus
Tabela 5: Os atributos centrais da Federação Unida de S+S
cidadãos.
e a influência da origem
• Alcance • Sem contratos, todas as transações Alcance, coletividade e inovação República Popular do Mundo
seguem o “Farei o possível” rápida On-Line
• Coletividade
• Tende a satisfazer uma
• Inovação rápida (técnica e
experiência de denominador Fatores de forma e mobilidade de Deviceland
nos modelos de negócio) hardware otimizado
comum
Figura 1: Bandeira da Federação Unida de S+S Figura 2: Um padrão S+S possível para empresa
Solução
contábil
SaaS
Solução Contabilidade
CRM Saas
Arquitetura
Arquitetura
CRM de integração
de
composição
Usuário
Portal Colaboração corporativo
A diversidade e o respeito pela escolha tornaram-se o principal line"). Este padrão, claro, não é utilizado apenas pela Microsoft, mas
conjunto de características do povo de Servicetopia. Assim, não é de está se tornando uma tendência do setor. As combinações
se surpreender que quando Servicetopia tornou-se a Federação Unida iPod/iTunes da Apple, Salesforce.com/Salesforce.com Offline Edition
de Software + Serviços (UF S+S), a diversidade e a escolha tornaram-se também são exemplos deste modelo.
elementos centrais da sua constituição. Na verdade, como Contudo, a visão software + serviços não se limita a clientes locais
representado pela sua bandeira, pode-se pensar que a Federação ricos que acessam aplicativos Saas. Outro exemplo poderia ser o
Unida de S+S é uma mescla do que cada cultura do velho mundo modelo estendido da arquitetura orientada a serviço (SOA) em que as
tinha a oferecer (Figura 1). empresas executam parte do seu portfólio localmente e parte dele na
Em sua essência, a UF S+S é uma sociedade que baniu a tirania que nuvem, conforme ilustrado pela Figura 2.
obrigava a escolha de um modo de vida ou outro e, em lugar disso, Sob a proteção do guarda-chuva software + serviços pode-se admitir
adotou o poder da fusão. Os padrões elevados de Enterprisia e a um número maior de cenários e eu diria que as três realizações mais
liberdade de experimentação da República Popular são desejados; freqüentes (pelo menos inicialmente) serão:
procura-se ter as experiências ricas dos nativos de Desktopistan e a
1. Software local complementando um serviço na nuvem (por
mobilidade normalmente encontrada em Deviceland. Opiniões
exemplo, uma interface baseada em Outlook para o CRM Live).
dogmáticas e vacas sagradas são substituídas por tomada de decisão
Este modelo combina a experiência rica, ágil, familiar do usuário
pragmática, processo linear para se fazer a escolha certa, no momento
local com economia de escala e distribuição SaaS um-para-muitos.
certo. A Tabela 5 apresenta os atributos centrais da Federação Unida
2. Software local ampliado por um serviço na nuvem (por
de S+S e a influência originada.
exemplo, um serviço anti-spam, anti-phishing baseado na nuvem,
O que tudo isso quer dizer, realmente? ampliando um servidor de mensagens executado no local). Este
O objetivo da história irônica anterior foi o de transmitir a premissa modelo permite que uma incrível variedade de serviços de valor
fundamental da visão software + serviços: arquiteturas híbridas são agregado seja acrescentada na nuvem, liberando os sistemas
boas. existentes que controlam os dados considerados preferenciais para
Similar à fusão musical em que os estilos pop, folclore e reggae são ficarem intramuros.
misturados, ou à fusão culinária que coloca patê de fígado sobre um 3. Consumo de serviço independente de local, muitos-para-um no
sushi, software + serviços combina padrões arquiteturais encontrados TI corporativo (por exemplo, cenário de “SOA estendida”). Este é
na empresa, na web, nos aplicativos para desktop e nos dispositivos. um cenário típico de otimização de TI.
Em lugar de escolher um ou outro, a visão software + serviços agrupa-
Por fim, para concluir esta narrativa fantasiosa, deixo-os com a
os e aceita todos os padrões de cada domínio trazendo oportunidades
recomendação que teria sido, estou certo, a afirmação da hipotética
únicas para uma solução global.
da constituição da Federação Unida de Software + Serviços: “Aceite a
Portanto, propomos um distanciamento do modelo "tamanho único" diversidade, exija escolher”.
e, em seu lugar, combinar várias arquiteturas na mesma solução, para
tentar conseguir a abordagem "o melhor de todos os mundos".
Agradecimentos
Não se trata mais de comprometer a riqueza pelo maior alcance, mas
Agradeço muito aos meus irmãos de armas, Eugenio Pace e Frederick
oferecer ambos; tampouco comprometer controle rígido e
Chong, pelas conversas que tivemos que nos levaram aos vários países
propriedade dos dados de uma solução interna por estrutura de custo
fictícios.
para vários locatários, mais econômica, mas conseguir ambos.
Atualmente, existem muitos exemplos de software + serviços. A
combinação Xbox / Xbox Live oferece um exemplo perfeito: Sobre o autor
proporciona ricas experiências em 3-D, maximizando o poder de Gianpaolo Carraro é diretor de Distribuição de serviço – Estratégia de
processamento gráfico do console local (influência “Desktopistana”) e, arquitetura da Microsoft. Para saber mais sobre ele, visite o blog do
ao mesmo tempo, permite experiências participativas por meio do Gianpaolo: http:// blogs.msdn.com/gianpaolo
serviço Xbox Live (influência da "República Popular do Mundo On-