1 / 32

Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II

Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II. Alessandro Martins Technical Architect Field Services Latin America Operations. Moderna Arquitetura de Aplicações. Lógica de negócio comum com modelos avançados. Acesso a dados abstraído do repositório.

vivian
Download Presentation

Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Alessandro Martins Technical Architect Field Services Latin America Operations

  2. Moderna Arquitetura de Aplicações Lógica de negócio comum com modelos avançados Acesso a dados abstraído do repositório OpenEdge Reference Architecture – uma visão em camadas Usuários Serviços Corporativos Camadas de apresentação e integração separadas Camada de Apresentação Camada de Integração Camada de Serviços de Negócio Camada de Acesso a Dados Repositório de Dados Não-gerenciado Repositório de Dados Gerenciado

  3. Agenda • Introduzindo a Camada de Interface de Serviços • Gerenciando instâncias de ProDataSets • Gerenciamento de Contexto • Tópicos Adicionais e Futuro • Conclusões

  4. SOA – Modelo de interação baseado em serviços Serviços Corporativos Broker/ Serviço de Diretório Buscar / Detalhes Publicar Consumidor do Serviço Vincular/ Invocar Provedor do Serviço Tarefa Negócio Tarefa Negócio Tarefa Negócio

  5. Serviços de apoio gerenciador pelo Contêiner Gerência de Sessão/Contexto Controle de Transações Segurança Lógica Cliente Lógica Servidor Proxy de Serviço Interface de Serviços Gerencia/o de Pedidos Fn() Contêiner de Apresentação Contêiner de Serviços …

  6. A Interface de Serviços na Arquitetura Usuários Serviços Corporativos Camada de Apresentação Camada de Integração Interface de Serviços Camada de Serviços de Negócio Camada de Acesso a Dados Repositório de Dados Gerenciado Repositório de Dados Não-gerenciado

  7. 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 • 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

  8. A Camada de Interface de Serviços Cliente Servidor Data-Access Object Procedure IU Business Entity DATASET dsOrder DATASET dsOrder DATASET dsOrder RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder BY-REFERENCE) fetchWhere: FILL ATTACH RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) Procedure Gateway Servidor Procedure Proxy Cliente Interface de Serviços

  9. Proxy SI (Service Interface) do lado cliente Procedure Proxy Cliente Procedure de Interface de Usuário proSIproxy.p PROC fetchWhere: RUN proSIgateway.p ON hAppServer (INPUT “Order”, INPUT “fetchWhere”…) … dsOrderWinAdv.w {dsOrder.i} {proSIproxyStart.i} … RUN fetchWhere IN ghProxySIproc (INPUT “Order”, INPUT ttContextDSOrder, OUTPUT DataSet dsOrder). (chamada ao gateway do lado servidor)

  10. Procedures SI do lado servidor Procedure da lógica de negócio do servidor (chamada da sessão do cliente) Procedure gateway do lado servidor • proSIserver.p • DEFINE T-T ttEntity… • FN startEntity: • FN getEntityHandle: • /* entity temp-table lookup */ • FN getDAOHandle: proSIgateway.p hEntity = getEntityHandle in hSI. RUN fetchWhere in hEntity … (chamada à API de Business Entity)

  11. 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 • 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

  12. Agenda • Introduzindo a Camada de Interface de Serviços • Gerenciando instâncias de ProDataSets • Gerenciamento de Contexto • Tópicos Adicionais e Futuro • Conclusões

  13. Gerenciando 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

  14. Instâncias de ProDataSet emOUTPUT Cliente Servidor Procedure IU Business Entity Data-Access Object DATASET- HANDLE DATASET dsOrder DATASET dsOrder DATASET dsOrder BY-REF BY-REF HANDLE RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder BY-REFERENCE) RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) fetchWhere: FILL ATTACH Procedure de Prox yde Cliente Procedure de Gateway de Servidor

  15. Agenda • Introduzindo a Camada de Interface de Serviços • Gerenciando instâncias de ProDataSets • Gerenciamento de Contexto • Tópicos Adicionais e Futuro • Conclusões

  16. Gerenciameneto de Contexto: Conceitos Bá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

  17. Passando Contexto entre Cliente e Servidor • 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

  18. Contexto entre Cliente e Servidor Servidor Cliente Business Entity Procedure IU DATASET dsOrder DATASET dsOrder temp-table de contexto/parâmetros RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder BY-REFERENCE) WhereString = “…” Procedure de Prox yde Cliente Procedure de Gateway de Servidor NextRowid = 63524

  19. 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 • Requer que um Context ID seja passado pelo cliente • Suporte a Group UID no exemplo e na 10.1

  20. Contexto Armazenado no Servidor Servidor Cliente Business Entity Procedure IU DATASET dsOrder DATASET dsOrder temp-table de contexto/parâmetros RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder BY-REFERENCE) ContextID = 95847 Procedure de Prox yde Cliente Procedure de Gateway de Servidor 95847 English Auth …

  21. 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 • Permite validação parcial no servidor • ProDataSet final de atualização reconstruído a partir do contexto

  22. Dados de ProDataSets ou Temp-tables como Contexto Servidor Cliente Business Entity Procedure de IU DATASET dsOrder DATASET dsOrder ContextID = 95847 RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder BY-REFERENCE) “OrderNum = 1” 95847 Order 1 Line 1 Procedure de Prox yde Cliente Procedure de Gateway de Servidor 95847 Order 1 Line 1 95847 Order 1 Line 2

  23. Agenda • Introduzindo a Camada de Interface de Serviços • Gerenciando instâncias de ProDataSets • Gerenciamento de Contexto • Tópicos Adicionais e Futuro • Conclusões

  24. Artigo: Usando Repositórios de dados não Gerenciados Using an Unmanaged Data Source • Usa um documentoXML no lugar de uma base de dados • Procedure de data sourcealternativa identifica o documento • Código específico popula o ProDataSet • Restante do código do Business Entity roda sem modificações

  25. Artigo: Interface .NET Simples a Business Entities Building an Alternative User Interface to Business Entities • Gerador de código cria um arquivoXSD com a descrição do DataSet • Com isto, cria também um arquivo de classeC# para o DataSet • A versão C# do proxycliente roda a mesma procedure gateway no AppServer • A classe DataSet C# é usada para construir a IU

  26. Artigo:Lógica de Negócio Avançada Advanced Business Logic • O papel das procedures detrigger debase de dados • Um Business Entity acessando outro • Um Data Access Object acessando outro • Quando permitir acesso direto à base de dados

  27. 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 • Materiais a serem revisados e estendidos para aderir às melhores práticas do OpenEdge 10.1

  28. Agenda • Introduzindo a Camada de Interface de Serviços • Gerenciando instâncias de ProDataSets • Gerenciamento de Contexto • Tópicos Adicionais e Futuro • Conclusões

  29. 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

  30. Perguntas?

  31. Grato pelo seu Tempo!

More Related