Implementando a Implementando a Arquitetura de Arquitetura de Referência OpenEdge Referência OpenEdge (OERA) - Parte II(OERA) - Parte IIAlessandro MartinsTechnical ArchitectField Services Latin America Operations
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation2 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Camadas de apresentação e integração separadas
Acesso a dadosabstraído
do repositório
Lógica de negóciocomum com modelos
avançados
OpenEdge Reference Architecture – uma visão em camadas
Usuários Usuários
Camada de Apresentação
Camada de Serviços de Negócio
Camada de Acesso a Dados
Repositóriode Dados Gerenciado
Repositóriode Dados Gerenciado
Repositóriode Dados
Não-gerenciado
Repositóriode Dados
Não-gerenciado
Serviços Corporativos Serviços Corporativos
Camada de Integração
Moderna Arquitetura de AplicaçõesModerna Arquitetura de Aplicações
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation3 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
AgendaAgenda
Introduzindo a Camada de Interface de Serviços
Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation4 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
ServiçosCorporativos
ServiçosCorporativos
Tarefa Negócio
Tarefa Negócio
Tarefa Negócio
SOA – Modelo de interação baseado SOA – Modelo de interação baseado em serviçosem serviços
Vincular/ Invocar
Consumidor
do Serviço
Consumidor
do Serviço
Broker/ Serviço
de Diretório
Broker/ Serviço
de Diretório
Buscar / Detalhes
Publicar
Provedor do Serviço
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation5 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Serviços de apoio gerenciador pelo Serviços de apoio gerenciador pelo ContêinerContêiner
Proxy de Serviço
Co
ntêin
er de A
presen
tação
Interface de Serviços
Co
ntêin
er de S
erviços
LógicaCliente
LógicaServidor
Gerencia/ode Pedidos
…
Gerê
ncia
de S
essão/C
on
texto
Con
trole
de T
ran
sações
Seg
ura
nça
Fn()Fn()
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation6 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Interface de Serviços na ArquiteturaA Interface de Serviços na Arquitetura
Usuários Usuários
Camada de Serviços de Negócio
Camada de Acesso a Dados
Repositóriode
Dados Gerenciado
Repositóriode
Dados Gerenciado
Repositóriode
Dados Não-gerenciado
Repositóriode
Dados Não-gerenciado
Serviços Corporativos
Serviços Corporativos
Camada deIntegração
Camada de Apresentação
Interface de Serviços
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation7 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Papel da Camada de Interface de Papel da Camada de Interface de Serviços de ExemploServiços de Exemplo
Gerencia entidades do lado servidor– Mantém um catálogo em memória das
instâncias em execução 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
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation8 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Camada de Interface de ServiçosA Camada de Interface de Serviços
Cliente Servidor
Procedure IU
DATASET dsOrder
Business Entity
DATASET dsOrder
Data-Access Object
DATASET dsOrder
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
BY-REFERENCE)
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
fetchWhere:
FILL
ATTACH
Pro
ced
ure
Pro
xy C
lien
te
Pro
ced
ure
Gat
eway
Ser
vid
or
Interface de Serviços
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation9 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Proxy SI (Service Interface) do lado Proxy SI (Service Interface) do lado clientecliente
dsOrderWinAdv.w
{dsOrder.i}{proSIproxyStart.i}…RUN fetchWhere INghProxySIproc(INPUT “Order”, INPUT ttContextDSOrder, OUTPUT DataSet dsOrder).
proSIproxy.p
PROC fetchWhere:RUN proSIgateway.p ON hAppServer (INPUT “Order”, INPUT “fetchWhere”…)
…
(chamada ao gateway do lado
servidor)
Procedure de
Interface de Usuário
Procedure Proxy
Cliente
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation10 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Procedures SI do lado servidorProcedures SI do lado servidor
proSIgateway.p
hEntity = getEntityHandle in hSI.RUN fetchWhere in hEntity…
proSIserver.p
DEFINE T-T ttEntity…FN startEntity:FN getEntityHandle: /* entity temp-table lookup */FN getDAOHandle:
(chamada da sessão do
cliente)
(chamada à API de Business Entity)
Procedure gateway
do lado servidor
Procedure da lógica
de negócio do servidor
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation11 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
API da Procedure GatewayAPI 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 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
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation12 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
AgendaAgenda
Introduzindo a Camada de Interface de Serviços
Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation13 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Gerenciando instâncias de ProDataSetsGerenciando instâncias de ProDataSets
Qual objeto “é o dono” da instância do ProDataSet no servidor e no cliente?
ProDataSets podem ser passados BY-REFERENCE para evitar cópia
A instância do chamador é sempre utilizada, mesmo em caso de OUTPUT– Nota: Isto será estendido na versão 10.1
para suportar um modelo “pull” onde a instância da procedure chamada é utilizada
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation14 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Instâncias de ProDataSet emInstâncias de ProDataSet emOUTPUTOUTPUT
Cliente Servidor
Procedure IU
DATASET dsOrder
Business Entity
DATASET dsOrder
Data-Access Object
DATASET dsOrder
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
BY-REFERENCE)
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
fetchWhere:
FILL
ATTACH
Pro
ced
ure
de
Pro
x yd
e C
lien
teBY-REF
Pro
ced
ure
de
Gat
eway
de
Ser
vid
or
HANDLE
DATASET-
HANDLE BY-REF
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation15 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
AgendaAgenda
Introduzindo a Camada de Interface de Serviços
Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation16 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Gerenciameneto de Contexto: Conceitos Gerenciameneto de Contexto: Conceitos BásicosBásicos
Ambiente-alvo é cliente de um AppServer state-less ou state-free
Cada interação é independente Manutenção de contexto entre interações
inter-relacionadas
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation17 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Passando Contexto entre Cliente e Passando Contexto entre Cliente e ServidorServidor
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
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation18 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
temp-table de contexto/parâmetros
Contexto entre Cliente e ServidorContexto entre Cliente e Servidor
Cliente Servidor
Procedure IU
DATASET dsOrder
Business Entity
DATASET dsOrder
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
BY-REFERENCE)
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
WhereString = “…”
NextRowid = 63524
Pro
ced
ure
de
Pro
x yd
e C
lien
te
Pro
ced
ure
de
Gat
eway
de
Ser
vid
or
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation19 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Contexto Mantido no ServidorContexto 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 Requer que um Context ID seja passado pelo
cliente– Suporte a Group UID no exemplo e na 10.1
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation20 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
temp-table de contexto/parâmetros
Contexto Armazenado no ServidorContexto Armazenado no Servidor
Cliente Servidor
Procedure IU
DATASET dsOrder
Business Entity
DATASET dsOrder
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
BY-REFERENCE)
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
ContextID = 95847
95847 English Auth …
Pro
ced
ure
de
Pro
x yd
e C
lien
te
Pro
ced
ure
de
Gat
eway
de
Ser
vid
or
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation21 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
ProDataSet e Temp-table de ContextoProDataSet 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– Permite validação parcial no servidor– ProDataSet final de atualização reconstruído
a partir do contexto
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation22 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Dados de ProDataSets ou Temp-tables Dados de ProDataSets ou Temp-tables como Contextocomo Contexto
Cliente Servidor
Procedure de IU
DATASET dsOrder
Business Entity
DATASET dsOrder
RUN fetchOrder
IN hdsOrder
(. . . ,
OUTPUT
DATASET
dsOrder
BY-REFERENCE)
RUN FetchWhere
IN hEntity
(. . .,
OUTPUT
DATASET
phFetchDataSet
BY-REFERENCE)
ContextID = 95847
95847 Order 1 Line 1
95847 Order 1 Line 2
95847 Order 1 Line 1
“OrderNum = 1”
Pro
ced
ure
de
Pro
x yd
e C
lien
te
Pro
ced
ure
de
Gat
eway
de
Ser
vid
or
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation23 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
AgendaAgenda
Introduzindo a Camada de Interface de Serviços
Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation24 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo: Usando Repositórios de dados Artigo: Usando Repositórios de dados não Gerenciadosnão Gerenciados
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
Using an Unmanaged Data Source
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation25 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo: Interface .NET Simples a Business Artigo: Interface .NET Simples a Business EntitiesEntities
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
Building an Alternative User Interface to Business Entities
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation26 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Artigo:Artigo:Lógica de Negócio AvançadaLógica de Negócio Avançada
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
Advanced Business Logic
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation27 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
A Implementação de Referência e as A Implementação de Referência e as Versões FuturasVersõ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
Materiais a serem revisados e estendidos para aderir às melhores práticas do OpenEdge 10.1
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation28 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
AgendaAgenda
Introduzindo a Camada de Interface de Serviços
Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation29 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Resumindo…Resumindo…
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
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation30 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Perguntas?Perguntas?
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation31 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Grato pelo seu Grato pelo seu Tempo!Tempo!
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation32 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II
Top Related