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