next up previous
Next: Tarefas Up: entidades-e-servicos Previous: As interfaces de uma

O padr�o servi�o/sess�o de fachada

O padr�o ``servi�o (ou sess�o) de fachada'' � bastante usado, em ambientes EJB, para evitar que clientes fa�am chamadas remotas a componentes tipo entidade. Nesse padr�o de projeto, todos os acessos remotos aos dados das entidades devem ser mediados por componentes tipo servi�o ou sess�o residentes no mesmo servidor. Os componentes tipo servi�o ou sess�o recebem as chamadas remotas dos clientes e fazem chamadas locais a componentes tipo entidade. Tal arranjo tem o objetivo de minimizar o n�mero de chamadas remotas e o tr�fego de dados entre os clientes e o servidor.

No caso de componentes EJB, o padr�o servi�o/sess�o de fachada � conhecido simplesmente como session facade, pois na terminologia EJB o nome session � usado tanto para componentes tipo servi�o (stateless session beans) como para componentes tipo sess�o (stateful session beans). Para mais informa��es sobre esse padr�o de projeto no contexto de EJB, veja o livro EJB Design Patterns, de Floyd Marinescu (Wiley, 2002).

O arquivo VideoRental.idl, inclu�do ao final deste texto, mostra o uso de um servi�o de fachada numa aplica��o servidora voltada para v�deo-locadoras. H� tr�s tipos de entidades no servidor da v�deo-locadora:

O uso de tipos de entidades distintos para Movie e MovieCopy capturam a diferen�a entre um ``filme abstrato'' (o conte�do de um DVD ou de uma fita VHS) e um exemplar (c�pia f�sica) de filme, em DVD ou VHS. O que voc� aluga e leva para casa � o exemplar, n�o o filme.

Veja, no arquivo VideoRental.idl, que h� um relacionamento 1 para N entre Movie e MovieCopy (podem haver muitos exemplares de um filme). No lado Movie, esse relacionamento se manifesta atrav�s das opera��o getCopies. No lado do MovieCopy ele se manifesta atrav�s da opera��o getMovie.

H� tamb�m um relacionamento 1 para N entre Customer e MovieCopy (um usu�rio pode alugar muitos CDs ou fitas VHS). Note que a data de devolu��o de um �tem alugado �, conceitualmente, um atributo desse relacionamento. No lado do Customer, o relacionamento se manifesta atrav�s da opera��o getTakenMovieCopies e no lado do MovieCopy atrav�s das opera��es isRented, rentTo, unrent, getTaker e getReturnDate.

Um cliente remoto poderia desempenhar todas as suas tarefas (consultar as informa��es sobre um filme, alugar um exemplar de filme para um usu�rio, etc.) fazendo chamadas �s opera��es dos objetos CORBA que representam as entidades acima descritas. Alternativamente, pode-se fazer com que o servidor disponibilize um ``servi�o de fachada'' e escrever um cliente remoto que fa�a acesso apenas ao objeto CORBA que representa a fachada. O arquivo VideoRental.idl define tamb�m a interface RentalService, que prov� o servi�o de fachada. Note que esse servi�o usa a estrutura auxiliar MovieInfo para passar ao cliente remoto, de uma s� vez, todas as informa��es sobre um filme. O uso de estruturas auxiliares, que carregam um monte de informa��es de uma vez, tem o objetivo de reduzir o n�mero de intera��es entre servidor e seus clientes remotos. Esse � outro padr�o de projeto, conhecido como data transfer object (DTO) e bastante usado em sistemas distribu�dos. O livro EJB Design Patterns (citado anteriormente) cont�m mais informa��es sobre esse padr�o no contexto de EJB.


next up previous
Next: Tarefas Up: entidades-e-servicos Previous: As interfaces de uma
Francisco Reverbel
2006-04-18