1
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Integração de Aplicações e Sistemas Abordagem Táctica da Integração
Enterprise Application Integration –
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Tecnologias de Integração de Aplicações
• Transferência de Ficheiros• Captura da Interface Utilizador• Orientado aos Dados• Orientado às API das Aplicações• Orientado aos Métodos• Orientado às Mensagens• Orientado aos Serviços – Web Services
2
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Transferência de Ficheiros
• Universal - todos os sistemas operativos e linguagens de programação suportam a noção de ficheiro
• Etapas de interacção– Codificação – objecto para ficheiro– Descodificação – ficheiro para objecto
• A complexidade da codificação e descodificação aumenta exponencialmente com a complexidade dos objectos a transferir– Apenas podem ser trocados objectos cujos tipo é relativamente
simples• O desempenho é limitado• É de longe o método ainda mais utilizado
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Níveis de Integração Tradicionaisvisão anterior ao SOA
Enterprise Application Integration - Linthicum
3
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Captura da Interface Utilizador (screen scraping)
• Extrair informação directamente da interface utilizador de outra aplicação
• Vantagens– Adequado para integrar aplicações legadas onde não seja possível alterar o
código• Por exemplo, programas COBOL em mainframes
– Não acede directamente aos dados– Não é necessário alterar a outra aplicação
• Desvantagens– A interface das aplicações não foi desenvolvida para permitir integração– Não é trivial um programa simular um utilizador numa aplicação– A interface com o utilizador normalmente é bastante volátil– O desempenho é em geral bastante baixo– Pode ser bastante instável devido a problemas de comunicação,
recuperação de servidores
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Exemplo Típico de Ferramentas de ScreenScraping
4
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Web scraping
• As Web pages são construídas com linguagens de mark-upem texto (HTML, XHTML), contudo a maioria das webpages foi concebida para consumo humano e frequentemente misturam conteúdo com apresentação.
• Os screen scrapers renasceram para extrair informação de HTML e outros linguagens de markup.
• Os search engines e outros web crawlers usam muitas técnicas de scraping.
• Devido ao scraping generalizado, foram desenvolvidas várias técnicas de anti-screen scraping...
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Web Scraping
5
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Orientado aos Dados
• Extrair informação de uma base de dados, eventualmente processar/transformar a informação e actualizar outra base de dados
• Vantagens– simples tanto em Windows como em Java com ODBC e/ou JDBC– Custo relativamente reduzido porque não obriga a refazer aplicações
• Desvantagens – Uma grande organização pode ter centenas de bases dados– Obriga a ter conhecimento técnico sobre repositórios de bases de dados
porque a operação pode ter consequências graves para a informação– Os tipos de dados podem ser diferentes obriga a transformar– Os dados não são validados pela aplicação, – Efectua-se uma ligação forte entre aplicações - qualquer mudança afecta a
integração– Dados replicados podem ficar inconsistentes
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Evolução• Inicialmente um mecanismo para aceder de forma distribuída a uma
Base de Dados.• Evoluiu para permitir integrar vários tipos de Bases de Dados: Bases
de Dados não relacionais, ficheiros (flat files), folhas de cálculo, email, etc.
• Criação de Bases de Dados Virtuais independentes dos formatos das fontes da informação
6
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
O que faz o Middleware de integração de Bases de Dados
• Uma interface (API) com as aplicações• Converte os comandos da API numa linguagem que a Base
de Dados compreenda, ex.: SQL• Envia o comando para a Base de Dados através da rede• Processa o comando na Base de Dados de destino• Transmite o resultado através da rede para o cliente• Converte a resposta para um formato compreensível pela
aplicação
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Open Database Connectivity - ODBC
• Norma criada pela Microsoft• API independente da Base de Dados• Drivers para ligar às várias Bases de Dados
geridos de forma integrada• Uma aplicação usando ODBC é independente da
Base de Dados se não utilizar aspectos específicos como stored procedures, triggers, ou comandos directos de SQL
7
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
ODBC
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Java Data Base Connectivity - JDBC
• Interface standard Java para acesso a bases de dados relacionais
– Baseada em SQL• A interface define um conjunto de
classes Java que permitem a uma applet, servlet, JavaBean ou aplicação ligar-se a uma Base de Dados.
• Usa Java para virtualizar o uso do SQL• Fornecedores de bases de dados
disponibilizam drivers JDBC para as suas bases de dados
• O java.sql.DriverManager controla o carregamento/descarregamento dos drivers apropriados
8
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Caso Didáctico
ADO.NET
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
OLE DB
• Permite criar uma Base de Dados Virtuais com acesso a múltiplas fontes de Informação.
• A interfaces é estabelecida com objectos COM
• As fontes de informação são data providers• Os objectos COM que disponibilizam a
informação são service providers• O OLE DB disponibiliza 55 interfaces
agrupadas em 7 tipos de objectos– DataSource– DBSession– Command– Rowset– Index– ErrorObject– Transaction
9
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Evolução
ODBC• API standard escrita em C (baixo nivel)• Dificuldades: Utilização em aplicações VB
DAO• 1º Interface orientado a objectos• Acesso directo BD locais (Access, Excel, DBF) : JET DB Engine• Dificuldades: Pouco eficiente, requer excesso memória
RDO• Acesso optimizado para ODBC (SQL Server) : ODBCDirect• Dificuldades: Especifico para acesso ODBC
OLE DB• Suporte BD não relacionais (flat-files, BD hierarquicas)• Modelos objectos construído na tecnologia COM• Dificuldades: Provider escrito template C++ (ATL)
ADO• Componentes optimizadas para ambiente distribuído• Evolução baseada no provider OLE DB• Dificuldades: Tecnologia COM
ADO .NET• Modelo objectos construído na tecnologia .NET• Evolução natural do ADO• Focado para arquitecturas N-Tier, Suporte XML, Ligações Fracas
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Arquitectura
10
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Data Provider
• Conjunto de componentes desenhados para manipulação e leitura de dados de uma fonte dados especifica
• Providers existentes:– SQL Server - System.Data.SqlCliente.dll (TDS Tabular Data
Stream)– OLEDB Data Provider - System.Data.OleDb.dll– ODBC Data Provider – System.Data.Odbc.dll– Custom Data Provider – conjunto interfaces de acesso a dados– Outros - Oracle, Exchange, etc
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Connection
• Componente que serve de ligação à fonte de dados• Parâmetros necessários:
– ConnectionString – Contém atributos que definem o modo de acesso:• Provider = SQLOLEDB; Data Source = servidor; Initial Catalog = BD; User
ID = utilizador; Password = Pwd; Trusted Security = Yes;
• Exemplo:Dim connString as String = “Data Source=localhost;
Initial Catalog=NorthWind”Dim connection as SqlConnection = New
SqlConnection(connString)connection.Open()....connection.Close()
• NOTA: As ligações têm de ser explicitamente fechadas
11
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Command
• Componente que permite executar um comando na fonte de dados e possibilita:
– Retorno de informação (script SQL - SELECT)– Modificar informação (script SQL – INSERT, UPDATE, DELETE)– Executar procedimentos (stored procedures), com e sem parameterização
(Parameters Collection)– Tipos Comando
• CommandType.StoredProcedure - Stored Procedure• CommandType.TableDirect – Tabela (OLEDB Provider)• CommandType.Text - Script SQL (por omissão)
– Métodos• ExecuteNonQuery (Execução script para alteração)• ExecuteScalar (Retorno de cálculo de um valor: COUNT, MAX, MIN)• ExecuteReader (Retorno de um resultado para DataReader)• ExecuteXmlReader (Retorno de um resultado para XmlReader: SQL Server
2000 “FOR XML”)
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
DataReader
• Componente que permite o acesso para leitura sequencial do resultado de um comando
– Forward Only e Read Only (lógica de cursor)– Um único registo em memória de cada vez– Necessariamente ligada á fonte de dados– Apropriado para consulta de grande volume dados
– Exemplo:SqlCommand command = connection.CreateCommand();command.CommandText = "select nome, numero from alunos";conn.Open();
SqlDataReader reader = command.ExecuteReader();while (reader.Read())
s += reader.GetString(0);
12
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Arquitectura
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
DataSet
• Componente que permite aceder e manipular dados de forma desligada da fonte de dados– Representação relacional, em memória, composta por
tabelas, relações, chaves primárias, chaves primárias– Representação de dados (XML) e estruturas (Schema)– Combina e relaciona dados de fontes heterogéneas– Facilita o transporte de dados em sistemas distribuídos,
através de componentes .NET, Web Services , .NET Remoting
– Permite aplicar o mecanismo de DataBinding a nível gráfico
13
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
DataAdapter
• Componente que permite transferir dados e estrutura entre a fonte dados e o DataSet
• Métodos– Fill – Preenche o DataSet com o resultado do comando intrínseco
ao DataAdapter (SelectCommand)– Update – Reconciliação de dados entre o DataSet e a fonte dados,
recorrendo aos comandos intrínsecos do DataAdapter(InsertCommand, UpdateCommand, DeleteCommand) conforme o estado de cada registo (Added, ModifiedCurrent Deleted)
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
CommandBuilder
• O DataAdapter necessita ter definido comandos de INSERT, UPDATE, DELETE para actualizar (Update) a fonte dados
• O Wizard cria automaticamente os comandos em design-time através de uma ligação definida
• Em run-time o CommandBuilder pode ser utilizado para gerar comandos de actualização de uma única tabela com base no comando intrínseco SELECT
• Exemplo: SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM Customers", connection);SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(dataAdapter);dataAdapter.Fill(dataSet, "Customers");// sem o SqlCommandBuilder, esta linha falhariacustDA.Update(custDS, "Customers");connection.Close();
14
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Caso de Utilização
Gestão das frequências
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Orientado às API das Aplicações
• As aplicações em package mais utilizadas (ex.: SAP, Peoplesoft, Baan) expõem normalmente interfaces para aceder a processos ou informação.
• Vantagens– Para aplicações dominantes como os ERP permite garantir uma
coerência da integração.– Alguns pacotes têm interfaces bem documentadas permitindo
aceder a informação ou processos de alto nível• Desvantagens
– Cada aplicação define uma interface diferente e proprietária– As interfaces são complexas e por vezes pouco documentadas– Evoluções da versão do pacote de software raramente são
compatíveis com as integrações anteriores
15
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Integração com SAP
• ABAP– BAPIs, RFCs– IDOCs – Muitas vezes utilizado conjuntamente com EDI, é
utilizado de forma assíncrona. Existe a possibilidade de expor um BAPI como IDOC
– WebServices – Só a partir da release 6.40. Pode-se expor um BAPI como WebService
– A Integração com outras linguagens é feita com adaptadores .Net e JCA – Java Connector Architecture
• J2EE– Mecanismos Java usuais: WebServices, RMI, RMI-IIOP (para
interacção com CORBA), etc...
8/28/2003 José Alves Marques
Departamento de Engenharia Informática
Caso de Utilização
• SAP R3