Você está na página 1de 64

Manual de Tecnologia Cach

ndice

Captulo 1 CAPTULO 1 - MODELAGEM DE DADOS ACESSO RELACIONAL OU POR OBJETO


Tecnologia Relacional Tecnologia de Objeto e de Base de Dados de Objeto Acesso Relacional vs. Acesso a Objeto Panorama do Modelo de Dados de Objetos do Cach e da Programao Orientada a Objetos Conceitos-Chave de Objeto Por que escolher Objetos para o seu Modelo de Dados? Armazenamento de Objetos & Acesso Relacional 5 6 6 6 8 9 9

Captulo 2 CAPTULO 2 - SERVIDOR DE DADOS MULTIDIMENSIONAL DO CACH


Acesso Integrado a Bases de Dados Modelo de Dados Multidimensional Acesso SQL Objetos do Cach Busca de Texto com Reconhecimento de Palavras Indexao de Bit-Map Transacional Enterprise Cach Protocol para Sistemas Distribudos Tolerncia a Erros Modelo de Segurana 10 11 14 16 18 20 22 24 27

Captulo 3 CAPTULO 3 - SERVIDOR DE APLICAES CACH


A Mquina Virtual Cach e Linguagens de Script Cach ObjectScript Basic MVBasic C++ Java Cach & Jalapeo Cach & .Net Cach & XML Cach & Web Services Cach & Multivalue 30 32 38 40 40 40 42 44 45 46 47

Captulo 4 CAPTULO 4 CRIAO RPIDA DE APLICAES DE ALTA PERFORMANCE WEB COM CACH SERVER PAGES (CSP)
O Modelo Cach Server Pages Arquitetura de Classe de Pginas Web Estratgias Mltiplas de Desenvolvimento Arquivos CSP Hipereventos (Hyper-Events) Intersystems Zen & Web Pages Baseada em Componentes 52 54 54 55 56 58

Introduo

ALM DO BANCO DE DADOS RELACIONAL


H 30 anos, bases de dados relacionais eram aclamadas como uma grande inovao. Ao invs de monolticas bases de dados legadas, cada qual com seu esquema de dados nico, as informaes passariam a ser armazenadas em formato tabulado e estariam acessveis a qualquer um que conhecesse SQL. Os bancos de dados relacionais tiveram grande sucesso e o SQL tornou-se o padro comum de acesso base de dados. Entretanto, como comum no caso de tecnologias mais antigas, essas bases possuem limitaes que reduzem seu uso no mundo atual: primordialmente no que diz respeito ao desempenho/escalabilidade, facilidade de uso e adaptao s tecnologias de desenvolvimento atuais. O uso e a complexidade das aplicaes tecnolgicas esto aumentando de forma explosiva. Os sistemas de hoje em dia, cada vez mais, apresentam necessidades de processamento que superam as capacidades da tecnologia relacional. Muitos dos aplicaes-chave que demandam alto desempenho e escalabilidade nunca realizaram a transio para bases de dados relacionais e, atualmente, at mesmo aplicaes simples comeam a se aproximar dos limites da tecnologia relacional tradicional. Problemas de impedncia (impedance mismatch) entre bancos de dados relacionais e as tecnologias de desenvolvimento atuais passaram a ser um srio problema, tornando o desenvolvimento mais complexo e as chances de falha maiores. Se por um lado a simplicidade de estruturas tabulares suporta uma linguagem de consulta estruturada (SQL) elegante, por outro, difcil decompor estruturas de dados do mundo real em linhas e colunas to simplistas. O resultado um enorme nmero de tabelas com inter-relaes que so difceis de lembrar e usar linhas e colunas so simples, mas a necessidade universal de se programar left outerjoins, stored procedures e triggers no. Aplicaes modernas so normalmente escritas usando tecnologia objeto, a qual permite uma maneira mais rpida e intuitiva de se descrever e usar informaes. O desenvolvimento torna-se mais veloz e a conabilidade aumenta. Infelizmente, objetos no so compatveis de modo nativo com bases de dados relacionais. As vantagens da tecnologia objeto tornam-se moderadas quando os objetos resultantes so introduzidos. Os atuais aplicaes de processamento transacionais possuem requerimentos que extrapolam as capacidades da tecnologia relacional eles precisam funcionar em grandes redes, servir a milhares de clientes, mas ainda assim, apresentar um desempenho excelente, compatibilidade com a web, bem como operaes simples e com baixo custo. E eles devem ser desenvolvidos rapidamente!

Introduzindo o Cach

O Cach da InterSystems uma nova gerao da tecnologia de banco de dados de desempenho ultra elevado. Ele combina uma base de dados objeto, SQL de alta performance e acesso poderoso a dados multidimensionais todos podendo acessar simultaneamente os mesmos dados. A informao descrita somente uma vez em um dicionrio de dados nico integrado e ca instantaneamente disponvel atravs de todos os mtodos de acesso. O Cach supre nveis de desempenho, escalabilidade, programao rpida e facilidade de uso que so inatingveis atravs de tecnologia relacional. O Cach , no entanto, muito mais do que um banco de dados. Ele possui tambm um servidor de aplicaes com capacidade avanada de programao de objetos, a habilidade de se integrar facilmente com uma ampla variedade de tecnologias, alm de um ambiente de execuo de alto desempenho com tecnologia nica de caching de dados (data caching). O Cach vem com vrias linguagens de script embutidas: Cach ObjectScript (uma poderosa linguagem de programao orientada a objetos e ainda assim, simples de aprender); Cach Basic (um conjunto de Basic linguagem de programao amplamente difundida , o qual inclui extenses para acesso de dados e tecnologia de objetos ecientes); e o Cach MVBasic (uma variante do Basic utilizado por aplicaes MultiValue, tambm conhecidos como aplicaes Pick). Outras linguagens, tais como Java, C# e C++, so suportadas atravs de chamadas diretas ou atravs de outras interfaces, incluindo ODBC, JDBC, .NET, bem como uma interface de objetos fornecida pelo Cach e que permite acessar a base de dados Cach e outras de suas facilidades como propriedades e mtodos. O Cach tambm vai alm das bases de dados tradicionais ao incorporar um rico ambiente para desenvolvimento de aplicaes sosticados baseados em browser (web). A tecnologia Cach Server Pages (CSP) permite o desenvolvimento e a execuo rpida de pginas web gerada de forma dinmica. Milhares de usurios web simultneos podem acessar aplicaes, mesmo atravs de hardware de baixo custo. Para aplicaes que no sejam baseados em browser, a interface de usurio geralmente programada em uma das tecnologias de interface populares, como Java, .NET, Delphi, C# ou C++. Os melhores resultados (programao mais rpida, melhor desempenho e menor manuteno) so geralmente obtidos ao se realizar o resto do desenvolvimento dentro do prprio Cach. Entretanto, o Cach tambm fornece nveis de interoperabilidade extremamente elevados com outras tecnologias e suporta todas as ferramentas de desenvolvimento mais comumente utilizadas, de modo que uma ampla gama de metodologias de desenvolvimento est disponvel.

Captulo 1

Captulo 1: Modelagem de Dados Acesso relacional ou por Objetos


No incio do processo de design de uma nova aplicao, os desenvolvedores devem decidir qual ser sua abordagem no que diz respeito modelagem de dados. Na maioria dos casos, esta uma deciso que se resume entre a modelagem tradicional de dados como tabelas relacionais ou a abordagem mais recente de modelagem de dados como objetos. Frente necessidade de lidar com dados complexos, muitos desenvolvedores acreditam que a modelagem em objetos uma abordagem mais eciente. Naturalmente, quando se move uma aplicao j existente para o Cach, o primeiro passo necessrio migrar o modelo de dados existente. H modos simples de se importar modelos de dados de vrias representaes relacionais ou de objetos, tal que o resultado seja uma denio padro de dados Cach. Uma vez que tenham sido migrados para o Cach, os dados podem ser simultaneamente acessados como objetos, tabelas relacionais e arrays multidimensionais. O Cach suporta tanto acesso SQL quanto objetos de dados nos momentos apropriados. Para entendermos os usos de cada um destes acessos e o porqu da modelagem de dados em objetos ser normalmente preferido pelos desenvolvedores atuais til que se compreenda como e por que cada mtodo foi desenvolvido.

TECNOLOGIA RELACIONAL
Nos primrdios da informtica, o processamento de informaes era realizado em sistemas mainframe gigantescos e o acesso a dados era em grande parte limitado a prossionais de TI. As bases de dados tendiam a ser criadas internamente e a recuperao de dados exigia conhecimento completo do banco de dados. Se os usurios quisessem um relatrio especial, eles geralmente tinham que solicitar a funcionrios sobrecarregados que o preparassem, de forma que geralmente no estavam prontos a tempo de inuenciar na tomada de decises. Embora a tecnologia relacional tenha sido originalmente desenvolvida no mainframe na dcada de 70, ela prosseguiu em grande medida como um projeto de pesquisa at comear a aparecer em mini-computadores nos anos 80. Com o advento do PC, o mundo entrou em uma era de informtica mais centrada no usurio e de geradores de relatrios mais amigveis, baseados em SQL a linguagem de busca introduzida pela tecnologia relacional. Os usurios puderam a partir de ento gerar seus prprios relatrios e realizar buscas com nalidades especcas (ad hoc) na base de dados, e assim o uso relacional se expandiu exponencialmente. O SQL permite o uso de uma linguagem consistente na realizao de consultas a uma variedade ampla de dados. O SQL funciona pela visualizao de todos os dados em um formato muito simples e padronizado uma tabela bidimensional com linhas e colunas. Se por um lado este modelo simplicado de dados permitiu a construo de uma linguagem elegante de consulta atravs da qual se deva questionar informaes, por outro ele foi criado a um alto custo. A complexidade inerente s relaes de dados do mundo real no se encaixa naturalmente em simples linhas e colunas, de tal forma que os dados so freqentemente fragmentados em tabelas mltiplas que devem ser unidas para que at tarefas simples possam ser completadas. Isso resulta em dois problemas: a) consultas podem se tornar extremamente difceis de serem escritas, dada a necessidade de se unir muitas tabelas (freqentemente com complexos outerjoints junes externas); e b) quando bases de dados relacionais tm de lidar com dados complexos, a quantidade de processamento necessrio para o cdigo adicional pode ser enorme. O SQL tornou-se um padro para interoperabilidade dos bancos de dados e de ferramentas de relatrio. No entanto, importante compreender que enquanto o SQL cresceu a partir dos bancos de dados relacionais, ele no precisa estar restrito a eles. O Cach suporta o SQL padro como uma linguagem de consulta e atualizao, utilizando uma tecnologia de base de dados multidimensional muito mais potente e que ampliada para incluir capacidades de orientao a objetos.

Captulo 1

TECNOLOGIA DE OBJETOS E DE BASE DE DADOS DE OBJETOS


Programao orientada a objetos e bancos de dados orientados a objetos so o resultado prtico de trabalhos para simular as complexas atividades do crebro. Observou-se que o crebro capaz de guardar dados muito complexos e de tipos diferentes e, assim mesmo, ainda pode manipular informao aparentemente diversas de modo simples. Para suportar esta simulao, comportamentos muito complexos precisavam ser implementados a programas, ao mesmo tempo em que se escondia esta complexidade suportando uma lgica mais simples, generalizada e abrangente com um conjunto com funcionalidades reutilizveis e adaptveis. Obviamente, estas caractersticas so tambm verdadeiras para os mais avanados aplicaes da atualidade e, uma tecnologia que permita aos desenvolvedores trabalhar em uma maneira natural e que seja similar ao modo como os seres humanos pensam de grande vantagem.

ACESSO RELACIONAL VS. ACESSO POR OBJETOS


Na tecnologia a objetos, a complexidade dos dados est contida dentro do objeto e os dados so acessados atravs de uma interface simples e consistente. Por outro lado, a tecnologia relacional tambm apresenta uma interface simples e consistente, porm, dado o fato de que ela no faz nada para gerenciar a complexidade de dados do mundo real, as informaes cam dispersas entre mltiplas tabelas o usurio ou programador responsvel por lidar constantemente com esta complexidade. Considerando que objetos podem modelar dados complexos de forma simples, a programao em objetos a melhor escolha para aplicaes complexos. De forma similar, acesso a objetos pelo banco de dados a melhor escolha para se inserir e atualizar informaes na base de dados (como exemplo, para processamento transacional). O Cach complementa o acesso a objetos com uma linguagem de consulta SQL estendida a objetos. O SQL uma linguagem eciente para realizar buscas em uma base de dados e muito utilizada por ferramentas de relatrio. Acreditamos, no entanto, que o SQL mais apropriado para esse propsito consultas e relatrios , do que para processamento transacional (para o qual incmodo e muitas vezes ineciente). As extenses de objetos do SQL no Cach eliminam muito da incmoda sintaxe de joins, tornando o SQL ainda mais fcil de utilizar.

PANORAMA DO MODELO DE DADOS POR OBJETOS DO CACH E DA PROGRAMAO ORIENTADA A OBJETOS


O modelo de objetos do Cach baseado no padro ODMG (Object Database Management Group) e suporta muitos recursos avanados, incluindo herana mltipla. A tecnologia de objetos tenta espelhar a maneira como os humanos realmente pensam e usam informaes. Diferentemente de tabelas relacionais, objetos formam pacotes que contm tanto dados quanto cdigos. Por exemplo, um objeto de Nota Fiscal pode conter dados, como nmero de NF e valor total, e cdigos como Print(). Conceitualmente, um objeto um pacote, que inclui valores de dados daquele objeto (propriedades) e uma cpia de todo o seu cdigo (mtodos). Os mtodos de um objeto enviam mensagens para se comunicar com outros mtodos. Para reduzir armazenamento, comum que objetos da mesma classe compartilhem a mesma cpia de cdigo (ex., no seria realista que cada objeto de NF possusse sua prpria cpia de cdigo particular). Alm disso, no Cach, chamadas de mtodos geralmente resultam em chamadas de funo ecientes, ao invs de persistir com processamento extra de mensagens em trnsito. Entretanto, estas implementaes tcnicas esto escondidas do programador. sempre correto pensar em termos de objetos passando as mensagens.

Qual a diferena entre um objeto e uma classe? Uma classe a estrutura de denio e o cdigo fornecido pelo programador. Ela inclui a descrio da natureza dos dados (seu tipo) e como ele armazenado, assim como todo o cdigo do objeto. Todavia, ela no inclui nenhum dado. J um objeto, uma instncia especca de uma classe. Por exemplo, a nota scal n123456 um objeto da classe de Notas Fiscais. A tecnologia de objetos promove tambm uma visualizao natural dos dados atravs da no restrio de propriedades a tipos de dados simples e centrado no computer. Objetos podem incluir outros objetos ou referncias a outros objetos, o que torna fcil construir modelos de dados teis e signicativos. Eis um exemplo simples de um objeto Cliente:
(Rep Conta) Account Rep:
RepConta uma propriedade que conecta um Cliente a um objeto RepConta numa relao de muitos-para-um (muitos clientes para um Representante de Conta). Ao contrrio de um objeto embutido, o objeto relacionado tem seu prprio identificador (ID) de base de dados e guardado separado usando aquele ID. O ID pode ser usado para acessar aquele RepConta diretamente, sem acessar o Cliente. No Cach a sintaxe para acessar um objeto embutido ou relacionado a mesma (ex. Cliente .Endereo. Cidade e Cliente.RepConta.Nome usam a mesma sintaxe-ponto).

Os dados so armazenados utilizando um tipo de Nomes

(Nome) Name:

Os dados podem ser um tipo simples, como um integral, ou um tipo mais complexo definido pelo programador, como uma seqncia de 9 dgitos (N.: 11 dgitos no Brasil), seguindo o padro: NNN-NNN-NNN-NN (no Brasil).

(CPF) SSN:

Este um exemplo de como objetos podem ser embutidos em outros objetos. Neste exemplo, Endereo um objeto embutido, que contm as propriedades Rua e Cidade.

(Endereo) Address:

(Notas Fiscais) Invoices:

