Interfaces de Serviço na Prática. Luciano Oliveira Sr. Instructor, Consultant Global Field Services



Documentos relacionados
Integre pela Internet com os Web Services OpenEdge

Transações no Mundo SOA. Luciano Oliveira Solution Consultant

Como funciona a plataforma Superlógica? - Livro 4 de 4. Como funciona a interface de integração? Como você poderá complementar o sistema?

MANUAL AGENDADOR DE TAREFAS LOGIX

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

Java II. Sérgio Luiz Ruivace Cerqueira

Adotando OpenEdge Architect. Luciano Oliveira Sr. Instructor, Consultant Global Field Services

Java II. Sérgio Luiz Ruivace Cerqueira

Capítulo 4. Programação em ASP

API de Cotações Bolsa Financeira

JSF - Controle de Acesso FERNANDO FREITAS COSTA

AJaX Asy s nchronous s J avasc S ript p t a nd d XML

Autenticação e Autorização

Guia de integração SMS protocolo HTTP

Como aumentar a produtividade com segurança usando a tecnologia Progress. Camila Valentin Solution Consultant

Programação com Acesso a Banco de Dados

PHP. Hypertext Pre-Processor

2.9. PHP Cookies e variáveis de sessão

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Web Services na plataforma.net

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC TurmaBC TurmaBC TurmaBC

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Sessões. Cookies HTTP Sessões Atributos de sessão

Programação web Prof. Wladimir

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Iniciando com o OpenEdge Architect. Camila Valentin Sr. Instructor, Consultant Global Field Services

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Manual de Integração SMS

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa

SDK Moip-PHP. O MoIP-PHP utiliza o padrão Fluent Interfaces, portanto, você pode fazer o exemplo acima da seguinte forma:

Ajax Asynchronous JavaScript and Xml

Guia rápido de uso de Web Services do NFS-e Easy

Comunicação entre Processos

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Sistemas Distribuídos Arquiteturas Middlewares

PHP Programando com Orientação a Objetos

Forms Authentication em ASP.NET

Projeto Arquitetural do IEmbedded

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

Desenvolvimento de aplicações Web. Java Server Pages

Índice: Nitgen do Brasil

PHP e MySQL Autenticação de Usuários

Exercício em ASP.NET (Agenda)

Persistência de Classes em Tabelas de Banco de Dados

Melhores Práticas para Implementar o AppServer e o WebSpeed. Roberto Oltman

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc.

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1

Exemplo de Aplicaça o Facebook

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

Teleprocessamento e Redes


PHP (Seções, Cookies e Banco de Dados)

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Guia do Usuário commanager

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

C# - Conexão com MySQL

WOW Mobile Rui Miguel Miranda Ramos

3 SCS: Sistema de Componentes de Software

JXTA. Alessandro Vasconcelos Ferreira de Lima.

Guia do RepositorioDocumento

HAT Programação Auditoria Pós x. abril de Versão: 2.0

Desenvolvimento Web TCC Turma A-1

Sistemas Distribuídos

Autenticação e Controle de Acesso em Forms e Reports via Oracle Internet Directory. Daniel Murara Barcia danielbarcia@hotmail.com

Workflow Management Systems

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Chromecast. Seu aplicativo na TV. Ivan de

J550 Testes em Aplicações Web com Cactus

INT-9: Implementing ESB Processes with OpenEdge and Sonic David Cleary

Criação de um Web Services em.net

Boas Práticas de Desenvolvimento Seguro

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Projeto SNGPC para Farmácias e Drogarias

NGIN Mobile Portal Gestão Usuário

Desenvolvimento Web com Framework Demoiselle versão 1.0

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack

Autenticação de dois fatores no SonicOS

Minicurso Computação em Nuvem Prática: Openstack

Sistemas Distribuídos

1 - Entrando no Sistema

Transcrição:

Interfaces de Serviço na Prática Luciano Oliveira Sr. Instructor, Consultant Global Field Services

Antes de começarmos Iniciando do princípio 2

Antes de começarmos Let me tell you a story 3

Antes de começarmos Let me tell you a story 4

Antes de começarmos 5

Antes de começarmos 6

Antes de começarmos Let me tell you a story 7

Agenda Revisão da Arquitetura de Referência OpenEdge Requisitos para Interfaces de Serviço Interfaces de Serviço na Prática OpenEdge GUI WebSpeed UI.NET UI Web services Sonic 8

