unidade 6 – tecnologias internet na integração de sistemas

Propaganda
UNIDADE 6 – TECNOLOGIAS INTERNET NA INTEGRAÇÃO DE SISTEMAS
- As camadas middleware suportam a interoperação entre componentes distribuídos
Exemplos: CORBA, DCOM, RMI, ... [Ver Trabalho prático 2]
- JINI e a federação de serviços [Trabalho prático 4]
- Interfaces hipermedia, páginas web activas
- JSP, ASP, ...
INTRODUÇÃO À ARQUITECTURA JINI
http://www.sun.com/jini/whitepapers/jini-execoverview.pdf
http://www.sun.com/jini/
Conceitos base:
-
Serviço – uma entidade que pode ser usada por uma aplicação, por um
utilizador, ou outro serviço. É representado por um objecto com um ou
mais métodos. Num sistema distrribuído teremos então uma colecção
de serviços que podem ser usados / acedidos para suportar um dado
processo.
-
Federação de serviços – um mecanismo para permitir que
fornecedores de serviços tornem esses serviços acessíveis aos
potenciais utilizadores de forma transparente quanto à sua localização
e forma de implementação interna. Numa federação os serviços são
registados num repositório que constitui o ponto de acesso por parte de
eventuais clientes.
-
“Lookup service” – o ponto de contacto principal entre utilizadores e
o sistema. É uma colecção de descriptores de serviços e respectivos
“proxies” (interfaces de acesso) ou mesmo a respectiva
implementação. Trata-se pois dum repositório (lógico) de serviços
cujas implementaçõess podem eventualmente estar localizadas em
qualquer ponto duma rede.
-
Protocolos – A operação da arquitectura Jini é baseada num conjunto
de protocolos: discovery, join, lookup.
Registo de serviços numa directoria “lookup”:
Para registar um novo serviço num sistema Jini recorre-se aos protocolos discovery e
join:
a) O fornecedor do serviço (que deverá previamente ter implementado esse serviço)
tenta localizar um serviço de lookup na sua rede usando o protocolo discovery.
Lookup Service
Service Provider
Service
Service proxy
Implementation Service attributes
Discovery
[seeking a lookup service]
b) Uma representação do serviço é carregada na directoria de lookup usando o
protocolo Join.
Esta “representação” do serviço incluirá uma descrição dos atributos do serviço
bem assim como a interface de acesso. Esta interface de acesso será um objecto
representando o serviço, incluindo os métodos que podem ser invocados pelos
potenciais clientes. Caso o serviço tenha a sua implementação remota, esta
interface será apenas um “proxy” para o objecto remoto.
Lookup Service
Service proxy
Service attributes
Reference
Service Provider
Service
Service proxy
Implementation Service attributes
Join
Acesso a serviços por parte dum cliente
a) O cliente localizará o serviço que lhe interessa (através da sua interface e de
atributos que podem ser usados para filtar as potenciais ofertas de múltiplos
serviços com a mesma interface). Uma cópia da representação do serviço
(“service proxy”) é carregada no espaço do cliente. Se a implementação do
serviço estiver no lookup é essa implementação que é carregada no cliente.
O serviço de “lookup” funciona como um “mercado” onde os clientes podem
procurar os serviços que necessitam.
Lookup Service
Service proxy
Service proxy
Service attributes
Service Provider
Copy
Service
Implementation
Service Provider
Client
Service proxy
Service
Implementation
b) O cliente activa (invoca) o serviço através dos métodos disponibilizados pela
representação do serviço.
Lookup Service
Service proxy
Service proxy
Service attributes
Service Provider
Service
Implementation
Client
Service proxy
Service invocation
Desta forma o cliente “não sabe” onde o serviço se encontra implementado. O cliente
invoca os métodos fornecidos pela representação do serviço. Se o serviço for remoto
serão os métodos do proxy quem assegura a invocação remota (por exemplo através de
RMI).
Caberá ao implementador do serviço fornecer a representação adequada desse serviço
(como um objecto “imagem” do serviço). Essa representação será um objecto Java.
Integração de sistemas baseada em Jini
Os sistemas legados podem ser transformados em serviços integráveis numa arquitectura
Jini desde que um invólucro adequado seja construído.
Client space
Service proxy
-Method M1
-Method M2
-...
Wrapper
Legacy
system
Client
application
...local call M1
Remote invocation
of the M1 implementation
Para além deste invólucro, o fornecedor do serviço terá de implementar também a
representação do serviço (“service proxy”). Este “proxy” deve ser implementado em
Java, de acordo com as regras de interface acordadas para um dado serviço de lookup. O
sistema legado, bem como o respectivo invólucro, poderão estar implementados em
qualquer linguagem. Os método incluídos no “proxy” implementarão qualquer protocolo
privado (da escolha do fornecedor do serviço) para interactuar com o sistema legado e
respectivo invólucro (o RMI é apenas uma hipótese).
O cliente preocupar-se-à apenas com as especificações registadas no directório de
lookup, sendo-lhe transparente a localização e a implementação do serviço.
Leasing
Como os serviços são disponibilizados por diversos fornecedores remotos, pode
acontecer que um serviço deixe de estar disponível. Assim, o período de utilização
garantida do serviço deve ser especificado (conceito de lease). Os “leases” podem ser
renovados.
Um “lease” pode ser exclusivo (apenas um utilizador tem acesso ao serviço durante esse
período de “lease”) ou não exclusivos (permitindo partilha por múltiplos utilizadores).
INTERFACES HIPERMEDIA
A adopção de interfaces hipermedia (por exemplo acessíveis com um browser) permite
dotar as várias aplicações que são integradas de uma interface comum.
Para isso há que passar do modelo estático das páginas HTML para páginas dinâmicas
cujo conteúdo é alimentado por fontes dinâmicas de informação.
Web browser
HTML
Web Server
...
Static HTML pages
Modelo estático
Web browser
HTML +
CGI
Web Server
Application
(data source)
DB
...
HTML pages
with additional tags
Uma primeira forma de dinamismo
Web browser
Web Server
HTML
+ scripts
JSP / ASP Server
Application
(data source)
DB
...
HTML + scripts
Acesso dinâmico a fontes de informação
JSP – JavaServer Pages - http://www.jspinsider.com/articles/jsp/Learning_JSP.html
- http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
JSP scripts:
<% Java Code %>
Exemplo:
<%
String queryData = request.getQueryString();
out.println("Attached GET data: " + queryData);
%>
Exemplo:
<% if (Math.random() < 0.5) { %>
Have a <B>nice</B> day!
<% } else { %>
Have a <B>lousy</B> day!
<% } %>
ASP – Active Server Pages (Microsoft) - http://www.w3schools.com/asp/
- http://msdn.microsoft.com/workshop/server/asp/asptutorial.asp
Exemplo dum script em ASP:
<%@ Language=VBScript %>
<html>
<head>
<title>Example 4</title>
</head>
<body>
<%IF Hour(time)>18 OR Hour(time)<4 THEN%>
Good Night Everyone.
<%ELSE%>
Good Morning Everyone.
<%END IF%>
</body>
</html>
Comparação JSP – ASP: http://java.sun.com/products/jsp/jsp-asp.html
Download