"Sim, exatamente, O business delegate faz isso, a interface fica igual mas a camada de negocios muda (troca de DAO por EJB por exemplo). "

Blz, pelo menos entramos num consenso aqui. Para quem fez a pergunta originalmente, a reposta acabou :-)

Agora, vamos entrar numa outra discuss�o, j� que a original foi desvirtuada para as particularidades de Web Services.

Voc� disse:
"A aplica��o Cleinte (swing)) � cliente dos webservices, o webservice layer � cliente do business layer."

Isto est� perfeito! A nossa diverg�ncia de opini�es aconteceu pq vc est� defendendo a coloca��o do BD ap�s a WebService Layer e eu t� querendo que ela fique antes. Na verdade, acho que deve haver um BD para o Cliente e tmb um BD para a WebService layer. Veja porque:

Temos algo assim:
Client Layer --------> WebService Layer ---------> Business Layer

Se colocarmos um BD apenas para ser utilizado pela WebService Layer

Client Layer ----> WebService Layer -----> WS_BD -----> Business Layer

ainda teremos a Client Layer altamente acoplada � WebService Layer, pois na aplica��o cliente teremos c�digo do tipo:

Stub stub =  (Stub)(new WebService_Impl().getWebServicePort());
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]);
WebService hello = (WebService)stub;
System.out.println(hello.fale("Oi Sven"));

Mas e se o(s) cliente(s) n�o quiserem mais utilizar WebServices, haveria todo o impacto de eliminar este c�digo de toda a Client Layer. Logo:
 
Client Layer ----> CLT_BD ----> WebService Layer -----> WS_BD -----> Business Layer
"A ideia de um Business Delegate � a separa��o da camada de negocios (EJB no caso) da camada de apresenta��o(...)"
 
Eu diria que o Business Delegate promove o desacoplamento entre quaisquer camadas que estejam adjacentes.
 
"Se fize do seu jeito seus webserviced developers derepente tem que saber o API de EJB tamb�m, se o jaxrpc endpoint chama o BD, isso � tudo encapsulado, que � exatamente a raz�o de uso de BD. "
 
Ent�o vamos tmb ajudar os client developers e encapsular deles toda a complexidade para o acesso � WebServices, para que n�o precisem conhecer nada de JAX-RPC ou JAXM ou JAXR ou........
[]s
By Ale!

----- Original Message -----
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, October 03, 2002 3:46 PM
Subject: Re: [enterprise-list] Business Delegator



>  
> Por mim, para atingir os objetivos do Business Delegate, deveria ser:
>  
> Cliente ------> BusinessDelegate1 ------> WebserviceClient
> Impl------->SOAP----> JAX-RPC webservice endpoint -----> SessionBean
> ------> EntityBean

Ae vc esqueca que o JAX-RPC endpoint j� � a camada de apresenta��o, rodando como servlet no seu JSP/Servlet engine.

A ideia de um Business Delegate � a separa��o da camada de negocios (EJB no caso) da camada de apresenta��o (JSP/Servlet, Swing etc. WebService deve ser considerada a camada de apresenta��o.

Ver no EJB Design Patterns do Marinescu, P 99

'A business delegate is a plain java class that serves as an intermediary between client and server. Clients locally invoke messages on the bussiness delegate, which than usually directly delegates to a method with the same signauture on the session fa�ade (...) Business delegates map 1-to-1 to session beans on the session fa�ade(...)'

A coisa de webservices � que � similar ao web mesmo, so que manda e retorna soap. Vc n�o sabe o que ser� seu 'client'. Pode ser at� uma aplica��o VB (arrggg). Pelo ponto de visto de modelagem e camadas ent�o, os webservices s�o considerados 'clientes'. N�o preciso faze nada mais do que definir o SOAP que quero receber e vou mandar, gual HTML so que no web, a entrada � predefinida pelo padr�o HTTP.

Se fize do seu jeito seus webserviced developers derepente tem que saber o API de EJB tamb�m, se o jaxrpc endpoint chama o BD, isso � tudo encapsulado, que � exatamente a raz�o de uso de BD.



> Ele n�o quer utilizar o BD para evitar altera��es na camada neg�cio
> quando a camada cliente muda, como vc fez. Ele quer evitar alterar o
> cliente quando a camada de neg�cios sofrer altera��es.


Sim, exatamente, O business delegate faz isso, a interface fica igual mas a camada de negocios muda (troca de DAO por EJB por exemplo).

> A abordagem que vc fez � a de que o BD seja um simples proxy do
> Session, quando eu acho que ele deveria ser algo mais. Ser apenas um
> proxy � papel de um Client Facade. IHMO, Business Delegate = Client
> Facade + Service Locator

N�o o BD pode, mas nem precisa ser usada com Service Locator.


>  
> Veja o que diz a documenta��o do BD: " Potentially, this (Business
> Delegate) reduces the number of changes that must be made to the
> presentation-tier client code when the business service API or its
> underlying implementation changes."  (from http://java.sun.
> com/blueprints/corej2eepatterns/Patterns/BusinessDelegate.html)


Mas � exatamente por isso que o Business delegate deve ficar atras do webservice endpoint e n�o dentro da aplica��o cliente

A aplica��o Cleinte (swing)) � cliente dos webservices, o webservice layer � cliente do business layer.

Responder a