Arquitetura de Referência OpenEdge Apresentação Serviços de Negócio Acesso a Dados Fontes de Dados Serviços Corporativos Infra-estrutura Comum 9

Interfaces de Serviço De um perspectiva funcional Dispositivos Wireless Relatórios Corporativos Quiosque de Informações B2C Portal Web B2C Camada de Serviços de Negócio Aplicações de Back Office Serviços de Colaboração B2B Integração A2A API aberta 10

Interfaces de Serviço a um ponto de vista técnico.net CF usando Web Services Crystal Xi usando proxy.net.net usando proxy.net OpenEdge WebSpeed OpenEdge AppServer GUI OpenEdge Sonic ESB Sonic MQ Web Services 11

Arquitetura de Referência OpenEdge Interface de Serviços Interface de serviços e utilitários de ambiente Entidades de Negócio Tarefas de Negócio Fluxos de Negócio 12

Interface de Serviços - Definição Uma Interface de Serviços é uma API que é exposta ao mundo externo. Esta API serve como uma ponte entre a camada de Serviços de Negócio e as camadas de Apresentação e/ou Integração. 13

Agenda Revisão da Arquitetura de Referência OpenEdge Requisitos para Interfaces de Serviço Interfaces de Serviço na Prática OpenEdge GUI WebSpeed UI.NET UI Web services Sonic 14

Chamando a lógica de negócios Conectar à lógica de negócios Executar lógica de negócios 15

Passos adicionais Gerenciamento de sessão Gerenciamento de Contexto Segurança Auditoria Serviço de Diretório 16

Chamando a lógica de negócios Conecta à lógica de negócios Gerenciamento de sessão Gerenciamento de contexto Verificações de segurança Atividades de auditoria Encontrar/iniciar lógica de negócio Executar lógica de negócio 17

Responsabilidades do Cliente Conexão ao AppServer É preciso conectar ao AppServer? Como se conecta ao AppServer? Contexto do cliente O cliente pode manter informações de sessão, contexto ou segurança? Podemos controlar e confiar no contexto do lado cliente? 18

Responsabilidades do Cliente Segurança do cliente Como os clientes se autenticam? É possível tomar um token de sessão para validar a identidade ou faz-se necessária a autenticação a cada requisição? Podemos utilizar credencials de cliente (client principals)? Suporte a ProDataSets O cliente pode enviar e receber estruturas do tipo DataSet? O cliente pode enviar dados de tabelas Before/After? 19

Agenda Revisão da Arquitetura de Referência OpenEdge Requisitos para Interfaces de Serviço Interfaces de Serviço na Prática OpenEdge GUI WebSpeed UI.NET UI Web services Sonic 20

OpenEdge GUI Conexão direta ao AppServer Pode manter contexto de cliente Login / ID da sessão Dados do Contexto Suporta credenciais (principals) do cliente Suporte nativo a ProDataSets Escrito em ABL Capaz de realizar chamadas assíncronas ao AppServer 21

Interface de Serviços OpenEdge GUI Conecta-se ao AppServer Passa o Id da Sessione e outras informações de contexto Passa parâmetros para a requisição Pode conter DataSets Recupera sessão/contexto Verifica segurança Retorna resultados ao cliente Pode conter DataSets 22

Interface de Serviços OpenEdge: carfetchwhere.p {autoedge/dscar.i} {services/dscontext.i} {services/dsnull.i} DEFINE INPUT PARAMETER pcentityname AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pcoperationname AS CHARACTER NO-UNDO. DEFINE INPUT-OUTPUT PARAMETER DATASET FOR dscontext. DEFINE OUTPUT PARAMETER DATASET FOR dscar. DEFINE INPUT-OUTPUT PARAMETER DATASET FOR dsnull. DEFINE OUTPUT PARAMETER pcexcstatus AS CHARACTER NO-UNDO. DEFINE VARIABLE hdataset AS HANDLE NO-UNDO. RUN support/prosigateway.p ( INPUT "Car", INPUT "fetchwhere", INPUT-OUTPUT DATASET dscontext BY-REFERENCE, OUTPUT DATASET-HANDLE hdataset, INPUT-OUTPUT DATASET dsnull BY-REFERENCE, OUTPUT pcexcstatus ). IF NOT pcexcstatus > "" THEN DO: DATASET dscar:copy-dataset (hdataset). END. RETURN. 23

