Implementando a
Arquitetura de
Referência OpenEdge
(OERA) - Parte II
Alessandro Martins
Technical Architect
Field Services Latin America Operations
Moderna Arquitetura de Aplicações
OpenEdge Reference Architecture – uma visão em
camadas
Usuários
Camadas de apresentação
e integração separadas
Simplify your business
Lógica de negócio
comum com modelos
avançados
Acesso a dados
abstraído
do repositório
2
© 2005 Progress Software Corporation
Camada de
Apresentação
Serviços
Corporativos
Camada de
Integração
Camada de Serviços de Negócio
Camada de Acesso a Dados
Repositório
de Dados Gerenciado
Repositório
de Dados
Não-gerenciado
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Agenda




Simplify your business

3
Introduzindo a Camada de Interface de
Serviços
Gerenciando instâncias de ProDataSets
Gerenciamento de Contexto
Tópicos Adicionais e Futuro
Conclusões
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
SOA – Modelo de interação
baseado em serviços
Broker/
Serviço
de
Diretório
Buscar /
Detalhes
Consumidor
do Serviço
Publicar
Vincular/
Invocar
Provedor do
Serviço
Serviços
Corporativos
Simplify your business
Tarefa Negócio
Tarefa Negócio
Tarefa Negócio
4
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Serviços de apoio gerenciador
pelo Contêiner
Simplify your business
Gerencia/o
de Pedidos
© 2005 Progress Software Corporation
Lógica
Servidor
Gerência de Sessão/Contexto
Contêiner de Serviços
Interface de Serviços
Controle de Transações
Proxy de Serviço
Segurança
Contêiner de Apresentação
5
Lógica
Cliente
Fn()
…
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Interface de Serviços na
Arquitetura
Serviços
Corporativos
Usuários
Camada
de Apresentação
Interface
de
Serviços
Camada de
Integração
Camada de Serviços de Negócio
Simplify your business
Camada de Acesso a Dados
Repositório
de
Dados Gerenciado
6
© 2005 Progress Software Corporation
Repositório
de
Dados Não-gerenciado
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Papel da Camada de Interface de
Serviços de Exemplo

Gerencia entidades do lado servidor
– Mantém um catálogo em memória das
instâncias em execução

Simplify your business

7
Fornece acesso de chamada única
padronizado a procedures localizadas no
lado servidor
Provê uma API única e simplificada do
cliente para o servidor e vice-versa
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Camada de Interface de Serviços
Cliente
Servidor
Data-Access Object
Procedure IU
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
Simplify your business
BY-REFERENCE)
Procedure Proxy Cliente
DATASET dsOrder
Procedure Gateway Servidor
Business Entity
DATASET dsOrder
DATASET dsOrder
fetchWhere:
RUN FetchWhere
IN hEntity
FILL
ATTACH
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
Interface de Serviços
8
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Proxy SI (Service Interface) do lado
cliente
Procedure de
Procedure Proxy
Interface de Usuário
Cliente
proSIproxy.p
dsOrderWinAdv.w
Simplify your business
{dsOrder.i}
{proSIproxyStart.i}
…
RUN fetchWhere IN
ghProxySIproc
(INPUT “Order”,
INPUT ttContextDSOrder,
OUTPUT DataSet dsOrder).
PROC fetchWhere:
RUN proSIgateway.p ON
hAppServer
(INPUT “Order”,
INPUT “fetchWhere”…)
…
(chamada ao
gateway do lado
servidor)
9
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Procedures SI do lado servidor
(chamada da
sessão do
cliente)
Procedure da lógica
Procedure gateway
do lado servidor
proSIgateway.p
hEntity = getEntityHandle
in hSI.
RUN fetchWhere in hEntity
Simplify your business
…
de negócio do servidor
proSIserver.p
DEFINE T-T ttEntity…
FN startEntity:
FN getEntityHandle:
/* entity temp-table lookup */
FN getDAOHandle:
(chamada à API de
Business Entity)
10
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
API da Procedure Gateway

Cinco parâmetros padrão
– Nome da entidade lógica
– Nome da operação lógica
– Temp-table de contexto/parâmetros para passar
quaisquer valores relacionados por entre as
camadas
– ProDataSet OUTPUT ou INPUT-OUTPUT
Simplify your business


Dependendo se a definição do ProDataSet ou seus
valores necessitem ser passados
– Parâmetro de saída (OUTPUT) de status para
tratamento de exceções
Default útil para muitas operações
– Utilizando APIs e procedures customizadas para
operações especiais
11
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Agenda




Simplify your business

12
Introduzindo a Camada de Interface de
Serviços
Gerenciando instâncias de ProDataSets
Gerenciamento de Contexto
Tópicos Adicionais e Futuro
Conclusões
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Gerenciando instâncias de
ProDataSets



