Has anyone ever used Application Service design pattern ? The reason why I am asking is because I have never used and I am not able to really understand the context where it should be used. I have always used a Business Delegate and/or Session Facade for separating my business and presentation tiers.
1. I read up somewhere that it is an alternative approach to the Business Delegate and/or Session Facade approach. Is that so ?
The Core J2EE definition says - "Centralizes and aggregates business components to provide a uniform service layer to the business tier services."
Pattern relationships say -
2. Helper components(of ViewHelper) typically delegate to the business services via a Business Delegate or an Application Service
How different is a Business Delegate than an Application Service? BD is a POJO. Application Service is POJO or can it be a session bean too?
An Application Service uses a Business Delegate to invoke a Session Façade.
Application Service is a layer above the Business Delegate?
A Session Façade might invoke several Application Service implementations or Business Objects.
This seems to be contradicting relationship 3.
An Application Service might interact with other services or Business Objects.
An Application Service can invoke other Application Services and thus create a layer of services in your application.
A Service Activator can invoke Application Service, Session Façade or Business Objects.
A Web Service Broker can interact with Application Service and Session Façade
Adam Bien's Real World JEE Patterns book says - "Application Service (Service Façade) used to be a mandatory part of every J2EE application. It was used to isolate the presentation tier from the business tier. The parameters of the Application Service were either primitives or Data Transfer Objects (DTOs)." I seem to be the only one who has never used it !
Googling about Application Service gets me nowhere. All the pages are about the Core J2EE definition. I did not find a real example.