Interface de Serviços OpenEdge GUI /* service interface for customer SaveChanges */ DEFINE INPUT PARAMETER pcentityname AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pcoperationname AS CHARACTER NO-UNDO. DEFINE INPUT-OUTPUT PARAMETER DATASET-HANDLE phcontext. DEFINE OUTPUT PARAMETER DATASET-HANDLE phoutputdataset. /* used for fetching data */ DEFINE INPUT-OUTPUT PARAMETER DATASET-HANDLE phdscustomer. /* used for updates */ DEFINE OUTPUT PARAMETER pcexcstatus AS CHARACTER NO-UNDO. RUN restoresessionandcontext (INPUT-OUTPUT DATASET-HANDLE phcontext BY-REFERENCE). RUN checkpermission (INPUT pcentityname, INPUT pcoperationname, OUTPUT lexecuteallowed, INPUT-OUTPUT DATASET-HANDLE phcontext BY-REFERENCE). IF NOT lexecuteallowed THEN LEAVE. 24

Interface de Serviços OpenEdge GUI RUN getoperationdetails (INPUT pcentityname, INPUT pcoperationname, OUTPUT hentity, OUTPUT cprocedurename, OUTPUT linputoutput). /* call method with appropriate INPUT-OUTPUT or OUTPUT parameters */ IF linputoutput THEN DO: RUN VALUE (cprocedurename) IN hentity (INPUT-OUTPUT DATASET-HANDLE phiodataset BY-REFERENCE). END. ELSE DO: RUN VALUE (cprocedurename) IN hentity (OUTPUT DATASET-HANDLE phoutputdataset). END. RUN errorandexceptionhandling (OUTPUT pcexcstatus). RETURN. 25

OpenEdge WebSpeed Modelo cliente/servidor complexo Web browser agente WebSpeed Código WebSpeed camada de Serviços de Negócio Datasets Não suportados em telas HTML Suportados em código WebSpeed Sessão/contexto do cliente (em ambos os clientes ) Login / Id da sessão Contexto do cliente Escrito em ABL 26

Interface de Serviços OpenEdge WebSpeed Mapeia requisições HTML a ABL Forms, variáveis de browser, parâmetros de URL, cookies Pode precisar da criação de Before/After tables para os ProDataSets Conecta-se ao AppServer Ou executa a lógica de negócios na mesma sessão Recupera sessão/contexto Verifica segurança Mapeia os resultados de volta para HTML 27

Interface de Serviços OpenEdge WebSpeed RUN setcontext (INPUT 'wherestring':u, INPUT cwherestring, INPUT '':U). RUN setcontext (INPUT 'batchsize':u, INPUT pibatchsize, INPUT '':U). RUN calloperation (INPUT 'Car':U, INPUT 'fetchcar':u, INPUT-OUTPUT DATASET dscontext BY-REFERENCE OUTPUT DATASET dscar, INPUT-OUTPUT DATASET-HANDLE hnulldataset ). 28

Interface de Serviços OpenEdge WebSpeed PROCEDURE calloperation [ ] RUN checkpermission (INPUT pcentityname, INPUT pcoperationname, OUTPUT lexecuteallowed, INPUT-OUTPUT DATASET-HANDLE phcontext BY-REFERENCE). IF (NOT lexecuteallowed) OR (phcontext:error = TRUE) THEN RETURN. RUN getoperationdetails (INPUT pcentityname, INPUT pcoperationname, OUTPUT hentity, OUTPUT cprocedurename, /*fetchwhere/savechanges*/ OUTPUT linputoutput). RUN VALUE (cprocedurename) IN hentity (INPUT-OUTPUT DATASET-HANDLE phiodataset). END. ELSE DO: RUN VALUE (cprocedurename) IN hentity (OUTPUT DATASET-HANDLE phoutputdataset). END. [ ] 29

Open Client.NET Conecta-se ao AppServer através de proxies Sessão/contexto do cliente Login / Id da Sessão Contexto do cliente Suporte a Datasets Escrito em C#, J#, VB.NET Tipicamente as equipes de desenvolvimento de UI e de backened são separadas Tipicamente Interfaces de Serviço estáticas 30