Qual objeto “é o dono” da instância do
ProDataSet no servidor e no cliente?
ProDataSets podem ser passados BYREFERENCE para evitar cópia
A instância do chamador é sempre
utilizada, mesmo em caso de OUTPUT
Simplify your business
– Nota: Isto será estendido na versão 10.1
para suportar um modelo “pull” onde a
instância da procedure chamada é utilizada
13
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Instâncias de ProDataSet em
OUTPUT
Cliente
Servidor
Procedure IU
Business Entity
Data-Access Object
DATASETBY-REF
(. . . ,
OUTPUT
DATASET
dsOrder
Simplify your business
BY-REFERENCE)
14
Procedure de Prox yde Cliente
RUN fetchOrder
IN hdsOrder
HANDLE
HANDLE
© 2005 Progress Software Corporation
Procedure de Gateway de Servidor
DATASET dsOrder
DATASET dsOrder
BY-REF
DATASET dsOrder
RUN FetchWhere
fetchWhere:
IN hEntity
FILL
(. . .,
ATTACH
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Agenda




Simplify your business

15
Introduzindo a Camada de Interface de
Serviços
Gerenciando instâncias de ProDataSets
Gerenciamento de Contexto
Tópicos Adicionais e Futuro
Conclusões
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Gerenciameneto de Contexto:
Conceitos Básicos


Simplify your business

Ambiente-alvo é cliente de um AppServer
state-less ou state-free
Cada interação é independente
Manutenção de contexto entre interações
inter-relacionadas
16
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Passando Contexto entre Cliente e
Servidor



Simplify your business

Temp-table de Contexto/Parâmetros passa
contexto por entre as camadas
Campos de nome e valor permitem
flexibilidade
Contexto é mantido no cliente
Útil para pequenas quantidades de dados
– Também para contexto utilizado e
modificado no cliente
17
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Contexto entre Cliente e Servidor
Servidor
Cliente
Business Entity
Procedure IU
DATASET dsOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
Simplify your business
BY-REFERENCE)
18
Procedure de Prox yde Cliente
RUN fetchOrder
temp-table de
contexto/parâmetros
WhereString = “…”
NextRowid = 63524
© 2005 Progress Software Corporation
Procedure de Gateway de Servidor
DATASET dsOrder
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Contexto Mantido no Servidor

Mantém contexto em um repositório de
dados compartilhado no servidor
– Tipicamente uma tabela na base de dados

Útil para evitar que toda da informação de
contexto passe do cliente para o servidor
– Contexto de sessão que não mudam, como
autorização
Simplify your business

Requer que um Context ID seja passado
pelo cliente
– Suporte a Group UID no exemplo e na 10.1
19
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Contexto Armazenado no Servidor
Servidor
Cliente
Business Entity
Procedure IU
DATASET dsOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
Simplify your business
BY-REFERENCE)
Procedure de Prox yde Cliente
RUN fetchOrder
temp-table de
contexto/parâmetros
ContextID = 95847
Procedure de Gateway de Servidor
DATASET dsOrder
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
95847 English Auth …
20
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
ProDataSet e Temp-table de Contexto

Armazena dados recuperados em uma
tabela de contexto
– Para clientes Web leves ou outros clientes
que não possuem suporte a ProDataSets
– Campos RAW e BLOBs para armazenamento
genérico

Armazena atualizações sucessivas antes de
realizar o commit
Simplify your business
– Permite validação parcial no servidor
– ProDataSet final de atualização reconstruído
a partir do contexto
21
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Dados de ProDataSets ou Temptables como Contexto
Servidor
Cliente
Business Entity
Procedure de IU
DATASET dsOrder
ContextID = 95847
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
Simplify your business
BY-REFERENCE)
Procedure de Prox yde Cliente
RUN fetchOrder
“OrderNum = 1”
95847 Order 1 Line 1
Procedure de Gateway de Servidor
DATASET dsOrder
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
95847 Order 1 Line 1
95847 Order 1 Line 2
22
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Agenda




Simplify your business

23
Introduzindo a Camada de Interface de
Serviços
Gerenciando instâncias de ProDataSets
Gerenciamento de Contexto
Tópicos Adicionais e Futuro
Conclusões
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo: Usando Repositórios de dados
não Gerenciados
Using an Unmanaged Data Source



Simplify your business

24
Usa um documento XML no lugar de uma
base de dados
Procedure de data source alternativa
identifica o documento
Código específico popula o ProDataSet
Restante do código do Business Entity
roda sem modificações
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo: Interface .NET Simples a
Business Entities
Building an Alternative User Interface to Business Entities


Simplify your business


25
Gerador de código cria um arquivo XSD
com a descrição do DataSet
Com isto, cria também um arquivo de
classe C# para o DataSet
A versão C# do proxy cliente roda a
mesma procedure gateway no AppServer
A classe DataSet C# é usada para
construir a IU
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo:
Lógica de Negócio Avançada
Advanced Business Logic



Simplify your business

O papel das procedures de trigger de base
de dados
Um Business Entity acessando outro
Um Data Access Object acessando outro
Quando permitir acesso direto à base de
dados
26
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Implementação de Referência e as
Versões Futuras

Novas extensões significativas da
linguagen planejadas para 10.1 e futuro
– Elementos de orientação a objetos (Ex.
classes)
– Auditoria e outros serviços providos pelo
produto
Simplify your business

27
Materiais a serem revisados e estendidos
para aderir às melhores práticas do
OpenEdge 10.1
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Agenda




Simplify your business

28
Introduzindo a Camada de Interface de
Serviços
Gerenciando instâncias de ProDataSets
Gerenciamento de Contexto
Tópicos Adicionais e Futuro
Conclusões
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Resumindo…


Simplify your business

Pense sobre e planeje os serviços em sua
aplicação
Pense sobre quais objetos controlam os
dados
Pense sobre contexto e outros aspectos
de uma servidor de aplicações stateless
29
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Simplify your business
Perguntas?
30
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Simplify your business
Grato pelo
seu Tempo!
31
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Simplify your business
32
© 2005 Progress Software Corporation
Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Download

Simplify your business