Um Cliente possui um conjunto de NFs, cada uma das quais um objeto complexo armazenado separadamente com seu prprio ID de base de dados. Neste exemplo, h uma relao de um-para-muitos entre Clientes e NFs (um Cliente para muitas NF) usando uma relao pai-filho (NF no podem existir sem um Cliente, mas um Cliente pode existir sem NF). Um conjunto de objetos embutidos tambm possvel.

Captulo 1

CONCEITOS-BSICOS DE OBJETOS
Herana a possibilidade de se derivar uma classe de objetos a partir de outra. A nova classe (uma subclasse) contm todas as propriedades e mtodos de sua superclasse, bem como propriedades adicionais e mtodos exclusivos dela. Pode-se pensar em objetos da subclasse como tendo uma relao de ser um(a) com sua superclasse. Por exemplo, um co um mamfero, portanto faz sentido que a classe Co herde todas as propriedades e mtodos da classe Mamferos, alm de possuir propriedades e mtodos adicionais, tais como NumColeiraCao. Uma subclasse pode tambm desativar uma denio herdada (ex. o mtodo Print() para uma subclasse da classe Nota Fiscal pode ser diferente do mtodo Print() de Nota Fiscal). A herana promove a reutilizao do cdigo e torna mais fcil a introduo de grandes melhorias. Herana mltipla signica que uma subclasse pode ser derivada de mais de uma superclasse. Por exemplo, um co um mamfero e um animal de estimao, portanto a classe de objetos Co pode herdar as propriedades e mtodos de ambas as classes Mamferos e Animais de Estimao. Encapsulamento signica que os objetos podem ser vistos como caixas-pretas. Propriedades e mtodos pblicos podem ser acessados por mtodos de qualquer classe, ao passo que propriedades e mtodos particulares s podem ser acessados por aqueles da mesma classe. Portanto, o aplicao no precisa conhecer o funcionamento interno de um objeto ele s lida com as propriedades e mtodos pblicos. A fora do encapsulamento est no fato de programadores poderem melhorar o funcionamento interno de uma classe sem afetar o resto do aplicao. Polimorsmo refere-se ao fato de mtodos utilizados em vrias classes poderem compartilhar uma interface comum, mesmo quando a implementao subjacente for diferente. Por exemplo, suponha que as classes Carta, Etiqueta Postal e Crach contenham um mtodo chamado Print(). Para imprimir, um aplicao no precisa saber que tipo de objeto ele est acessando ele simplesmente chama o mtodo Print() do objeto.

A VANTAGEM DO CACH
O Cach completamente habilitado para o uso de objetos, disponibilizando toda a fora da tecnologia de objetos para desenvolvedores de aplicaes de processamento transacional de alto desempenho. Modelagem Intuitiva de Dados: A tecnologia de objetos permite aos desenvolvedores pensar e utilizar informao mesmo informao extremamente complexa de formas simples e realista, acelerando assim, o processo de desenvolvimento de aplicaes. Desenvolvimento Rpido de Aplicaes: Os conceitos de encapsulamento, herana e polimorsmo de objetos permitem a reutilizao de classes com novos propsitos e de forma compartilhada entre aplicaes, permitindo aos programadores alavancarem seus trabalhos em vrios projetos.

POR QUE ESCOLHER OBJETOS PARA SEU MODELO DE DADOS?


Para novas aplicaes, a maioria dos desenvolvedores optam por utilizar tecnologia de objetos, pois assim podem desenvolver aplicaes complexas mais rapidamente, alm de poder modic-las com maior facilidade posteriormente. A tecnologia de objetos oferece muitos benefcios: Objetos suportam uma estrutura de dados mais rica e que descreve informao do mundo real mais naturalmente. Programao mais simples mais fcil saber o que voc est fazendo e o que voc est manipulando. Verses customizadas de classes podem facilmente substituir verses padronizadas, tornando mais fcil customizar um aplicao. A abordagem caixa-preta de encapsulamento proporciona aos programadores a habilidade de melhorar o funcionamento interno de objetos sem afetar o restante do aplicao. Objetos proporcionam um modo simples de conectar diferentes tecnologias e aplicaes. A tecnologia de objetos um par natural de interfaces grcas de usurio. Diversas novas ferramentas pressupem tecnologia de objetos.

Os objetos proporcionam uma boa independncia entre a interface de usurio e o restante do aplicao. Assim, quando se tornar necessrio adotar uma nova tecnologia de interface de usurio (talvez uma tecnologia futura ainda desconhecida), voc poder reutilizar a maior parte do seu cdigo.

ARMAZENAMENTO DE OBJETOS Infelizmente, apesar de muitos aplicaes serem atualmente escritos em linguagens de programao de objetos, eles freqentemente tentam formatar forosamente objetos em tabelas relacionais. Isto diminui signicativamente as vantagens da tecnologia de objetos. O Cach possui uma estrutura de dados multidimensional que armazena naturalmente dados de objetos. O resultado disso o rpido acesso a dados e uma programao mais gil. ... & ACESSO RELACIONAL
Certamente, muitas ferramentas (tais como geradores de relatrios) utilizam SQL, e no tecnologia de objeto, para o acesso a dados. O Cach possui um recurso exclusivo atravs do qual quando uma classe denida, ele fornece automaticamente acesso SQL completo queles dados. Assim, ferramentas baseadas em SQL passam a funcionar imediatamente com os dados Cach sem trabalho adicional nenhum e at mesmo estas ferramentas passaro a se beneciar da vantagem proporcionada pelo alto desempenho do Servidor de Dados Multidimensional do Cach. O recurso funciona tambm na direo contrria. Quando uma denio DDL de uma base de dados relacional importada, o Cach gera automaticamente uma descrio de objetos dos dados, possibilitando a eles o acesso imediato na forma de objetos e tambm na forma de SQL. A Arquitetura Unicada de Dados do Cach (Cach Unied Data Architecture) mantm estes caminhos de acesso sincronizados cando assim, somente uma descrio de dados para ser editada.

Captulo 2

Captulo 2: Servidor de Dados Multidimensional do Cach

A base de dados de alta performance do Cach utiliza um engine de dados multidimensional que possibilita o armazenamento eciente e compacto de informaes em uma rica estrutura de dados. Objetos e SQL so implementados especicando um dicionrio unicado de dados, o qual dene as classes e tabelas, bem como realiza um mapeamento das estruturas multidimensionais um mapa que pode ser gerado automaticamente. Acesso Multimensional

ACESSO INTEGRADO BASE DE DADOS


O Cach d aos programadores a liberdade de armazenarem e acessarem dados atravs de objetos, SQL ou acesso direto a estruturas multidimensionais. No obstante o mtodo de acesso, todos os dados contidos na base de dados do Cach cam armazenados nos arrays multidimensionais dele. Uma vez armazenados os dados, todos os trs mtodos de acesso podem ser utilizados simultaneamente e em completa concomitncia em um mesmo dado.

A Arquitetura de Dados Unicado um recurso exclusivo do Cach. Quando uma classe de objetos de base de dados denida, o Cach gera de forma automtica uma SQL-ready, descrio relacional dos dados. De forma semelhante, se uma descrio DDL de uma base de dados relacional importada para o Dicionrio de Dados, o Cach gera automaticamente tanto uma descrio de objeto quanto uma descrio relacional dos dados, possibilitando o acesso imediato na forma de objetos. O Cach mantm estas descries coordenadas, h somente uma denio de dados para ser editada. O programador pode editar e visualizar o dicionrio a partir de uma perspectiva de objeto e de uma tabela relacional. O Cach automaticamente mapeia o modo como objetos e tabelas esto armazenados nas estruturas multidimensionais, ou permite ao programador controlar de forma explcita o mapeamento.

A VANTAGEM DO CACH
Flexibilidade: Os modos de acesso a dados do Cach Objeto, SQL e multidimensional podem ser usados concomitantemente em um mesmo dado. Esta exibilidade d aos programadores a liberdade de pensar nos dados do modo que faa mais sentido, utilizando o mtodo de acesso que melhor se adqe s necessidades de cada programa. Menos Trabalho: A Arquitetura de dados Unicado do Cach descreve automaticamente os dados tanto como objetos quanto como tabelas, com uma nica denio. No h necessidade de codicar transformaes, permitindo assim que aplicaes possam ser desenvolvidos e mantidos mais facilmente. Alavanque Habilidades e Aplicaes J Existentes: Os programadores podem alavancar habilidades relacionais existentes e introduzir gradualmente capacidades de objeto a aplicaes j existentes conforme sua evoluo.
10

MODELO DE DADOS MULTIDIMENSIONAL


Em seu ncleo, a base de dados Cach alimentada por um engine de dados multidimensional extremamente eciente. As linguagens de script integradas ao Cach suportam acesso direto s estruturas multidimensionais oferecendo o mais alto desempenho e o maior nmero de possibilidades de armazenamento. Ademais, muitas aplicaes so implementados inteiramente a partir da utilizao direta deste engine. Acesso direto a globais direto particularmente comum nos casos de estruturas muito especializadas ou incomuns, alm da ausncia de necessidade em se prover acesso de objeto ou via SQL a elas, ou ainda quando o mais alto desempenho possvel necessrio. No h dicionrio de dados e, portanto, nenhuma denio de dados para o engine de dados multidimensional.

Rica Estrutura de Dados Multidimensionais