Interface Open Client.NET Conecta-se ao AppServer através de proxy Passa Id da sessão e outros dados de contexto Pass parâmetros para a requisição Pode conter Datasets Recupera sessão/contexto Verifica segurança Retorna resultados ao cliente Pode conter Datasets 31

Interface de Serviços UI.NET public void GetCars (string sessionid, string modelid, out dscardataset.ecardatatable dtresult) { } Progress.Autoedge.StrongTypesNS.dsCarDataSet dscars = null; Progress.Autoedge.StrongTypesNS.dsContextDataSet dscontext = new Progress.Autoedge.StrongTypesNS.dsContextDataSet(); Progress.Autoedge.StrongTypesNS.dsNullDataSet dsnull = new Progress.Autoedge.StrongTypesNS.dsNullDataSet(); string status = string.empty; dscontext.ttcontext.addttcontextrow(string.empty, "sessionid", sessionid); dscontext.ttcontext.addttcontextrow(string.empty, "wherestring", string.empty); Proxy.carfetchwhere(string.Empty, string.empty, ref dscontext, out dscars, ref dsnull, out status); if (dscars.ecar.haserrors == true) Handle(dsCars.eCar.GetErrors()); if (dscars.ecar.rows.count <= 0) throw new InvalidOperationException(); dtresult = dscars.ecar; 32

Cliente Web Services Datasets Datasets não podem ser expostos a Web Services Before/After tables não são suportados em Web Services Tipicamente não há conhecimento sobre o cliente Não há informação de sessão/contexto de cliente Segurança limitada (e.g. não há login) Cliente normalmente não tem conhecimento sobre backend Precisa de serviços de granularidade fina, autodocumentados 33

Interface de Serviços Web Services Conecta-se ao AppServer através do Web Services Adapter Passa informação de login Valida login Passa informações de contexto/sessão Parâmetros podem ter de ser mapeados em Datasets Datasets devem ser quebrados em temp-tables A lógica de negócios é chamada Business logic 34

Interface de Serviços Web Services PROCEDURE fetchtestdrives : /*------------------------------------------------------------------------------ Purpose: Returns an XML list of Open TestDrives Parameters: INPUT UserId INPUT Password OUTPUT Temp-Table for TestDrives ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcusername AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pcuserpassword AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER TABLE FOR etestdrivews. EMPTY TEMP-TABLE ttcontext. CREATE ttcontext. ASSIGN ttcontext.contextname = "UserLoginName":U ttcontext.contextvalue = pcusername. CREATE ttcontext. ASSIGN ttcontext.contextname = "UserLoginPass":U ttcontext.contextvalue = pcuserpassword. RUN serviceinterface/prosigui2.p (INPUT "TestDriveWS":U, INPUT "fetchopen":u, INPUT-OUTPUT DATASET dscontext BY-REFERENCE, OUTPUT DATASET-HANDLE hdataset, INPUT-OUTPUT DATASET dsnull BY-REFERENCE, OUTPUT pcexcstatus ). END PROCEDURE. 35

Interface de Serviços Web Services public class autoedgeobj : System.Web.Services.Protocols.SoapHttpClientProtocol { [ ] } public autoedgeobj() { this.url = "http://localhost/wsa/wsa1"; } [ ] public string CreatePO_webservicesi() { object[] results = this.invoke("createpo_webservicesi", new object[0]); return ((string)(results[0])); } public System.IAsyncResult BeginCreatePO_webservicesi( System.AsyncCallback callback, object asyncstate) { return this.begininvoke("createpo_webservicesi", new object[0], callback, asyncstate); } public string EndCreatePO_webservicesi( System.IAsyncResult asyncresult) { object[] results = this.endinvoke(asyncresult); return ((string)(results[0])); } 36

Integração com Cliente Sonic Dataset Datasets não podem ser enviados em mensagens Before/After tables não são suportadas Tipicamente não há conhecimento sobre o cliente Normalmente o cliente não tem conhecimento sobre o backend Deve ser apenas uma mensagem publicada Não há resposta direta 37

Integração com Cliente Sonic Recebe a mensagem Mensagem pode ter de ser mapeada em Datasets Passa informação de login Valida login Passa informações de contexto/sessão Chama-se a lógica de negócios 38

Interface de Serviços Sonic 39

Em suma Interfaces de serviço Conectam diferentes tecnologias Implementam serviços principais Devem ser criadas para cada tipo de cliente 40

Perguntas? 41

42