Os arrays multidimensionais do Cach so chamados de globais. Os dados podem ser armazenados em uma global com qualquer quantidade de subscripts. Mais do que isso os subscripts no possuem um formato/tipo especco e podem conter qualquer espcie de dados. Um subscript poderia ser um nmero integral como 34 , enquanto outro pode ser um nome com signicado, como ItensDeLinha (LineItems) ainda que no mesmo nvel de subscript. Por exemplo, um aplicao de inventrio de estoque que fornece informaes sobre itens, tamanhos, cores e estampas pode ter uma estrutura como esta: ^Estoque(item,tamanho,cor,estampa) = quantidade Eis alguns exemplos de dados: ^Estoque(vestido verao,m,azul,oral)=3 Com esta estrutura, muito fcil determinar se h algum vestido tipo vero, no tamanho mdio (m), com cor azul e estampa oral e tudo isso simplesmente atravs do acesso quele ns de dados. Se uma cliente quer um vestido de vero tamanho mdio, mas no tem certeza sobre qual cor ou estampa deseja, fcil exibir uma lista de todos aqueles, passando por todos os ns de dado abaixo: ^Estoque(vestido verao,m). Neste exemplo, todos os ns de dados possuam uma forma similar (eles armazenavam quantidade), alm disso, todos estavam armazenados no mesmo nvel de subscript (quatro subscripts) com subscripts semelhantes (o terceiro subscript era sempre texto designando uma cor). Entretanto, no necessrio que sempre seja assim. Os ns de dados podem ter nmeros ou tipos diferentes de subscript e eles podem conter tipos diferentes de dados. Aqui est um exemplo mais complexo de global com dados de uma nota scal que possue tipos diversos de dados armazenados em nveis diferentes de subscript: ^NF(nf ^NF(nf ^NF(nf ^NF(nf ^NF(nf ^NF(nf ^NF(nf etc. #,Cliente) = Informacoes do Cliente #,Data) = Data da NF #,Itens) = Numero Itens da NF #,Itens,1,Partes) = Numero de Partes do Item 1 #,Itens,1,Quantidade) = Quantidade do Item 1 #,Itens,1,Preo) = Preco do Item 1 #,Itens,2,Partes) = Numero de Partes do Item 2

11

Captulo 2

Mltiplos Elementos de Dados Por N


Muitas vezes somente um nico elemento de dados armazenado em um n, tal como uma data ou quantidade, mas ocasionalmente, pode ser til armazenar mltiplos elementos de dados juntos em um nico n. Isto especialmente til quando h um conjunto de dados relacionados que so freqentemente acessados juntos. Isto tambm pode melhorar o desempenho, uma vez que requer menos acessos base de dados. Por exemplo, na nota scal acima, cada item inclua um nmero de partes, quantidade e preos, todos armazenados em ns separados, porm eles poderiam ser armazenados como uma lista de elementos em um nico n: ^NF(nf #,ItensDeLinha,item #). Para tornar isto simples, o Cach apresenta uma funo chamada $list(), que pode agregar mltiplos elementos de dados em uma seqncia de bytes de tamanho determinado e desagreg-los novamente em outro momento. Os elementos, por sua vez, podem conter sub-elementos, etc.

Bloqueio Lgico Promove Alta Concorrncia


Em sistemas com milhares de usurios, reduzir conitos entre processos concorrentes crtico para que se obtenha uma alta produtividade. Um dos maiores conitos entre transaes que tentam acessar os mesmos dados. Os processos do Cach no bloqueiam pginas de dados inteiras enquanto realizam atualizaes. Ao contrrio, uma vez que transaes precisam de freqente acesso ou modicaes para pequenas quantidades de dados, o bloqueio da base de dados no Cach feito em um nvel de lgica. Conitos de base de dados so reduzidos ainda mais atravs da utilizao de operaes atmicas de adio e subtrao, as quais no necessitam de bloqueio. (Estas operaes so especialmente teis no aumento de contadores utilizados para alocar nmeros de identicao e na modicao de contadores de estatsticas). Com Cach, transaes individuais rodam mais rpido, e mais transaes podem rodar ao mesmo tempo.

Dados de largura Varivel em Arrays Esparsos


Porque os dados no Cach so inerentemente de largura varivel e so armazenados em arrays esparsos, o Cach normalmente necessita menos da metade do espao requerido por um banco relacional. Alm de reduzir os requisitos de disco, o armazenamento de dados compactados melhora o desempenho, uma vez que mais dados podem ser lidos ou gravados com uma nica operao I/O (N.: operao de entrada-sada) e os dados podem serutilizados em memria cache de modo mais eciente.

Declaraes e Denies No So Necessrias


Os arrays multidimensionais do Cach no possuem um tipo/forma inerentes, ambos em seus dados e em seus subscripts. No necessria nenhuma declarao, denio ou alocaes de armazenamento. Dados de globais simplesmente so gerados conforme a informao inserida.

Namespaces
No Cach, os dados e cdigos so armazenados em arquivos de disco com o nome CACHE.DAT (somente um por diretrio). Cada um desses arquivos contm vrias globais (arrays multidimensionais). Dentro de um arquivo, o nome de cada global deve ser nico, entretanto, arquivos diferentes podem conter o mesmo nome de global. Pode-se pensar de forma liberal nestes arquivos como sendo bases de dados.
12

Ao invs de especicar qual arquivo de base de dados utilizar, cada processo do Cach usa um namespace para acessar os dados. Um namespace um mapa lgico que mapeia os nomes de arrays globais multidimensionais e codica para bases de dados. Se uma base de dados transferida de um drive ou de um computador para outro, s o mapa de namespace precisa ser atualizado. O aplicao em si continua sem mudanas. Normalmente, a no ser por alguma informao de sistema, todos os dados para um namespace so armazenados em uma nica base de dados. Contudo, os namespaces oferecem uma estrutura exvel que permite o mapeamento arbitrrio e, sendo assim, no incomum que um namespace mapeie o contedo de vrias bases de dados, inclusive algumas que estejam em outros computadores.

A VANTAGEM DO CACH
Desempenho: Ao utilizar modelo de dados multidimensional eciente com tcnicas de armazenamento disperso, ao invs de um labirinto complicado de tabelas bidimensionais, o acesso e a atualizao de dados so obtidos com menos operaes de I/O de disco. Menos I/O signica que os aplicaes rodam mais rpido. Escalabilidade: O modelo transacional de dados multidimensionais permite que aplicaes baseados em Cach tenham sua escala de uso ampliada para vrios milhares de clientes sem comprometer o alto desempenho. Isto porque o acesso a dados em um modelo multidimensional no signicativamente afetado pelo tamanho e complexidade da base de dados em comparao a modelos relacionais. As transaes podem acessar os dados de que necessitam sem realizar junes complicadas ou car pulando de tabela em tabela. O uso de locks pelo Cach para atualizaes, ao invs do bloqueio de pginas fsicas outra contribuio importante para a concomitncia. Do mesmo modo, outra contribuio importante para este m o sosticado caching de dados do Cach atravs de redes. Desenvolvimento Rpido: O desenvolvimento ocorre muito mais rpido com o Cach, pois a estrutura de dados oferece um armazenamento natural e de fcil entendimento a dados complexos, e no requere denies e declaraes detalhadas ou complicadas. O acesso direto a globais muito simples, permitindo a mesma sintaxe de linguagem utilizada no acesso a Arrays locais. Custo-Efetividade: Comparados a aplicaes relacionais de porte semelhante, os aplicaes baseados em Cach requerem signicativamente menos hardware e no necessitam de administradores de base de dados. A gesto do sistema e suas operaes so simples.

13

Captulo 2

ACESSO SQL
SQL a linguagem de consultas do Cach. Ela suportada por um conjunto completo de capacidades de banco de dados relacional incluindo DDL, transaes, integridade referencial, triggers, stored procedures e mais. O Cach suporta acesso atravs de ODBC e JDBC (usando um driver baseado em Java puro). Os comandos e consultas SQL tambm podem ser embutidos no Cach ObjectScript e dentro de mtodos de objetos. O SQL acessa dados visualizados na forma de tabelas com linhas e colunas. Como os dados do Cach so, na realidade, armazenados em estruturas multidimensionais ecientes, os aplicaes que utilizam SQL obtm melhor desempenho com o Cach do que com bases tradicionais de dados relacionais. Alm da sintaxe SQL padro, o Cach suporta vrias das extenses mais comumente utilizadas em outros bancos de dados. Sendo assim, muitos dos aplicaes baseados em SQL podem rodar no Cach sem modicaes especialmente aqueles escritos com ferramentas independentes de banco de dados. Entretanto, store procedure que sejam especcos de certos fornecedores demandaro algum trabalho e a InterSystems possui tradutores para auxiliar nesta tarefa. O Cach SQL inclui melhorias de objetos que tornam o cdigo SQL mais simples e intuitivo de se ler e escrever.

SQL TRADICIONAL
SELECT SC.NomeCompleto, SM.Descr, MS.Valor, SI.InvData, SI.InvNumero FROM VendaPrincipal MS, VendaItem SI, VendaProduto SP, VendaCliente SC, VendaMercado SM WHERE SI.VendaItemID *= MS.VendaItem AND SP.VendaProdutoID *= MS.Produto AND SC.VendaClienteID *= MS.Cliente AND SM.VendasMercadoID *=

SQL COM EXTENSO DE OBJETO


SELECT Cliente->NomeCompleto, Cliente->VendaMercado ->Descr, Valor, VendaItem->InvData, VendaItem ->InvNumero FROM VendaPrincipal WHERE Produto->Descr = Martelo

14

Acessando Bancos de Dados Relacionais com o Gateway Relacional do Cach O Gateway Relacional do Cach (Cach Relational Gateway) habilita o envio de uma requisio SQL originada no Cach a ser enviada para outro banco de dados (relacional) para processamento. Usando o Gateway, um aplicao do Cach pode recuperar e atualizar dados armazenados na maioria dos bancos de dados.
Gateway Relacional

Alm disso, se as classes das bases de dados do Cach estiverem compiladas utilizando a opo CachSQLStorage, o Gateway permite aos aplicaes Cach utilizar bases de dados relacionais de forma transparente. Os aplicaes, no entanto, iro rodar mais rpido e sero mais escalonveis se acessarem a base de dados ps-relacional do Cach.

A VANTAGEM DO CACH
SQL Mais Rpido: Aplicaes relacionais podem desfrutar de uma melhora de desempenho signicativa ao utilizarem o Cach SQL para acessar na eciente base de dados ps-relacional do Cach. Desenvolvimento Mais Rpido: No Cach, consultas SQL podem ser escritas de forma mais intuitiva, utilizando menos linhas de cdigo. Compatibilidade com Aplicaes Relacionais e Geradores de Relatrio: Os drivers ODBC e JDBC nativos do Cach oferecem acesso de alto desempenho base de dados do Cach para aplicaes relacionais e ferramentas de relatrio. O Gateway Relacional do Cach possibilita que aplicaes Cach utilizem SQL para acessar outros bancos de dados (relacionais).

15

Captulo 2

OBJETOS DO CACH
O modelo de objeto do Cach baseado no padro ODMG. O Cach suporta um conjunto completo de conceitos de programao de objetos, incluindo encapsulamento, objetos embutidos, herana mltipla, polimorsmo e colees. As linguagens integradas do Cach manipulam estes objetos diretamente. O Cach tambm exibe as classes Cach como classes Java, EJB, COM, .NET, e C++. As classes do Cach tambm podem ser automaticamente habilitadas para suportar XML e SOAP atravs de um simples clique na IDE do Studio. Como resultado, os objetos Cach esto prontamente disponveis para todas as tecnologias objeto usadas mais comumente. H diversas maneiras para um programa fora do Servidor de Aplicaes Cach acessar as classes Cach: 1. Qualquer classe Cach pode ser projetada como uma classe na linguagem nativa. Quando um programa Java, C++, C# ou outro qualquer acessa um objeto Cach, ele ativa um `template da classe na linguagem nativa. O `template daquela classe (que gerado automaticamente pelo Cach) se comunica com o Servidor de Aplicaes Cach para iniciar mtodos no servidor e para acessar ou modicar propriedades. A congurao para objetos do Cach ca armazenada no Servidor de Aplicaes Cach. Para acelerar a execuo e reduzir o nmero de mensagens, uma cpia dos dados do objeto memorizada nas atualizaes do cliente e de piggybacks pelo Cach, juntamente, quando possvel, a outras mensagens. 2. Uma projeo mais leve pode ser utilizada para classes de base de dados nas quais a classe do `template de linguagem nativa acessa diretamente a base sem passar pelo Servidor de Aplicaes. O estado do objeto no salvo no Servidor de Aplicaes; as propriedades na memria s so mantidas no cliente. Esta abordagem oferece uma produtividade signicativamente mais alta, mas com menos funcionalidade, j que mtodos de instncia lateral de classes do Servidor (isto , mtodos que precisam de acesso s propriedades na memria) no podem ser iniciados. 3. A tecnologia Jalapeo da InterSystems permite que desenvolvedores Java criem primeiramente uma classe de base de dados em Java, como em qualquer outro POJO (Plain Old Java Object), na IDE de sua preferncia, e, a partir de ento, fazer com que o Cach gere automaticamente um esquema da base de dados e classe do Cach correspondente. Usando esta abordagem, a classe em Java no alterada e o aplicao continua acessando suas propriedades e mtodos. O Cach disponibiliza uma biblioteca de classes (ObjectManager) com uma API que utilizada para armazenar e recuperar objetos de base de dados e gerar consultas. Com cada uma dessas trs abordagens, o objeto aparenta ser algo local para o programa do usurio. O Cach gerencia as comunicaes de forma transparente atravs de call-in ou de TCP. O `template em Java e sua biblioteca de suporte so completamente baseados em Java e podem, portanto, ser utilizados atravs da web ou em outros dispositivos especcos de Java.

16

Geradores de Mtodos
O Cach inclui vrias tecnologias avanadas de objeto que so exclusivas uma das quais chamada geradores de mtodos generators - Um gerador de mtodos um mtodo executado no momento da compilao, gerando um cdigo que pode ser rodado quando o programa executado. Um gerador de mtodos tem acesso s denies de classe, inclusive denies e parmetros de propriedades e mtodos, permitindo a ele gerar um mtodo que seja customizado para a classe. Geradores de Mtodo so particularmente ecientes se combinados com herana mltipla a funcionalidade pode ser denida em uma classe de herana mltipla que se customiza para a subclasse.

A VANTAGEM DO CACH
O Cach completamente habilitado para objetos, oferecendo todo o poder da tecnologia de objetos a desenvolvedores de aplicaes de processamento transacional de alto desempenho. Desenvolvimento Rpido de Aplicaes: A tecnologia de objetos uma ferramenta poderosa no aumento da produtividade de programadores. Os desenvolvedores podem pensar e usar objetos mesmo os extremamente complexos de modos simples e realista, acelerando assim, o processo de desenvolvimento de aplicaes. Alm disso, a modulao inata e a interoperabilidade dos objetos simplicam a manuteno dos aplicaes, deixando os programadores alavancarem seus trabalhos em vrios projetos. Desenvolvimento Natural: Objetos de bases de dados aparecem na forma de objetos nativos linguagem sendo utilizada pelo desenvolvedor. No h necessidade de escrever cdigos tediosos ou decompor objetos em linhas e colunas e reagrup-los mais tarde.

17

Captulo 2

BUSCA DE TEXTO COM RECONHECIMETO DE PALAVRAS


O Cach suporta buscas livres de texto, nas quais as consultas podem procurar por texto contendo palavras de interesse, mesmo que as palavras existentes no texto sejam variaes das palavras pesquisadas. Para utilizar a busca com reconhecimento de palavras, o campo de texto deve ser indexado. Isso ocorre seguindo os seguintes passos: 1. Inicialmente, palavras distintas no campo de texto so identicadas. 2. Palavras que sejam to comuns a ponto de oferecer pouco valor de pesquisa so removidas (ex. palavras como o/a ou para so removidas). 3. As palavras restantes so reduzidas s suas razes (ex.: buscando se torna buscar e ores se torna or). 4. As palavras resultantes so indexadas. Em buscas com reconhecimento de palavras, o texto pesquisado geralmente primeiro processado de forma semelhante, e ento, o ndice resultante utilizado para produzir combinaes.

Word-Aware Indexing

I am searching for some text

am

searching

for

some

text

Quebra em palavras

X X

am

searching

for

some

text

Eliminao de rudo

search

for

Reduo em razes

18

ndices de reconhecimento de palavras so mantidos por atualizaes de objeto e de SQL. A busca mais comumente realizada atravs de consultas SQL, embora cdigos procedurais possam usar os ndices diretamente. Tais consultas podem incluir lgicas E/OU para pesquisas mais sosticadas. Algoritmos de reconhecimento de palavras so especcos da lngua natural que est sendo utilizada. A busca com reconhecimento de palavras est disponvel para um amplo leque de lnguas naturais, incluindo alemo, espanhol, francs, ingls, italiano, japons e portugus. Outras lnguas esto sendo adicionadas. Busca com Reconhecimento de Palavras

Where Descrio %Contm (pesquisar)

O Cach encontra pesquisar, pesquisado, pesquisando,

Where Descrio %Contm (`close)

O Cach encontra `close, `closed, ... Mas no `closetou `disclose

A VANTAGEM DO CACH
Poderosas Buscas de Textos No Estruturadas: Textos no estruturados, como anotaes mdicas ou documentos, podem ser facilmente pesquisadzos atravs de palavraschave ou palavras relacionadas. Pesquisas Extremamente Rpidas: A unio de reconhecimento de palavras e da tecnologia bit-map do Cach torna possvel a realizao de buscas de quantidades massivas de texto em uma frao de segundos.

19

Captulo 2

INDEXAO DE BIT-MAP TRANSACIONAL


O Cach oferece de forma exclusiva uma indexao de Bit-Map Transacional, a qual pode melhorar de forma radical o desempenho de consultas complexas, resultando em um desempenho rpido para consultas a datawarehouse. ndice Tradicional de Propriedade: Tipo de Animal de Estimao O desempenho do banco de dados depende de forma crtica da existncia de ndices nas propriedades que so freqentemente usadas nas buscas realizadas na base de dados. A maior parte dos bancos de dados usa ndices que, para cada valor possvel da coluna ou da propriedade, mantm uma lista das identicaes para as linhas/objetos que possuem aquele valor. Um ndice bit-map outro tipo de ndice. ndices bit-map contm um bitmap para cada valor possvel de uma coluna/ propriedade, com um bit para cada linha/objeto que armazenado. Um valor de bit igual a 1 signica que a linha/objeto tem aquele valor para a coluna/propriedade. A vantagem de ndices bit-map que consultas complexas podem ser processadas realizando-se operaes de tipo booleano (E, OU) nos ndices determinando de forma eciente exatamente quais instncias (linhas) se encaixam nas condies de consulta sem a necessidade de pesquisar toda a base de dados. ndices bit-map podem com frequncia impulsionar o tempo de resposta de consultas que buscam grandes volumes de dados por um fator 100 vezes maior. Os bit-maps padecem tradicionalmente de dois problemas: a) eles podem ser penosamente devagar para se atualizar em bases de dados relacionais, e b) eles podem ocupar espao demais de armazenamento. Assim, eles so raramente utilizados em aplicaes de processamento transacionais. O Cach introduziu uma nova tecnologia a Indexao de Bit-Map Transacional que alavanca estruturas de dados multidimensionais para eliminar estes dois problemas. Atualizar estes bit-maps normalmente mais rpido do que os ndices tradicionais, e eles utilizam tcnicas sosticadas de compresso para reduzir radicalmente o espao de armazenagem necessrio. O Cach tambm suporta tcnicas sosticadas de bit-slicing (fatiamento de bits). Como resultado, tem-se bit-maps ultra-rpidos, que podem freqentemente ser utilizados para pesquisar milhes de registros em uma frao de segundo em uma base de dados online de processamento de transaes. Business intelligence e aplicaes de datawarehousing podem trabalhar com dados reais. O Cach oferece tanto ndices bit-map tradicionais, quanto transacionais. Alm disso, o Cach suporta ndices multi-coluna. Por exemplo, um ndice de Estado e ModeloDeCarro pode identicar rapidamente todos que possuem um modelo especco de carro registrado em um estado especco.

ndice Bit-Map de Propriedade: Cor de Cabelo

20

A VANTAGEM DO CACH
Consultas Radicalmente Mais Rpidas: Utilizando as tcnicas de bit-map transacional, os usurios podem realizar buscas ultra-velozes de grandes bases de dados muitas vezes, milhes de dados podem ser pesquisados em uma frao de segundo em um sistema utilizado primordialmente para processamento de transaes. Anlise de Dados em Tempo Real: O ndice Bit-Map Transacional permite a anlise de dados em tempo real nos dados disponveis mais recentes. Menor Custo: No h necessidade de um segundo computador dedicado ao suporte de decises e ao datawarehouse. To pouco h a necessidade de operaes dirias para se transferir os dados a um segundo sistema deste tipo ou de administradores de base de dados para dar suporte a isto. Escalabilidade: A velocidade de bit-maps transacionais otimiza a possibilidade de se montar sistemas com quantidades enormes de dados que precisam ser mantidos e pesquisados de forma peridica.

21

Captulo 2

ENTERPRISE CACH PROTOCOL PARA SISTEMAS DISTRIBUDOS Desempenho com Escalabilidade em Sistemas Distribudos
O Enterprise Cache Protocol ECP uma tecnologia de desempenho extremamente performtica e com escalabilidade que permite que computadores, em um sistema distribudo, utilizem as bases de dados uns dos outros. O uso do ECP no requer mudanas de aplicaes estes ltimos simplesmente tratam as bases de dados como se fossem bases locais. O ECP funciona assim: cada Servidor de Aplicaes Cach inclui seu prprio Servidor de Dados Cach, que pode operar em dados residentes em seus prprios sistemas de disco ou em blocos que foram transferidos a ele a partir de outro Servidor de Dados Cach pelo ECP. Quando um cliente solicita uma informao mantida num Servidor de Dados remoto, o Servidor de Aplicaes tenta satisfazer a solicitao a partir do seu Cach local. Caso no tenha sucesso, ele solicitar a informao necessria ao Servidor de Dados remoto. A resposta incluir o(s) bloco(s) da base de dados onde aquela informao foi armazenada. Estes blocos Enterprise Cach Protocol so armazenados no cache do Servidor de Aplicaes, onde eles cam disponveis para todos os aplicaes rodando naquele Servidor. O ECP gerencia automaticamente a consistncia do cache atravs da rede e propaga as mudanas de volta para os Servidores de Dados. Os benefcios de desempenho e escalabilidade obtidos com o ECP so muitos. Os clientes desfrutam de respostas rpidas, pois se utilizam com freqncia de dados armazenados em cache localmente. E o caching reduz em muito o trco de rede entre a base de dados e os servidores de aplicaes, permitindo que qualquer rede possa suportar muito mais servidores e clientes. Contudo, se por um lado a maioria dos aplicaes se benecia do ECP, por outro, h alguns cujas arquiteturas no suportam prontamente uma escalabilidade deste porte. A realizao de um benchmarking recomendada,e, geralmente, alguns ajustes simples podem aumentar o desempenho.

22

A VANTAGEM DO CACH
Escalabilidade Massiva: O Enterprise Cache Protocol do Cach permite o acrscimo de servidores de aplicaes conforme o crescimento de uso. Cada um destes servidores usa a base de dados como se ela fosse uma base local. Se a produtividade de disco tornar-se um gargalo, mais Servidores de Dados podem ser adicionados, sendo que a base de dados ser dividida em parties lgicas. Maior Disponibilidade: Como os usurios esto espalhados entre mltiplos computadores, a falha de um Servidor de Aplicaes afeta um nmero menor de usurios. Caso um Servidor de Dados trave e tenha que ser reinicializado, ou caso haja uma interrupo temporria na rede, os Servidores de Aplicao podem continuar o processamento sem qualquer efeito perceptvel alm de uma pequena pausa. Congurar Servidores de Dados como um cluster de hardware para a preveno de falhas em servidores de dados de reserva pode aumentar a disponibilidade de forma signicativa. Menores Custos: Uma grande quantidade de computadores de baixo custo pode ser combinada para formar um sistema especialmente forte que suporta processamento pesado grid computing.

Fcil de Usar Sem Modicao de Aplicaes


O uso do ECP invisvel para as aplicaes. Aquelas que so escritas para rodar em um nico servidor rodam em um ambiente de servidores mltiplos sem alterao. Para utilizar o ECP, o gerente do sistema simplesmente identica um ou mais Servidor de Dados para um Servidor de Aplicaes. A partir de ento, mapeia-se o Namespace para indicar que as referncias a algumas ou a todas as globais (ou a partes de globais) se referem quele Servidor de Dados remoto.

Uso Invisvel: Os aplicaes no precisam ser especicamente escritos para o ECP aplicaes Cach tomam vantagem do ECP de forma automtica, sem mudanas.

Flexibilidade de Congurao
Cada sistema Cach pode funcionar tanto quanto um Servidor de Aplicaes, quanto como um Servidor de Dados para outros sistemas. O ECP suporta qualquer combinao de Servidores de Aplicaes e de Dados, bem como qualquer topologia ponto-a-ponto de at 255 sistemas.

23

Captulo 2

TOLERNCIA A ERROS
Mesmo nos ambientes mais rigorosos, eventos inesperados podem ocorrer falha de hardware, falta de energia, ou algo mais severo quanto inundaes ou outro desastre natural - hospitais, telecomunicaes e outras operaes crticas no podem, no entanto, se dar ao luxo de estar fora do ar. Para satisfazer a padres to exigentes, o Cach foi projetado para se recuperar de interrupes de forma elegante, oferecendo uma variedade de prevenes de falha e outras opes para reduzir ou eliminar o impacto aos usurios. O Cach Write-Image Journaling e outros recursos de integridade garantem a integridade da base de dados na maioria das falhas de hardware inclusive em caso de falta de energia , permitindo uma recuperao rpida, ao mesmo tempo em que minimiza o impacto ao usurio. O Cach tambm oferece opes de congurao avanada de alta disponibilidade para reduzir ainda mais ou eliminar o impacto ao usurio, incluindo: Fail-over Clusters Shadow Servers Enterprise Cach Protocol distrbuido

Fail-over Clusters
Ao utilizar um hardware com cluster fail-over, os servidores de dados compartilham acesso aos mesmos discos, embora somente um deles esteja rodando o Cach em um determinado momento. Caso o servidor ativo falhe, o Cach automaticamente inicializado em outro servidor que passa a ser responsvel pelo processamento. Os usurios podem se logar imediatamente no novo servidor.

Shadow Servers
Os Shadow Servers do Cach so, na verdade, servidores reserva que esto conectados via TCP. O servidor primrio envia constantemente um registro lgico de atualizaes da base de dados para o Shadow Server, este que sempre possui uma cpia quase-atual da base de dados. A mudana para o Shadow Server menos automatizada do que para os fail-over clusters, mas a sobrevivncia melhorada, pois o hardware no est conectado sicamente o Shadow Server pode estar at mesmo em outro local. Um Shadow Server pode ser mesclado a um fail-over Cluster, com propsito de melhorar ainda mais a tolerncia a falhas.

ECP Distribudo
Para sistemas distribudos utilizando ECP, na ocorrncia de uma interrupo temporria de rede ou de um travamento do Servidor de Dados e reinicializao, os servidores de aplicao tentam se reconectar. Caso a reconexo seja bem sucedida dentro de um prazo especico de tempo, os Servidores de Aplicaes reenviam qualquer solicitao no completada e as operaes continuam sem efeitos perceptveis para o usurio, alm de uma ligeira pausa. Se um Servidor de Aplicaes ECP falhar, somente os usurios que estejam no Servidor de Aplicaes com problema sero afetados. Eles podero ento se logar em outro Servidor de Aplicaes para continuar trabalhando.

24

Um Servidor de Dados ECP freqentemente congurado como um Fail-over Cluster. Se o Servidor de Dados primrio travar, o servidor reserva assume as funes do Servidor de Dados que falhou, permitindo operaes sem interrupes, com o usurio passando apenas por uma leve pausa. Um Cluster ECP Fail-Over

A VANTAGEM DO CACH
Bullet-Proof: O Cach WriteImage Journaling e outros recursos de integridade garantem, na maioria dos tipos de falha de hardware, a integridade da base de dados inclusive em casos de falta de energia. Conguraes de Tolerncia a Falhas de Alta Disponibilidade: O uso dos Shadow Servers do Cach, do ECP e/ou de Fail-over Clusters permite a recuperao rpida em casos de falha, ao mesmo tempo em que minimiza, ou em alguns casos elimina, seu impacto no usurio.

25

Captulo 2

26

MODELO DE SEGURANA
O Cach possui um modelo de segurana moderno, desenhado para dar suporte ao desenvolvimento de aplicaes de trs maneiras:

Protegendo o ambiente Cach propriamente dito. Tornando fcil aos desenvolvedores integrar recursos de segurana em seus aplicaes. Garantindo que o Cach funcione efetivamente e sem comprometer as tecnologias de segurana do ambiente operacional. O Cach fornece estas capacidades de segurana ao mesmo tempo em que minimiza o nus no desempenho de aplicaes.

Usurios, Pers, Recursos e Privilgios


Existe uma gama de recursos (tais como bases de dados, aplicaes e servios) que os usurios devem receber permisso (como LER, GRAVAR ou USAR) do Administrador de Segurana para poder utiliz-los. Alm dos recursos denidos no sistema, o Administrador de Segurana pode criar recursos especcos de aplicaes e utilizar os mesmos mecanismos para conceder e checar permisses. Para simplicar, aos usurios normalmente so atribudos um ou mais pers (ex. TecDeLab ou Salrios). O Administrador de Segurana concede ento, privilgios para um recurso especco queles pers e no a usurios individuais. O usurio obtm todos os privilgios concedidos aos pers que foram atribudos a ele. Cada processo possui um nome de usurio (username) associado, mesmo que seja somente `UnkownUser. O nome de usurio estabelecido durante a autenticao. Um exemplo simples de autenticao a entrada de um username e senha por um usurio no sistema, e a checagem realizada por este ltimo para conrmar que a senha est correta. Aps a autenticao, o username atribudo ao processo e as permisses associadas quele nome de usurio so concedidas. (Um usurio no necessariamente um ser humano. Ele poderia ser, por exemplo, um dispositivo de medio gerando dados ou um aplicao rodando em outro sistema que se conecta ao Cach). Se o usurio no passa pelo processo de autenticao , ele recebe o nome de `UnkownUser, o qual s concede quele processo as permisses atribudas a qualquer usurio. A conexo ao Cach controlada por um conjunto de Servios. Cada Servio especica se pblico (o que signica que todos podem utiliz-lo) ou se requere autenticao e, passados os testes de vericao desta, se o usurio possui os privilgios de acesso necessrios. Os Servios podem ainda ser desabilitados individualmente, de modo que o acesso seja negado a todos. A atribuio e gerenciamento de privilgios normalmente feita pelo Portal de Administrao do Cach.

27

Captulo 2

Pers Atribudos por Aplicaes


Muitas vezes til que um usurio receba privilgios adicionais de forma temporria, ao invs de t-los atribudos de forma permanente. Por exemplo, ao invs do Administrador de Segurana conceder um amplo conjunto de privilgios a um usurio, tal como a capacidade de acessar e modicar a base de dados de pagamento de salrios, ele poderia conceder ao usurio apenas o privilgio de acesso quele aplicao. Este, por sua vez, poderia ento elevar os privilgios de usurio enquanto est sendo utilizado. Para conseguir elevar um usurio, pers podem ser atribudos s aplicaes. Quando aquela aplicao acessada, o usurio adquire pers adicionais temporariamente. Os pers adicionais podem ser simplesmente uma lista adquirida por todos aqueles autorizados a utilizar a aplicao, ou podem tambm ser mais customizados, baseados nos pers que o usurio j possui. Este recurso particularmente til para aplicaes baseados em browser usando o CSP (Cach Server Pages). Com o CSP, uma parte de qualquer URL especica um nome de aplicao. Aps a autenticao e a vericao de que o usurio est autorizado a usar aquele aplicao CSP, o usurio recebe pers adicionais temporrios designados quele aplicao enquanto persistir a solicitao daquela pgina. O Administrador de Segurana pode ainda designar rotinas especcas como sendo capazes de realizar elevao de perl para receber pers adicionais de aplicaes especcos (aps passarem por testes de segurana especicados pelo usurio). Esta facilidade controlada rigidamente e por este mecanismo que aplicaes no CSP realizam a elevao de perl.

Autenticao
O Cach suporta vrios nveis de autenticao, variando de nenhuma autenticao ao uso de senhas, at o uso de protocolo Kerberos para autenticar a identidade de usurios. O Kerberos fornece uma autenticao muito forte e possui a vantagem de ser rpido, ter escalabilidade e ser fcil de utilizar. Com o Kerberos, as senhas nunca so transmitidas atravs da rede, o que oferece uma medida extra de segurana. O Cach suporta a implementao de single sign-on.

28

Criptograa da Base de Dados


O Cach suporta duas formas de criptograa da base de dados: O Administrador de Segurana pode designar um ou mais arquivos CACHE.DAT (bases de dados) para que sejam criptografados no disco. Tudo contido nestes arquivos ento criptografado. Desenvolvedores podem usar funes de sistema para criptografar/descriptografar dados, os quais podem ento ser armazenados na base de dados ou ser transmitidos. Este recurso pode ser utilizado para criptografar dados sensveis para que sejam protegidos de outros usurios que possuem acesso de leitura base de dados, mas no possuem a chave (de criptograa). Por denio, o Cach criptografa dados com uma implantao do Padro de Criptograa Avanada (Advanced Encryption Standard, ou AES), um algoritmo simtrico que suporta chaves de 128, 192 ou 256 bits. As chaves de criptograa so guardadas em um local protegido da memria. O Cach oferece capacidades completas de gerenciamento de chaves. O arquivo de journal tambm pode ser criptografado.

Auditoria
Muitos aplicaes, especialmente aqueles que devem satisfazer as regulamentaes governamentais, tais como TISS (Brasil), HIPAA ou Sarbanes-Oxley (EUA), precisam oferecer auditoria segura. No Cach, todos os eventos de sistema e de aplicaes so registrados em um log que s aceita adies ao registro existente (append-only), e o qual compatvel com qualquer consulta ou ferramenta de relatrios que utilize SQL.

29

Captulo 3

Captulo 3: Servidor de Aplicaes Cach

O servidor de Aplicaes Cach oferece capacidades avanadas de programao de objetos, fornece caching sosticado de dados e integra acesso fcil a uma variedade de tecnologias. O Servidor de Aplicaes Cach torna possvel desenvolver aplicaes sosticados de forma rpida, bem como oper-los com alto desempenho alm de suport-los com facilidade. Mais especicamente, o Servidor de Aplicaes Cach oferece: Mquina Virtual Cach que roda trs linguagens de desenvolvimento tipo script Cach ObjectScript, Cach Basic, e Cach MVBasic. Acesso aos Servidores de Dados Multidimensionais do Cach no mesmo computador ou em outras mquinas com roteamento invisvel. Software de conectividade com client-side caching para permitir o acesso rpido a Objetos Cach a partir de todas as tecnologias utilizadas mais comumente, incluindo Java, C++, C#, COM, .NET e Delphi. O Cach automaticamente realiza o networking entre o cliente e o Servidor de Aplicaes. Compatibilidade com SOAP e XML.

Acesso SQL utilizando ODBC e JDBC, incluindo caching sosticado no cliente e no servidor de aplicaes para alto desempenho. Acesso a bancos de dados relacionais. Cach Server Pages para aplicaes web fceis de programar e de alta performance. Cach Studio uma IDE para desenvolver e depurar aplicaes rapidamente com o Cach.

O cdigo para as Linguagens de Script armazenado na base de dados e pode ser modicado online, com as mudanas sendo propagadas automaticamente para todos os servidores de aplicaes.

MQUINA VIRTUAL CACH E LINGUAGENS DE SCRIPT


No ncleo do Servidor de Aplicaes Cach est a Mquina Virtual Cach, que extremamente veloz e suporta as linguagens script do Cach. O Cach ObjectScript uma linguagem poderosa e de fcil aprendizado, com estrutura de dados extremamente exvel. O Cach Basic oferece um modo fcil para que programadores de Visual Basic comecem a utilizar o Cach. De forma semelhante ao VBScript, o Cach Basic suporta objetos e expandido para ter acesso direto aos Arrays Multidimensionais Cach. O Cach MVBasic a variante da linguagem de programao Basic utilizada em aplicaes MultiValue (Pick). O MVBasic foi expandido para ter suporte a objetos e ter acesso direto aos Arrays Multidimensionais Cach. O acesso base de dados dentro da Mquina Virtual Cach altamente otimizado. Cada processo de usurio possui acesso direto s estruturas de dados multidimensionais por meio de chamadas memria compartilhada, a qual acessa uma base de dados cache compartilhada. Todas as demais tecnologias (Java, C++, ODBC, JDBC, etc.) se conectam atravs da Mquina Virtual Cach para acessar a base de dados.

30

Interoperabilidade Completa
Como o Cach ObjectScript, o Basic e o MVBasic esto todos instalados na mesma Mquina Virtual Cach, eles possuem interoperabilidade completa: Qualquer mtodo de objeto pode ser escrito em qualquer linguagem a mesma classe pode usar todas as trs linguagens. O uso das funes de cada uma das linguagens pode acessar um cdigo escrito nas demais linguagens. Eles compartilham variveis, Arrays e objetos.

A VANTAGEM DO CACH
Desenvolvimento Rpido de Aplicaes: O desenvolvimento de aplicaes complexas com o Cach ObjectScript radicalmente mais rpido do que com qualquer outra grande linguagem muitas vezes de 10 a 100 vezes mais rpido. Mais rpido signica dizer que os projetos tm uma chance melhor de sucesso com menos programadores e podem ser ajustados mais rapidamente, conforme as aplicaes necessitem de modicaes. Curva de Aprendizado Mais Curta: O Basic talvez a linguagem de computador mais conhecida do mundo. Desenvolvedores que conhecem Visual Basic podem comear a escrever cdigo em Basic de forma instantnea o modelo de objeto Cach aprendido facilmente. Mais Rpido e com Mais Escalabilidade: A Mquina Virtual Cach, com seu acesso direto base de dados, oferece aplicaes mais rpidas que podem ter seu uso ampliado a dezenas de milhares de usurios utilizando hardware de baixo custo. Flexibilidade: O cdigo que roda na Mquina Virtual Cach pode rodar em outros hardwares e em outros sistemas operacionais sem mudanas. O cdigo armazenado na base de dados e automaticamente propagado para os Servidores de Aplicaes.

Desenvolvimento Rpido/Disponibilizao Flexvel


Os programadores podem, em quase todos os casos, desenvolverem aplicaes mais rapidamente, sendo que estes aplicaes rodaro signicativamente mais rpidos e com maior escalabilidade se a maior parte possvel do cdigo for escrita nestas linguagens de programao (o que permite que eles rodem na Mquina Virtual Cach). Alm disso, tal cdigo no requere mudanas na troca de hardware ou de sistemas operacionais. O Cach lida com as diferenas de hardware e de sistema operacional de forma automtica.

Linguagens Script

31

Captulo 3

CACH OBJECTSCRIPT
O Cach ObjectScript uma poderosa linguagem de programao orientada a objetos e desenhada para permitir o desenvolvimento rpido de aplicaes de base de dados. Aqui esto algumas das principais caractersticas da linguagem.

Estrutura Geral
O Cach ObjectScript orientado por comandos, e tem portanto, uma sintaxe do tipo: set x=a+b do rotacionar(a,3) if (x>3) H um conjunto de funes integradas do sistema que so especialmente ecientes na manipulao de textos. Todos os nomes destas funes sempre se iniciam por um nico caractere $ para distingui-los dos nomes de variveis e de Arrays Por exemplo: $extract(string,from,to) // obter um conjunto de caracteres de uma seqncia $length(string) // determinar o comprimento de uma seqncia As expresses utilizam precedncia de operao da esquerda para direita assim como na maioria das calculadoras portteis, exceto nos casos em que os parnteses alteram a ordem de avaliao.

Armazenamento Flexvel de Dados


Uma das caractersticas mais exclusivas do Cach ObjectScript sua armazenagem altamente exvel e dinmica de dados. Os dados podem se armazenados em: Propriedades de objetos. Variveis. Arrays esparsos multidimensionais, que permitem todo tipo de dados para os subscripts. Arquivos de base de dados (globais), que so Arrays esparsos multidimensionais.

Com raras excees, qualquer lugar da linguagem onde uma varivel possa ser inserida, tambm permite a utilizao de um array uma propriedade de objeto ou uma referncia global. Na maioria das linguagens de informtica, os tipos so extenses de conceitos de armazenamento de hardware (interger,oat,char,etc.) Entretanto, o Cach ObjectScript tem a losoa de que seres-humanos no pensam utilizando estes tipos de armazenamento, e que estes tipos infocntricos simplesmente impedem o desenvolvimento rpido de aplicaes. A necessidade de utilizar declaraes e armaes de dimenso introduz bem mais erros do que ajuda a prevenir (ex. erros do tipo extrapolao de 2 bytes integral, ou quando uma seqncia extrapola sua alocao de memria e corrompe outro armazenamento). Contudo, a digitao de objetos, tais como Pessoa, Nota Fiscal ou Animal, vista como sendo altamente valiosa e consistente com o modo de pensar dos seres-humanos. Assim, no Cach ObjectScript, as propriedades de objeto so fortemente tipicadas, mas os outros trs tipos de armazenamento (variveis, Arrays e ns de globais) so entidades completamente polimrcas e sem um tipo especial, que no precisam ser declaradas ou denidas. Eles simplesmente passam a existir conforme so utilizados e se moldam s necessidades de dados daquilo que estejam armazenando e da forma como esto sendo utilizados em uma expresso. Mesmo Arrays no requerem nenhuma especicao de tamanho, dimenso ou tipo de subscripts/dados. Por exemplo, um desenvolvedor pode criar um Array chamado Pessoa simplesmente atribuindo: Set Pessoa (Silva, Joo)= Eu sou uma pessoa boa

32

Neste exemplo, os dados foram armazenados num Array bidimensional utilizando dados seqenciais para os subscripts. Outros mdulos de dados neste Array poderiam ter um nmero diferente de dimenses e poderiam misturar seqncia, integrais ou outro tipo de dados para os subscripts. Por exemplo, podem-se armazenar dados em: abc(3) abc(3,-45.6,Sim) abc(Contar) todos no mesmo Array

Acesso Direto Base de Dados


Uma referncia base de dados (uma referncia global) essencialmente uma referncia de Array multidimensional precedida pelo caractere circunexo ^. Este caractere indica que se trata de uma referncia de dados armazenados na base ao invs de dados privados de processos temporrios. Cada um destes Arrays de base de dados chamado de global. Assim como no caso de Arrays multidimensionais e variveis, no necessria nenhuma declarao ou denio ou reserva de espao de armazenamento para acessar ou guardar os dados na base de dados; dados em globais simplesmente passam a existir conforme os dados so armazenados. Por exemplo, para se armazenar dados na base, pode-se escrever: set ^Pessoa(Silva,Joo)=Eu sou uma pessoa muito boa E mais tarde, recuperar-se o cdigo conforme: set x=^Pessoa(Silva,Joo) O programador tem total exibilidade sobre como estruturar estes Arrays de dados em globais. (vide o Modelo de Dados Multidimensionais).

Referncias de Objetos
Os objetos Cach implementam o modelo de dados ODMG com poderosas extenses. No Cach ObjectScript, uma referncia a objetos utilizada para se acessar um objeto. (uma oref geralmente uma varivel cujos valores especicam qual objeto na memria se est fazendo referncia). A oref seguida por um ponto e, a seguir, pelo nome de uma propriedade ou mtodo. Referncias de objetos podem ser utilizadas onde quer que se possa usar uma expresso. Por exemplo: set nome=pessoa.Nome // pessoa a varivel cujo valor uma oref // o nome da pessoa colocado na varivel nome se (pessoa.Idade>x) // veja se a idade da pessoa maior que x set dinheiro=nf.Total() // Total() um mtodo que calcula a soma de // todas as notas scais (nf) de itens de linha Mtodos tambm podem ser executados atravs de um comando tipo DO quando nenhum valor resultante necessrio. Por exemplo: do parte.Incremento() // Incremento() um mtodo, cujo valor de // retorno, se houver, no interessa A oref no a mesma coisa que um identicador (ID) de objeto da base de dados; ela utilizada para recuperar e armazenar um objeto da base de dados. Uma vez estando na memria, o objeto recebe um valor oref reutilizvel, que ento usado para acessar os dados do objeto. Na prxima vez que aquele mesmo objeto da base de dados for trazido memria ele provavelmente receber um valor oref diferente.
33

Captulo 3

Acesso HTML e SQL


HTML para aplicaes Web e SQL podem ser embutidos no cdigo Cach ObjectScript.

Cdigo de Chamada
Em algumas linguagens de objeto, todo o cdigo precisa ser parte de algum mtodo. Esta restrio no existe com o Cach Object Script o cdigo pode ser chamado diretamente ou pode ser chamado atravs de sintaxe de objeto. O cdigo normalmente chamado utilizando um comando do tipo DO.do rotacionar(a,3) Cdigo que resulte em um valor tambm pode ser chamado na forma de uma funo. Por exemplo: set x=a+$$insert(3,y) Chama o procedimento ou sub-rotina insert, escrito por um programador. Um cdigo pode ser tambm chamado na forma de um mtodo de objeto. set dinheiro=nf.Total() // Total() d o valor total das notas scais (nf) parte.Incremento() // Incremento() um mtodo, cujo valor, // se houver, no interessa Tanto a chamada por valor quanto a chamada por referncia so suportadas por parmetros.

34

Rotinas O cdigo do Cach ObjectScript fundamentalmente organizado em um conjunto de rotinas. Cada rotina (normalmente at 32KB em tamanho) atmica, isto , pode ser editada, armazenada e compilada de forma independente. As rotinas so conectadas de forma dinmica em tempo de execuo no h um passo extra separado da ligao de rotinas para o programador. O cdigo de uma rotina armazenado na base de dados, assim, rotinas podem ser paginadas de forma dinmica em toda a rede, ao invs de terem de ser instaladas em cada computador. Dentro de uma rotina, o cdigo organizado na forma de um conjunto de procedimentos e ou sub-rotinas. (Um mtodo de objeto um procedimento, mas acessado com uma sintaxe diferente). Quando se solicita um cdigo que est dentro da mesma rotina, somente o nome do procedimento ou da sub-rotina necessrio. Caso contrrio, o nome da rotina deve vir junto. do transferir() // chama transferir na mesma rotinado total^nf() // chama total na rotina nf (nota scal) Um procedimento (ou sub-rotina) que tenha um valor resultante de interesse deve ser solicitado utilizando a sintaxe de funo $$ set x=$$total^nf() // chama o mesmo procedimento total mas usa o valor retornado Rotinas podem ser compiladas e editadas atravs do Cach Studio.

35

Captulo 3

Mtodos de Objeto Denies de classe e seus cdigos de mtodos so armazenados em globais, sendo que o Class Compiler compila cada classe em uma ou mais rotinas. Cada mtodo simplesmente um procedimento em uma rotina, embora s possa ser solicitado atravs da sintaxe de objeto. Por exemplo, se a classe Paciente dene um mtodo Admite e a varivel Pac identica um objeto Paciente especco, ento solicitaramos o mtodo Admite para aquele objeto com a seguinte sintaxe: do Pac.Admite() // Chama o mtodo admit para Paciente set x = Pac.Admite() // Chama o mesmo mtodo, mas usa o valor retornado Procedimentos e Variveis Pblicas/Privativas Um procedimento um bloco de cdigos dentro de uma rotina que similar a uma funo em outras linguagens. Um procedimento consiste em um nome, uma lista de parmetros formal, uma lista de variveis pblicas e um bloco de cdigo delimitado por { }. Por exemplo: Admite(x,y)[nome,regnum] { ...o cdigo entra aqui } No Cach ObjectScript, algumas variveis so pblicas (comuns) e outras so privativas de um procedimento em particular. Cada varivel utilizada dentro de um procedimento considerada privativa daquele procedimento a menos que esteja listada na lista pblica. No exemplo acima, nome e regnum acessam as variveis pblicas com aqueles nomes, ao passo que todas as outras demais variveis existem. somente para esta solicitao, deste procedimento. Variveis cujos nomes se iniciam pelo caractere % so sempre implicitamente pblicas.

36

Procedimentos no podem ser acumulados, embora um procedimento possa conter sub-rotinas. Sub-rotinas Rotinas podem conter sub-rotinas, que so mais leves que procedimentos. Uma subrotina pode conter uma lista de parmetros e pode ter um valor de resultado, mas ela no possui uma lista pblica ou uma estrutura de blocos formal. Sub-rotinas podem estar embutidas em procedimentos ou podem estar no mesmo nvel que um procedimento em uma rotina. Sub-rotinas permitem a solicitao de cdigo utilizando-se do mesmo conjunto de variveis pblicas/privativas que o solicitante e elas podem ser solicitadas mais rapidamente. Uma sub-rotina embutida em um procedimento usa o mesmo escopo de variveis que o procedimento em si e s pode ser solicitada a partir de dentro daquele procedimento. Referncias de varivel a uma sub-rotina que no seja parte de um procedimento so todas as variveis pblicas.

37

Captulo 3

BASIC
O Basic talvez a linguagem de programao mais conhecida do mundo. No Cach, o Basic foi expandido para suportar acesso direto s estruturas de dados centrais do Servidor de Aplicaes Arrays multidimensionais -, bem como a outros recursos do Servidor de Aplicaes Cach. Ele d suporte direto ao Cach ObjectModel utilizando a sintaxe do Visual Basic, alm de ser executado na Mquina Virtual Cach. O Basic pode ser utilizado tanto como mtodos de classes, quanto como rotinas Cach (vide a descrio de rotinas do Cach Object Script). O Basic pode solicitar o Cach Object Script (e vice-versa) com ambas as linguagens acessando as mesmas variveis, Arrays e objetos na memria de processo. Arrays podem ser expandidos para que sejam bem mais poderosos: A presena do caractere ^ antes do nome de um Array indica uma referncia a um Array multidimensional de base de dados; isto , Arrays persistentes que so compartilhados com outros processos. Subscripts podem ser de qualquer tipo de dados seqncias, integers, nmeros decimais, etc. Dados podem ser armazenados em nveis mltiplos de subscript em um mesmo Array por exemplo, dados poderiam ser armazenados em A (cores) e em A (cores,3). Arrays no precisam ser declarados e so sempre esparsos O Cach s reserva espao conforme os ns so inseridos. Uma funo Traverse permite a identicao do subscript seguinte (ou anterior) em um dado nvel de subscript. Outras extenses incluem: Comandos de processamento de transaes para Iniciar (Start), Conrmar (Commit) e fazer o Rollback de uma transao. Uma funo de incremento atmica para ser utilizada na base de dados. Extenses que promovem uma melhor integrao com as capacidades do Servidor de Aplicaes Cach.

38

Acesso a Objeto com Basic No Cach, classes de objetos esto organizadas em pacotes, e nomes de classes incluem o nome do pacote seguido por um ponto. Por exemplo: Folha. Pessoa uma classe Pessoa no pacote Folha. O comando do Basic New usado para criar um objeto: Person = New Payroll.Person() // cria um novo objeto Pessoa O Basic foi expandido com um comando Open ID para acessar um objeto existente: Person = OpenID Payroll.Person (54) // abre o objeto pessoa com o ID 54 Aqui esto alguns exemplos de cdigos que acessam a propriedade das pessoas: Person.Name = `Smith, John // especica o nome da pessoa Person.Home.City // faz referncia cidade da pessoa Person.Employer.Name // traz o objeto Empregador da pessoa para a // memria e acessa o nome do empregador Classes de base de dados podem ser persistidas em disco com o mtodo Salvar. Por exemplo: Person.Save() salva a pessoa, criando um ID de objeto se esta for a primeira vez que o objeto houver sido armazenado. Se objetos relacionados (como o Empregador) tambm tiverem sido modicados, eles tambm sero salvos automaticamente.

39

Captulo 3

MVBASIC
MVBasic uma outra linguagem de script oferecida pelo Cach e uma variante do Basic. Ele , no entanto, feito com a inteno de executar aplicaes escritos para sistemas MultiValue (Pick) e, portanto, tem suporte a caractersticas extra, incluindo a capacidade de acessar e manipular arquivos MultiValue. O MVBasic pode ser utilizado tanto como mtodos de classe como rotinas do Cach (veja a descrio de rotinas do Cach Object Script). O MVBasic pode solicitar tanto o Cach ObjectScript, quanto o Basic e vice-versa - com todas as trs linguagens tendo acesso s mesmas variveis, Arrays e objetos na memria de processamento. O Cach MVBasic possui as mesmas extenses do Cach Basic, inclusive acesso a objetos. Contudo, dada a possvel ambigidade, a seqncia de dois caracteres -> utilizada ao invs de um separador tipo ponto, . nas referncias de objetos.

C++
Cada classe do Cach pode ser projetada como uma classe C++ com mtodos correspondentes a cada propriedade e mtodo da classe Cach. Para programas C++, estas classes possuem exatamente a mesma aparncia de outras classes C++ locais e o Cach automaticamente gerencia todas as consultas entre o cliente e o servidor. As propriedades da classe so armazenadas em memria cache no cliente e solicitaes de mtodo C++ criam seus correspondentes mtodos server side, incluem-se a os mtodos para armazenar um objeto na base de dados e depois recuper-los.

JAVA
Java uma linguagem de programao popular mas, conectar aplicaes Java maior base das bases de dados pode ser desaador. Conectar-se a uma base de dados relacionais requer ampla codicao SQL, o que demanda muito tempo e inibe muito das vantagens da tecnologia Java de objetos. A abordagem do Cach de armazenar os objetos diretamente sem o desenvolvedor ter de se preocupar com a forma na qual os dados substiro e ter de usar sintaxe de objetos muito mais simples e geralmente preferida. Alguns desenvolvedores preferem trabalhar exclusivamente com POJOs (Plain Old Java Objects), enquanto outros preferem EJB (Enterprise Java Beans).

Java Supported Several Ways

Ademais, alguns desenvolvedores preferem primeiro denir o esquema da base de dados e depois gerar automaticamente a classe Java correspondente para cada uma das classes da base de dados, enquanto outros preferem criar primeiro s classes Java e fazer com que o Cach gere um esquema da base de dados automaticamente. O Cach suporta todas estas abordagens: Qualquer classe Cach pode ser projetada como uma classe Java para que classes e mtodos possam ser acessados como objetos Java. Classes Cach tambm podem ser projetadas como Enterprise Java Beans. JDBC oferece acesso SQL de alta performance usando um driver completamente baseado em Java (tipo 4). A tecnologia Jalapeo da InterSystems cria classes Cach a partir de descries de classe em POJO.

40

Objetos Acessados Atravs de Classes Projetadas


Toda classe Cach pode ser projetada como uma classe Java (ou EJB), com mtodos correspondentes a cada propriedade e mtodo da classe Cach. Para programas em Java, estas classes aparentam ser como qualquer outra classe Java local. A classe Java gerada se utiliza de uma biblioteca Java fornecida pela InterSystems para lidar com qualquer comunicao entre o Cliente e o Servidor. O estado de cada objeto Cach mantido no Servidor de Aplicaes Cach, embora propriedades de classe estejam tambm armazenadas em memria cache no cliente para otimizar o desempenho. Chamadas de mtodo solicitam mtodos correspondentes no Servidor de Aplicaes Cach incluindo mtodos para armazenar um objeto na base de dados e depois recuper-lo. Para o cliente, no visvel qual Servidor de Dados Cach contm as informaes ou mesmo se os dados de objeto esto armazenados em uma base de dados relacional acessada pelo Servidor de Aplicaes Cach.

A VANTAGEM DO CACH
Flexibilidade: Desenvolvedores de Java possuem opes no que diz respeito a acessar objetos Cach eles podem utilizar SQL e JDBC ou objetos projetados mais naturalmente, como classes Java ou Enterprise Java Beans. Com o Jalapeo, os desenvolvedores tm a opo de trabalhar inteiramente em seu ambiente de desenvolvimento Java predileto, deixando o Cach fornecer os mtodos para armazenar e recuperar objetos automaticamente sem tocar nas classes de desenvolvedores de base de dados. Alta Performance: Todos os aplicaes Java, independentemente de como esto conectados ao Cach, se beneciam de seu desempenho superior e de sua escalabilidade. Compatibilidade Nativa com J2EE Signica Desenvolvimento Mais Rpido: Classes Cach podem ser facilmente projetadas como EJBs, fornecendo a desenvolvedores J2EE um modo simples de se conectar base de dados ps-relacional do Cach. Quando uma classe Cach projetada utilizando Bean-Managed Persistence, o Cach gera automaticamente o mtodo usado pelo EJB para acessar a base de dados. do Cach. Como os desenvolvedores no precisam mais manusear mtodos de persistncia de cdigos, os aplicaes podem ser completados com maior rapidez.

Mtodos Cach Escritos em Java


Mtodos de classe Cach podem ser escritos em Java usando o Cach Studio. Contudo, ao contrrio do Cach ObjectScript e do Basic, os mtodos Java no so executados pela Mquina Virtual Cach. Ao invs disso, eles so includos na classe Java gerada e so executados em qualquer Mquina Virtual Java. Tal tipo de cdigo no acessvel a partir de mtodos no Java.

Fornecendo Persistncia Aplicaes J2EE


Desenvolvedores de aplicaes J2EE, o qual utiliza Enterprise Java Beans (EJB), trabalham primordialmente com objetos at o momento em que necessitam acessar a base de dados a eles geralmente so forados a voltar a utilizar o SQL. Atravs de sua interface JDBC, o Cach pode oferecer resposta SQL extremamente rpida a tais aplicaes. No entanto, o acesso SQL geralmente no a abordagem preferida. Base de dados de objetos uma tcnica de acesso mais natural para programadores de EJB. O Cach projeta classes Cach como EJBs gerando mtodos de persistncia de alta performance automaticamente para BMP (Bean-Managed Persistence). Isso evita a sobrecarga do SQL e o mapeamento objeto-relacional o resultado uma maior escalabilidade para aplicaes J2EE. A tecnologia Jalapeo da InterSystems tambm pode ser utilizada em aplicaes J2EE com as mesmas vantagens.

Jalapeo Permite Desenvolvimento em Java


Ao invs de iniciar o processo com classes Cach e projet-las como componentes Java, a tecnologia da InterSystems faz exatamente o oposto. Ela permite a desenvolvedores Java denir classes de objeto dentro do ambiente de desenvolvimento Java que eles preram, fazendo a persistncia automtica daquelas classes no Cach. A classe Java do desenvolvedor no alterada o Cach fornece uma biblioteca de classes com um API que utilizado para guardar e recuperar objetos e emitir consultas s classes do desenvolvedor.

41

Captulo 3

CACH & JALAPEO


Desenvolvedores Java que queiram criar novos aplicaes hoje em dia se deparam com vrios problemas. Geralmente, eles armazenam suas informaes em uma base de dados relacional padro utilizando-se de SQL. Com esta abordagem os desenvolvedores tm de mapear seus objetos Java para estruturas relacionais e escrever consultas SQL tediosas e muitas vezes complexas para acessarem queles dados todos estes pontos podem consumir uma grande porcentagem do tempo de desenvolvimento total. Alternativamente, um desenvolvedor pode fazer uso de uma base de dados objeto, a qual freqentemente no possui suporte a SQL e as ferramentas de gerao de relatrio baseadas em SQL, podendo tambm requerer denies de esquemas. A tecnologia Jalapeo (JAva LAnguage PErsistence with NO mapping) da InterSystems torna fcil para desenvolvedores Java realizar a persistncia de seus objetos dentro da robusta base de dados de objeto Cach, utilizando-se acesso de objeto, ao mesmo tempo em que fornece acesso SQL de alta performance para estes mesmos dados. Os objetos so armazenados nas bases de dados como objetos reais com propriedades, relaes, etc. (isto , no se armazena simplesmente seu estado de srie). Mesmo assim, nenhum mapeamento de objeto relacional necessrio. Utilizando o Jalapeo, o desenvolvedor Java cria classes de bases de dados do mesmo modo que qualquer outra classe POJO, usando a IDE Java de sua escolha. O programador indica ento para o Jalapeo quais classes so de bases de dados geralmente utilizando um plug-in para o IDE do desenvolvedor (fornecido pela Biblioteca Jalapeo Persistence). O Jalapeo analisa as classes, cria automaticamente um esquema de base de dados correspondente (e SQL) e gera todo o suporte de execuo para salvar e recuperar tais objetos. A classe POJO do desenvolvedor no modicada e este pode continuar a alter-la. Durante a execuo, de forma normal, a aplicao acessa diretamente as propriedades e os mtodos dos objetos POJO. Para salvar e recuperar objetos da base de dados, a aplicao usa as APIs da classe ObjectManager fornecida pelo Jalapeo. A classe ObjectManager tambm oferece mtodos que estabelecem uma conexo base de dados, suporta consultas SQL e fornece semntica de transao (tal como start, commit e rollback). Uma simples descrio de classe, inclusive uma lista de propriedades e seus tipos, no em si s elaborada o suciente para descrever tudo o que se poderia querer em uma base de dados. No mnimo, seria necessrio ainda descrever qual propriedade contm o ID do objeto. Um desenvolvedor geralmente ainda especicaria ndices para tornar as consultas mais ecientes. Adicionando-se anotaes padro Java a seus arquivos-fonte desta linguagem, desenvolvedores podem suprir esta e outras especicaes da base de dados. O Jalapeo tambm suporta evolues de esquemas (schema evolutions), atravs da qual o desenvolvedor pode continuar a modicar a classe, inclusive adicionando propriedades novas ou alterando denies j existentes, sendo que o esquema de denies se adapta sem invalidar qualquer um dos dados j inseridos. Isto resulta em um processo de desenvolvimento natural e interativo.

42

Apesar de o Jalapeo funcionar melhor se utilizado em conjunto com o Cach, ele tambm pode exportar seus esquemas de base de dados para um esquema relacional correspondente utilizando DDL padro (Data Denition Language Linguagem de Denio de Dados). Portanto, apesar do objeto ter sido criado para usar acesso de objeto com o Cach, ele tambm pode ser disponibilizado em uma base de dados relacional. Neste caso, os APIs do Jalapeo ObjectManager usam automaticamente chamadas JDBC normais para a conectividade da base de dados. Quando conectado base de dados de objeto Cach, o protocolo de alto desempenho baseado em objeto utilizado. A biblioteca Jalapeo implementada atravs de Java padro e roda em qualquer Java 1.5 JVM (ou mais recente) ou em qualquer ambiente de servidor de aplicaes J2EE. Com o Jalapeo, o desenvolvedor Java pode concentrar-se na interface de usurio e na lgica comercial do aplicao, criando classes de base de dados do mesmo modo que com outras classes e deixando o Cach tomar conta do restante. No exemplo a seguir, um objeto Cliente recuperado, seu nmero de telefone alterado com um mtodo set estabeler, a base de dados atualizada e, por m, o objeto na memria fechado.

Cliente cliente = (Cliente) objectManager.openById(Cliente.class, clienteId); cliente.setNumTel(1144210000); objectManager.update(cliente, true); objectManager.close();

A VANTAGEM DO CACH
Desenvolvimento Rpido e Natural Sem Mapeamento Objeto-Relacional: O Jalapeo utiliza introspeco de classes POJO para criar automaticamente um esquema de base de dados de objeto. Os dados so armazenados como objetos e uma representao SQL padro destes dados tambm criada de forma automtica. Nenhum mapeamento objeto-relacional necessrio, acelerando assim o desenvolvimento. Fcil Persistncia POJO: Dentro de um aplicao, os desenvolvedores acessam as suas prprias classes de base de dados como se fosse qualquer outra classe. O Jalapeo gera todos os cdigos para salvar e recuperar objetos da base de dados utilizando suas APIs de runtime. Acesso SQL: Todos os objetos dentro da base de dados esto acessveis de forma automtica por SQL utilizando a API de JDBC do Jalapeo mesmo sem o desenvolvedor ter realizado um mapeamento objeto-relacional. Independncia de Plataforma e de Base de Dados: O Cach est disponvel em todas as principais plataformas e se por um lado o Jalapeo funciona melhor se usado com ele, por outro tambm pode exportar seu esquema de base de dados para um esquema relacional correspondente se utilizar um DDL comum. Portanto, apesar da aplicao haver sido feita para utilizar acesso de objetos com o Cach, ele tambm pode ser disponibilizado em uma base de dados relacional.
43

Captulo 3

CACH & .NET A VANTAGEM DO CACH


Servidos de Dados Veloz: Aplicaes web que utilizam o Cach como um servidor de dados se beneciam da imensa escalabilidade e alto desempenho oferecidos pelo engine de dados multidimensional do Cach. Desenvolvimento .NET Mais Rpido: Os desenvolvedores sero mais produtivos se trabalharem com suas ferramentas preferidas em ambientes que lhes seja familiar. O Cach suporta uma ampla variedade das mais comuns ferramentas e tecnologias de desenvolvimento, oferecendo ambos os acessos a dados de objeto, como tambm o acesso SQL. Graas a seu acesso aberto e exvel a dados, o Cach funciona de forma imperceptvel com o .NET. H muitos modos de conectar ambos incluindo objetos, SQL, XML e SOAP. Desenvolvedores podem criar aplicaes com as tecnologias de sua preferncia todas elas se beneciaro da performance e escalabilidade superior do Cach. ADO.NET ADO.NET uma nova materializao do ADO, otimizado para uso na estrutura .NET. Sua inteno tornar aplicaes .NET bases de dados independentes, utilizando normalmente o SQL para se comunicar com estas bases. Atravs de seu acesso de dados relacionais, o Cach oferece suporte nativo a ADO.NET. Ele tambm suporta ODBC.NET, da Microsoft, com conectividade read-only (somente leitura) do SOAP, integrada ao ADO.NET.

Web Services
H duas maneiras de se utilizar web services no .NET. Uma delas enviando documentos XML por HTTP. A outra utilizando protocolo SOAP para simplicar o intercmbio de documentos XML. Como o Cach pode expor dados em ambas as direes, ele funciona de forma imperceptvel com web services .NET.

Objetos Cach Gerenciados


O Cach pode gerar automaticamente sesses .NET (ou cdigo-fonte C#) a partir de classes Cach. Um plug-in para Visual Studio permite aos desenvolvedores que preferem aquele ambiente a acessar objetos Cach facilmente.

44

CACH & XML


Do mesmo modo que HTML uma linguagem de marcao, compatvel com a internet, para a exibio de dados em um navegador, o XML uma linguagem de marcao para intercambiar dados entre aplicaes. A estrutura dos dados XML hierrquica e multidimensional, tornado-a um par natural do motor de dados multidimensionais do Cach.

Exportando XML
Tudo o que necessrio para tornar uma classe Cach compatvel com XML fazer com que ela herde da classe %XML.Adaptor, que est includa no Cach. Isto fornece todos os mtodos necessrios para: Criar ou uma DTD (Document Type Denition), ou um Esquema XML para a classe. O Cach gera Esquemas e DTDs automaticamente, mas desenvolvedores que desejem customizar a formatao XML de uma classe podem faz-lo. Formatar automaticamente os dados de um objeto como XML, de acordo com o DTD ou Esquema denido.

Importando XML
O Cach vem com outras classes que fornecem mtodos, possibilitando aos desenvolvedores: Importar Esquemas XML e criar classes Cach correspondentes automaticamente.

Importar dados contidos em documentos XML, trazendo-os como instncias (objetos) de classes Cach via um API simples. Analisar a fundo e validar documentos XML atravs de um analisador XML (SAX) integrado.

45

Captulo 3

CACH & WEB SERVICES


Web Services permite o compartilhamento da funcionalidade de um aplicao atravs da internet e dentro de uma organizao ou de um sistema. Web Services possue uma interface descrita em WSDL (Web Service Denition Language) e retornam um documento XML formatado de acordo com o protocolo SOAP. O Cach possibilita que qualquer mtodo de classe, qualquer procedimento armazenado em SQL e qualquer consulta sejam exibidos automaticamente com um Web Services. O Cach gera o descritor WSDL para o servio e quando este solicitado, envia o documento formatado apropriadamente em XML. O Cach tambm facilita o rpido desenvolvimento, gerando uma pgina web automaticamente para testar o servio, sem ser necessrio construir uma aplicao-cliente.

A VANTAGEM DO CACH
Conectividade Fcil ao XML: O Cach tira proveito de sua capacidade de herana mltipla para fornecer a qualquer classe Cach uma interface bidirecional com o XML. O resultado: As classes Cach podem ser transformadas em esquemas e documentos XML de forma fcil e rpida. De modo semelhante, esquemas e documentos XML podem ser transformados em denies de classe e objetos Cach. Desenvolvimento Rpido de Aplicaes XML Mais Veloz: Como as estruturas de dados multidimensionais nativas do Cach se ajustam bem aos documentos XML, os desenvolvedores no precisam codicar manualmente um mapa que traduza entre XML e a base de dados Cach. Web Services Instantneos: Qualquer mtodo Cach pode ser publicado como um Web Services com apenas alguns cliques do mouse. O Cach gera automaticamente o descritor WSDL e a resposta SOAP quando o servio solicitado.

46

CACH & MULTIVALUE


O Cach oferece todas as capacidades necessrias para desenvolver e rodar aplicaes MultiValue (tambm chamados de aplicaes baseados em Pick), incluindo os MultiValue abaixo: MVBasic Acesso a arquivos Linguagem de consultas Dicionrio de dados procs Command shell (utilitrio de entrada de comandos)

Esta funcionalidade MultiValue fornecida como uma parte integral do Cach e no como uma implementao MultiValue em separado , utilizando o valioso motor de base de dados multidimensional Cach, a funcionalidade runtime e as tecnologias de desenvolvimento. Isto quer dizer que os usurios de MultiValue podem tomar pleno partido das capacidades oferecidas pelo Cach.

Acesso a Arquivos MultiValue


Aplicaes MultiValue geralmente tratam a base de dados como um conjunto de arquivos acessados atravs de operaes de registro de Leitura e Escrita (Read and Write) e atravs de consultas MultiValue. No Cach, cada arquivo MultiValue armazenado como uma estrutura global multidimensional com cada registro sendo igual a um n global. Este recurso se baseia na capacidade do Cach em armazenar mltiplos elementos de dados por cada n da global. Por exemplo, um arquivo MultiValue que armazena informaes de nota scal poderia ter seguinte estrutura: NF # ID Item Cliente Atributo 1 DataNF Atributo 2 Partes Atributo 3 (com MultiValue) Quantidades Atributo 4 (com MultiValue) Preos Atributo 5 (com MultiValue) O Cach representar este arquivo MultiValue internamente como a seguinte estrutura global multidimensional equivalente: ^NF(nf #)= Cliente ^ DataNF ^ Parte1 ] Parte2 ^ Quant1 ] Quant2 ^ Preo1 ] Preo2k onde ^ indica o delimitador de atributo normal (ASCII 254), e ] indica o delimitador de sub-atributo (ASCII 253). Arquivos MultiValue podem ser acessados por programas MultiValue atravs dos comandos normais READ/WRITE (Leitura/Escrita) e de consultas MultiValue. Eles tambm esto acessveis atravs tanto do MVBasic, quanto de outras linguagens, por todos os mecanismos normais do Cach, incluindo acesso a objeto, acesso direto a Array multidimensional e SQL. Arquivos MultiValue podem ser indexados com vrios tipos de ndices (incluindo ndices bit-map) e seqncias de comparaes.

47

Captulo 3

Linguagem de Consulta MultiValue


A Linguagem de Consulta MultiValue fornece as funcionalidades de seleo de dados e de formatao de relatrios para arquivos MultiValue. A linguagem de consulta pode ser utilizada em MVBasic, no command shell e em procs. O Cach traduz consultas MultiValue em consultas Cach SQL com cdigo adicional para permitir suporte a correlativos, formatao de relatrios e vrios outros recursos. Como estas consultas utilizam o motor SQL de extrema alta performance do Cach, a conabilidade aumentada, a execuo otimizada e um conjunto sosticado de capacidades de indexao pode ser utilizado. Obviamente, desenvolvedores MultiValue podem, sempre que desejarem, se utilizar diretamente do Cach SQL.

Dicionrio de Dados MultiValue


Um arquivo MultiValue pode ter uma descrio de arquivo correspondente no Dicionrio de Dados MultiValue, a qual editvel diretamente atravs do cdigo MVBasic e pelo editor MultiValue ED tradicional. A linguagem de consulta MultiValue se utiliza deste dicionrio. Um arquivo MultiValue pode ter tambm uma denio de classe Cach correspondente. Uma denio de classe essencial nos casos em que os dados sero disponibilizados para acesso a objetos ou SQL (embora no seja necessrio usar a MultiValue Query Language). Uma denio de classe tambm necessria se o arquivo for ser indexado. Quando se importam aplicaes MultiValue mais antigas, as denies de classe do Cach podem ser criadas automaticamente a partir do Dicionrio MultiValue. No entanto, na maioria dos casos, a classe resultante ter de ser editada para tornar os dados mais signicativos caso o acesso a objetos ou ao SQL seja pretendido. O Studio wizard ajuda a automatizar a criao de classes a partir de Dicionrios MV e a fornecer mais mapeamentos subseqentes. Por denio, estas classes so read-only, (sendo que os dados podem ser lidos, mas no atualizados atravs de SQL e objetos) e so editados separadamente ao Dicionrio MV. Quando se cria um novo arquivo MultiValue, recomendvel criar primeiramente a classe Cach herdeira da superclasse MVAdaptor, o que resultar na utilizao de um arquivo de formato compatvel com o MultiValue para o armazenamento de dados, criando automaticamente uma descrio de arquivo no Dicionrio de Dados MultiValue. Os dados do arquivo estaro, a partir de ento, acessveis e atualizveis atravs de todos os caminhos de acesso do Cach, inclusive por objetos, SQL e acesso direto via global multidimensional. Deste ponto em diante, um desenvolvedor normalmente passaria a editar denies de classe e no o Dicionrio MultiValue propriamente dito, dado que as edies de classe so automaticamente reetidas nele.

48

MultiValue e Objetos
O MVBasic foi expandido para utilizar objetos do mesmo modo que o Basic. A exceo est no fato de que o MVBasic se utiliza de uma sintaxe -> para representar o acesso a um objeto, ao invs do ponto, ., do Basic. Qualquer classe no Dicionrio de Classe pode ser utilizada, independentemente da linguagem utilizada nos mtodos das classes. Aqui esto alguns exemplos de cdigo, no qual pessoa uma referncia de objeto: pessoa->Nome = Silva, Joo // xa o nome da pessoa pessoa->Resid->Cidade // faz ref. cidade onde reside a pessoa pessoa->Empregador->Nome // traz o objeto empregador da pessoa para a // memria e acessa o nome do empregador pessoa->Save() // salva a pessoa em disco Command Shell do MultiValue O command shell do MultiValue pode rodar a partir de um terminal. Alm das capacidades normais do command shell do MultiValue, o Cach permite comandos MVBasic serem executados diretamente no utilitrio. Por exemplo, digitando: :; DIM A(34) :; FOR I = 1 A 34 ; A(I) = I; NEXT :; FOR I = 1 A 34 ; CRT A(I): : ; NEXT tem-se como resultado: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

A VANTAGEM DO CACH
Vida Nova para Aplicaes Antigas: o Cach torna fcil atualizar aplicaes MultiValue mais antigas atravs de interfaces do navegador, acesso a objetos, SQL robusto e Web Services. Aplicaes MultiValue podem agora existir em uma base de dados avanada, que bem-aceita em ambientes de alta demanda e que apresenta evoluo constante. Construa Novos Aplicaes Rapidamente: Como o MultiValue implementado como uma linguagem e como um acesso de arquivos no Cach, todas as capacidades nativas do Cach podem ser utilizadas para se construir novas funcionalidades rapidamente. Programadores MultiValue podem comear a tirar proveito da programao de objetos e interagir facilmente com outros aplicaes, enquanto seguem utilizando a linguagem MultiValue. Alta Performance e Escalabilidade com Impressionante Conabilidade para Usurios MultiValue: O Cach oferece desempenho e escalabilidade dramaticamente superior para usurios MultiValue. Ademais, o Cach utilizado em ambientes que so crticos 24 horas ao dia, tal como hospitais, que no tm como tolerar sistemas fora do ar. O Cach fornece sosticado journal, processamento de transaes, bases de dados blindadas e conguraes de tolerncia a falhas.
49

Captulo 4

Captulo 4: Criao Rpida de Aplicaes de Alta Performnce Web Rpidas Com Cach Server Pages (CSP)
Criao Rpida De Aplicaes Web Rpidas... usa a palavra rpido duas vezes. Isso, primeiramente, porque possvel criar aplicaes web sosticados, orientados a base de dados com CSP mais velozmente do que com outras abordagens tradicionais. A outra razo que a base de dados integrada Cach a mais rpida do mundo, sendo capaz de rodar sistemas com dezenas de milhares de usurios simultneos. H muitos modos de se escrever aplicaes web com Cach inclusive com todas as formas tradicionais que utilizam SQL para acessar a base de dados. Neste captulo, discutiremos outra abordagem mais direta , chamada CSP - Cach Server Pages. O CSP uma tecnologia fornecida como parte do Servidor de Aplicaes Cach. Ele a maneira mais rpida para que aplicaes Cach interajam com a web, oferecendo: web. Uma abordagem de desenvolvimento avanada, orientada a objetos. Performance ultra-elevada e escalabilidade em tempo de execuo.

O CSP apresenta suporte HTML, XML e a outras linguagens de marcao orientadas

O CSP no uma ferramenta de web design, embora possa ser utilizada com estas. Enquanto ferramentas de web design normalmente se concentram na produo de HTML esttico, o CSP vai alm da aparncia das pginas e auxilia no desenvolvimento de lgica de aplicao. Ele tambm fornece o ambiente de execuo que possibilita a execuo rpida do cdigo contido no Servidor de Aplicaes Cach. O CSP suporta um forte ambiente de programao procedural; tal que os aplicaes podem ser escritos com um nvel de sosticao e exatido que excede as possibilidades de tecnologia pura de gerao de aplicaes. Ela tambm suporta desenvolvimento rpido atravs de sua arquitetura de classe, a qual produz blocos de construo de cdigo estes ltimos podem ser combinados entre si e ainda, atravs do uso de wizards, que podem produzir rapidamente verses simples de cdigo customizado. O resultado a possibilidade de se desenvolver velozmente aplicaes web muito sosticadas.

A VANTAGEM DO CACH
Programao procedural orientada a objeto, juntamente com o Cach Wizards, resultam em aplicaes de base de dados sosticadas, baseados em navegadores web.

50

Algumas das caractersticas do Cach Server Pages so: Servidor de Pginas Dinmicas Como as pginas so criadas de forma dinmica no servidor de aplicaes, ao invs de fazer com que um servidor web simplesmente retorne ao HTML esttico, os aplicaes podem responder rapidamente a vrias requisies diferentes, moldando as pginas resultantes, que so enviadas de volta ao navegador. Modelo de Sesso Todo o processamento relacionado a pginas de um nico navegador (browser) considerado parte de uma s sesso da primeira solicitao do browser at que ou a aplicao seja completada ou um timeout programvel ocorra. Preservao de Estado do Servidor Dentro de uma sesso, os dados no servidor e mesmo o contedo da aplicao podem ser retidos automaticamente atravs das solicitaes do browser, tornando muito mais fcil desenvolver e rodar aplicaes complexas. Arquitetura de Objetos Como cada pgina corresponde a uma classe, o cdigo e outras caractersticas comuns a muitas pginas podem ser facilmente incorporados atravs da funcionalidade de herana. Os dados so tambm tipicamente referenciados atravs de objetos com todos os benefcios da programao de orientao a objetos. XML O XML oferece uma poderosa alternativa ao HTML na construo de pginas web. O CSP funciona com o XML do mesmo modo que trabalha com o HTML. O programador fornece XML no mtodo Page(), ao invs de HTML. Tags de Aplicao Cach para Gerao Automtica de Cdigo Estes tags HTML estendidos so to fceis de utilizar quanto tags tradicionais de HTML. Quando adicionados a um documento HTML, eles geram um cdigo de aplicao sosticado, oferecendo uma variedade de funcionalidades, tais como abrir objetos, executar consultas e controlar o uxo de programas. Estas tags so expansveis os desenvolvedores podem criar suas prprias tags, adequadas s necessidades especcas que possuem. Integrao com Ferramentas Populares de Web Design O CSP funciona com uma variedade de ferramentas que tornam fcil realizar o layout visual de pginas. Com o Dreamweaver, o CSP vai um passo alm de sua capacidade de adicionar tags de Aplicaes Cach atravs de simples interaes point-and-click (apontar e clicar com o mouse). O CSP inclui ainda um Wizard, que torna fcil criar formas que exibem ou editam dados na base de dados Cach. Mtodos Servidores Solicitveis a Partir do Browser Para facilitar o desenvolvimento de aplicaes mais dinmicas e interativas, o CSP torna fcil solicitar mtodos server-side. Quando um evento ocorre no browser geralmente porque o usurio realizou uma ao o cdigo de aplicao no servidor pode ser chamado, gerando uma resposta ao evento. Tudo isso, sem a sobrecarga de transmisso e exibio de uma pgina inteiramente nova. Criptograa O Cach automaticamente criptografa dados na URL para ajudar a autenticar solicitaes e prevenir adulteraes. A chave de criptograa mantida somente no servidor e vlida somente durante aquela nica sesso. muita tecnologia mas no tem que ser difcil de utilizar. Ns nos concentramos em tornar o CSP fcil de usar, com a maioria dessas capacidades funcionando de forma automtica para voc. Nossa losoa poder atravs da simplicidade a complexidade deve car em nossa implementao e no na programao que voc realiza.

51

Captulo 4

O MODELO CACH SERVER PAGES Tecnologias Web Tradicionais


Em tecnologias web tradicionais, uma solicitao enviada ao servidor web. Este recupera um arquivo seqencial de HTML que enviado de volta ao browser. Quando os aplicaes envolvem dados variveis, o desenvolvimento se torna mais complicado, com os programadores passando geralmente a utilizar CGI (com linguagens Pearl ou tcl) no servidor web, e enviando consultas SQL e stored procedures para a base de dados. Como se trata de um ambiente de programao, isso deixa muito a desejar; e a execuo particularmente com grande nmero de usurios pode ser bem ineciente quando o servidor web ca demasiadamente sobrecarregado. Com o CGI, cada solicitao do browser geralmente cria um novo processo. Para evitar esta sobrecarga, os programadores s vezes fazem um link diretamente entre o cdigo de aplicao e o servidor web, com um efeito-colateral inadequado que faz com que um erro em tal cdigo possa levar ao travamento do servidor web inteiro.

Pginas de Servidor Dinmicas


O CSP utiliza uma abordagem de programao e execuo diferenciada: Dynamic Server Page Technology (Tecnologia de Pgina Dinmica do Servidor). O contedo (HTML, XML, folhas de estilo, imagens e outros tipos) gerado de forma programada durante a execuo no Servidor de Aplicaes Cach, ao invs de vir de arquivos seqenciais, permitindo maior exibilidade nas respostas s solicitaes de pgina. A maior parte do cdigo de aplicaes executada no Servidor de Aplicaes Cach, o qual pode ou no estar localizado sicamente no mesmo computador que o servidor web. Alguns cdigos normalmente JavaScript ou Java podem rodar no navegador, suportando, geralmente, operaes como validao de dados, reformatao ou invocando cdigos laterais ao servidor. Com esta abordagem, os processos no precisam mais ser criados para cada requisio do browser (como ocorre na abordagem CGI tradicional), melhorando o desempenho. E j que o cdigo de aplicaes no ligado ao servidor web, um erro nos aplicaes no trava este ltimo.

Sesses O Modelo de Processamento


Todo o processamento relacionado a pginas de um nico navegador considerado parte de uma mesma sesso desde a primeira solicitao do browser at que os aplicaes sejam nalizados ou um timeout programvel ocorra. Quando um servidor web recebe uma solicitao de pgina (URL) com uma extenso .csp, esta requisio enviada (por uma na camada de cdigo Cach anexada ao servidor web) para o Servidor de Aplicaes Cach apropriado, que pode estar sicamente localizado em outro computador. Quando o Servidor de Aplicaes Cach recebe a solicitao, ele determina se uma sesso j est em andamento para aquele browser. Em caso negativo, uma sesso iniciada automaticamente. O Cach executa ento o cdigo de aplicao associado quela pgina em particular realizando as aes solicitadas pelo usurio e criando de forma programada o HTML, o XML, a imagem ou outro contedo que enviado de volta ao navegador. Uma sesso termina quando uma propriedade inserida no objeto de Sesso, terminando-a. Aplicaes que rodam stateless (sem estado denido) podem optar por nalizar a sesso em cada pgina.

52

Preservao de Estado
Um dos desaos enfrentados por desenvolvedores a natureza inerentemente stateless (sem estado) da web normalmente no h uma maneira simples de se reter informaes no servidor entre uma solicitao e outra. Os aplicaes geralmente enviam para o navegador todas as informaes de estado que eles precisam reter na forma de URLs ou de campos escondidos de formulrio. Esta no uma tcnica eciente para aplicaes mais complexas, que podem recorrer a salvar temporariamente dados em arquivos ou bases de dados. Infelizmente, isto impe uma sobrecarga signicativa ao servidor e torna a programao consideravelmente mais difcil. O modelo de Sesso do Cach possibilita a este preservar dados automaticamente e ecientemente entre as solicitaes de um browser. O CSP fornece um objeto de Sesso que contm informaes genricas sobre a sesso, alm de propriedades que permitem ao programador controlar vrias caractersticas desta. O aplicao pode armazenar seus prprios dados no objeto de Sesso, o qual retido automaticamente de uma solicitao a outra. O aplicao determina o estado a preservar, estabelecendo a propriedade Preserve no objeto de Sesso para 0 ou 1 (o padro 0, o que pode ser modicado de modo dinmico durante a execuo). 0 Dados salvos no objeto de Sesso so retidos. (Os dados so simplesmente colocados em uma propriedade multidimensional, que aceita qualquer tipo de dado e permite qualquer nmero de subscript inclusive subscripts de valor seqencial sem nenhuma declarao). 1 O Cach dedica um processo para a sesso, tal que os estados de processo so retidos, inclusive todas as variveis (e no s aquelas do objeto de Sesso) dispositivos I/O (entrada-sada) e locks. Uma congurao igual a 0 permite uma partio lgica de todos os dados preservados e permite que mltiplas sesses compartilhem um nico processo, porm preserva menos quantidade de estado. J uma congurao igual a 1 mais fcil para o programador e oferece um leque de capacidades mais amplo, porm, a um custo maior de recursos de servidor utilizados.

A VANTAGEM DO CACH
Ao preservar a informao de estado no servidor de forma automtica, h menos trfego de rede e menos sobrecarga no servidor, j que os aplicaes no precisam car arquivando e acessando dados para cada pgina solicitada. E programar o aplicao mais simples. O uso de Pginas Dinmicas de Servidor e do Servidor de Aplicaes Cach resulta em uma maior exibilidade para se responder a solicitaes, em uma execuo mais veloz e sem o risco de erros de aplicaes fazerem o servidor web cair, bem como em um ambiente de programao mais rico.

O Objeto de Requisio
O CSP fornece automaticamente vrios objetos (alm do objeto de Sesso) para auxiliar o programador a processar a pgina. Um deles o objeto de Requisio. Quando uma pgina recebida, o URL decodicado e colocado no objeto de Requisio. Este objeto contm todos os pares nome/valor e todos os dados de formulrio, juntamente com outras informaes teis. Por exemplo, o valor do nome FilmeID, poderia ser obtido com o cdigo: %request.data(FilmID, 1) // o 1 indica que queremos o 1o nome para este valor // caso haja vrios valores para este nome

53

Captulo 4

ARQUITETURA DE CLASSE DE PGINAS WEB


Para cada pgina web h uma classe de pgina correspondente, a qual contm mtodos (cdigo) para gerar o contedo da pgina. Quando uma solicitao recebida, sua URL utilizada para identicar a classe Pgina correspondente, bem como para chamar o mtodo Page() daquela classe. Geralmente, classes de pgina so derivadas de uma classe de pginas web padro (%CSP. Page), a qual fornece vrias capacidades integradas (tais como a gerao de cabealhos e de criptograa) a todas as pginas. Estas capacidades padro podem ser desativadas de vrios modos derivando-se de outra superclasse, utilizando herana mltipla ou simplesmente desativando mtodos especcos. Esta arquitetura de classe torna fcil modicar o comportamento de um aplicao inteiro e forar um estilo comum. Ela tambm traz todas as demais vantagens programveis da programao de objetos ao desenvolvimento web. A classe de pgina contm cdigo para realizar a ao solicitada, bem como gerar e enviar uma resposta ao navegador. Porm, nem todo o cdigo de aplicaes que executado est naquela classe de pgina. Na realidade, a maior parte do cdigo executado est em mtodos de vrias classes de bases de dados e, talvez, em classes extras de lgicas comerciais. Portanto, o processo de desenvolvimento consiste em que tanto classes de pginas, quanto classes de bases de dados (alm de, eventualmente, classes adicionais de lgicas comerciais) sejam desenvolvidas. Ns geralmente recomendamos que as classes de pgina contivessem somente lgica de interface de usurio. Lgica comercial e lgica de base de dados deveriam ser colocadas em classes diferentes para que haja assim uma separao clara do cdigo de interface de usurio destas lgicas e mais fcil adicionar interfaces de usurio extras depois.

ESTRATGIAS MLTIPLAS DE DESENVOLVIMENTO


Uma pgina de classe criada para cada pgina web e contm o cdigo a ser executado por aquela pgina. H vrios modos de se construir pginas de classes e a maioria dos aplicaes utiliza mais de um deles: Arquivo CSP Um arquivo HTML com Tags de Aplicao Cach embutidas escrito utilizando um editor de textos simples ou uma ferramenta de web design. Esse arquivo seqencial (um arquivo CSP) no enviado diretamente ao navegador ele compilado para gerar uma pgina de classe. Programao Direta Os programadores escrevem as pginas de classe inteiras atravs da codicao dos mtodos apropriados. Zen Programadores criam a pgina de classe utilizando componentes de objeto interativos pr-construidos. Pginas simples geralmente so mais rpidas de se desenvolver com arquivos CSP e wizards, mas deve ser mais fcil para programar pginas mais complexas diretamente ou com Zen.

54

ARQUIVOS CSP
Arquivos CSP so arquivos HTML seqenciais com Tags de aplicaes Cach embutidas, que so compiladas em pginas de classe o mesmo tipo de pginas de classe que um programador talvez escrevesse diretamente. Estas pginas de classe so ento compiladas para gerar cdigos que rodam no Servidor de Aplicaes Cach em resposta s solicitaes do browser. O Cach Studio inclui um Wizard de Formulrios que gera automaticamente um arquivo CSP para editar ou visualizar uma classe de base de dados. O usurio simplesmente clica na classe de base de dados de seu interesse e depois seleciona o conjunto de propriedades a ser exibido. O wizard do Cach faz todo o restante, adicionando HTML e tags de aplicaes Cach pgina. Como o Wizard produz HTML, caso o resultado no esteja em exato acordo com aquilo que voc deseja, muito fcil edit-lo. A abordagem de arquivos CSP poderosa, pois: Web Designers podem desenhar o layout visual, enquanto os programadores se concentram nos cdigos. Muito da interface de usurio pode ser programada de maneira no procedural em um ambiente visual e ser mantida isolada das lgicas comerciais e de base de dados. normalmente mais fcil customizar um aplicao para um usurio individual especco deixando que no programadores alterem a apresentao visual e adicionem capacidades simples aplicao. Como as especicaes visuais da aplicao so mantidas separadas da maior parte da lgica de programao, relativamente fcil modicar a sua aparncia sem a necessidade de reprogram-lo simplesmente edite o arquivo HTML ou XML e recompile a pgina. Embora uma aplicao inteira simples possa ser criado desta maneira, um programador geralmente imputa cdigos adicionais a ele. Este cdigo extra suprido atravs de tags de aplicaes, que ou incluem o cdigo de procedimento, ou invocam cdigos em outras classes. No entanto, pginas complexas com muitos cdigos procedurais so geralmente mais fceis de escrever utilizando-se da abordagem de programao direta, ao invs de um arquivo CSP. O Cach tambm inclui um add-in para Dreamweaver a popular ferramenta de design de pginas web. Ela oferece suporte point-and-click para se adicionar Tags de Aplicaes Cach, alm de contar com um Wizard de Formulrios Cach, que gera automaticamente o cdigo necessrio para visualizar ou editar um objeto da base de dados.

Tags de Aplicaes Cach


Tags de Aplicaes Cach podem ser adicionadas ao arquivo CSP. Elas so utilizadas da mesma forma que tags HTML comuns, mas so, em realidade, instrues para que o Cach Web Compiler (Compilador Web do Cach) gere o cdigo de aplicao que vai fornecer vrias funcionalidades como, por exemplo, acessar objetos da base de dados, executar consultas, controlar o uxo de programas e executar cdigo no Servidor de Aplicaes Cach. As tags de Aplicaes Cach so expansveis os desenvolvedores podem criar suas prprias tags para suprir suas necessidades especcas. As Tags de Aplicaes Cach no esto embutidas no HTML que enviado a um browser elas esto somente no arquivo CSP lido pelo Cach Web Compiler. Esse compilador automaticamente as transforma em HTML-padro, o qual pode ser processado por qualquer navegador.

55

Captulo 4

HIPEREVENTOS (HYPEREVENTS)
Os hipereventos CSP permitem que eventos que ocorram em um navegador (como os cliques do mouse, mudanas em campos de valor ou timeouts) solicitem mtodos server-side, bem como atualizem a pgina atual sem fazer o repaint (recarregamento grco completo). Aps realizar a ao solicitada, este mtodo tem como produzir um cdigo (geralmente em JavaScript) para que seja executado no browser. Aplicaes web que utilizam hipereventos tm melhor resposta e podem se tornar mais interativos. Dentro de uma pgina CSP, um mtodo server-side solicitado simplesmente atravs da sintaxe: #server(...)# Por exemplo, suponhamos que quando o usurio clicar em uma imagem de um carrinho de compras, queremos ativar um mtodo servidor chamado AdicAoCarrinho(). A denio HTML para a imagem talvez inclusse ento a seguinte sintaxe: onClick=Server(AdicAoCarrinho()# O web compiler substituir esta sintaxe com o cdigo JavaScript, que quando rodado no navegador, solicitar o mtodo do servidor Cach.

56

Captulo 4

INTERSYSTEMS ZEN E WEB PAGES BASEADOS EM COMPONENTES


O Zen oferece uma maneira simples de criar dados ricos e complexos em aplicaes Web com visual sosticado e com uma interface de usurio altamente interativa. O Zen no uma 4GL; ele uma rica biblioteca pr-montada de componentes objetos e uma ferramenta de desenvolvimento baseada nas tecnologias CSP (Cach Server Pages) e de orientao a objetos da InterSystems. O Zen especialmente apropriado para o desenvolvimento de uma verso Web de aplicaes cliente/servidor originalmente criados com ferramentas tais como Visual Basic ou PowerBuilder. Os componentes Zen permitem muito mais interaes dinmicas voc no ca restrito ao mecanismo submeter para enviar dados para o servidor. Por exemplo, com o componente de formulrio do Zen voc pode denir sua prpria validao customizada, incluindo chamadas imediatas ao servidor sem a necessidade de realizar uma solicitao de pgina e uma repaginao subseqente. Para os usurios, isto representa uma maneira mais natural de inserir dados. O Zen utiliza o mecanismo de gerenciamento de sesso do CSP, fornecendo autenticao de usurio, criptograa de dados, bem como a reteno de dados persistentes de sesso atravs das solicitaes de pginas. Toda comunicao entre o navegador e o servidor ocorre atravs do envio e recebimento do objeto utilizando uma verso mais sosticada da tcnica comumente chamada de AJAX (Asynchronous JavaScript and XML). Pginas baseadas em Zen podem ser facilmente combinadas com pginas desenvolvidas utilizando outros mtodos CSP de desenvolvimento de Web.

O que um Componente Zen?


Um componente Zen uma denio de classe que especica a aparncia e o comportamento de um componente na pgina. A denio de classe Zen contm em um nico documento a denio completa de um componente, incluindo as folhas de estilo, o cdigo servidor e o cdigo cliente. Ao ser executado, o Zen cria dois objetos para cada componente utilizado em uma pgina: um objeto client-side (que o Zen cria de forma automtica na forma de um objeto JavaScript dentro do navegador) e um objeto server-side. O Zen automaticamente gerencia o estado de ambos os objetos e gerencia o uxo de informaes entre eles.

58

Tipos de Componentes Zen


A biblioteca Zen inclui componentes que implementam todos os tipos padro de controle HTML: caixas de entrada, caixas de texto, botes, check Box, etc. Estes componentes possuem comportamentos adicionais herdados da classe de controle Zen. O Zen inclui ainda um conjunto de componentes mais complexos e ricos de dados que automaticamente exibem dados contidos na base de dados e que sabem como atualizar estas informaes de modo dinmico, em resposta a eventos gerados pelo usurio. Por exemplo, o poderoso componente Zen de tabelas exibe de forma automtica os dados contidos em uma tabela HTML utilizando uma busca realizada na base de dados. O componente de tabelas possui suporte a paginao, a rolagem, a organizao de colunas, a ltros e a uma variedade de estilos. O contedo da tabela pode ser atualizado a partir do servidor sem a necessidade de repaginar novamente toda a pgina. Dentre os outros componentes Zen, incluem-se: Menu Uma variedade de menus suportada. Grid Adiciona comportamento a tabela de estilo a uma pgina Web. Tree Exibe dados hierrquicos com um controle em forma de rvore. Tab Um componente de tabulao contm uma srie de espaos tabu- lares, cada qual contendo uma srie de outros componentes. Chart Um conjunto rico de componentes de grcos so implementa- dos utilizando SVG, incluindo grcos em linha, de rea, em barra, gr- cos tipo pizza, tipo alto-baixo, bem como grcos XY. Graphical Meters Velocmetros, medidores, etc.; permitem a voc exi- bir dados como componentes visuais dinmicos.

Modicando a Aparncia dos Componentes da Biblioteca Zen


Todos os componentes Zen apresentam suporte a um conjunto de propriedades que controlam a aparncia visual. Os aplicaes podem ajustar estas propriedades ao rodar o sistema para modicarem os valores, o visual e o comportamento de componentes. A aparncia visual tambm controlada pelas denies de estilo do Standard CSS (Cascading Style Sheet). Podem-se ignorar estes estilos (para modicar fontes, cores, tamanhos, etc.) no mbito do aplicao, pgina ou em nvel individual por componente. Voc pode criar subclasses de componentes da biblioteca Zen para ignorar ainda mais denies de aparncia e comportamento.

Criando Novos Componentes Zen


Uma dos pontos mais fortes do Zen est na facilidade de criar novos componentes. Cada componente implementado como uma classe. Para criar um novo componente: (1) crie uma nova classe de componente, a qual pode ser uma subclasse de um componente j existente; (2) implemente um mtodo que realize o contedo HTML do componente; (3) dena os mtodos server-side e client-side que implementem o comportamento de execuo do componente; e (4) esteja certo de que a classe inclui as denies de estilo CSS necessrias para se especicar a aparncia visual do componente.

59

Captulo 4

Como Localizar Aplicaes Zen Para Lnguas Diferentes


Caso desejado, o Zen automaticamente mantm um conjunto de todos os valores de texto (ttulos, legendas, etc.) exibidos pelos componentes incorporados de um aplicao em uma tabela especial de localizao. Voc pode exportar a tabela de localizao de um aplicao como um documento XML, traduzir os valores para outras lnguas e importar as novas tabelas. Durante a execuo, o Zen utiliza os valores de texto baseado nas preferncias de lngua atuais do navegador do usurio.

Suporte a SVG
O SVG (Scalable Vector Graphics) fornece um modo padro poderoso para a exibio de ricos dados grcos dentro de uma pgina Web. O Zen incorpora a possibilidade de criao de componentes grcos que se auto-restitua atravs da utilizao do SVG e os quais incluem um rico conjunto de componentes pr-desenhados com base no SVG.

Quais Navegadores suportam o Zen?


O Zen funciona com o Firefox (verses 1.5 e superiores) e com o Internet Explorer (verses 6.0 e posteriores). Para o Firefox no h a necessidade de plug-ins o SVG j vem embutido nele. Para o Internet Explorer, h a necessidade de se utilizar o plug-in Adobe SVG, caso voc deseje utilizar os componentes SVG do Zen. A biblioteca gerencia as diferenas entre o SVG do Firefox e o Internet Explorer.

A VANTAGEM DO CACH
Ricas Interfaces de Usurio Web: Podem-se gerar pginas visualmente sosticadas e altamente interativas, as quais so visualmente mais semelhantes a interfaces GUI de aplicaes cliente/servidor do que um formulrio tradicional e simples de navegador com um boto de SUBMIT. O usurio acha o formato interativo mais natural e fcil de utilizar. Rpido Desenvolvimento Baseado em Objeto: A utilizao de componentes pr-desenhados acelera o desenvolvimento e torna mais simples a realizao de modicaes posteriores. Interfaces Consistentes de Usurio: A arquitetura baseada em componentes torna mais fcil de denir e forar normas de estilo e comportamento no mbito do aplicao.

60

InterSystems do Brasil Praa Prof. Jos Lannes, 40 10 andar - Brooklin Novo 04571-100 - So Paulo - SP Tel: 55 11 3014 7000 Fax: 55 11 3014 7001 Call Center: 0800 888 22 00 InterSystems.com.br

InterSystems Cach marca registrada da InterSystems Corporation. Outros nomes de produtos so marca registrada de seus respectivos fabricantes. Copyright 2008 InterSystems Corporation. Todos os direitos reservados. 01-08

Você também pode gostar