J2EE - SOA - Integration Patterns & Principles
J2EE - SOA - Integration Patterns & Principles
J2EE Layers:
10 Object Oriented Design principles Java
programmer should know (guest post)
By Marina Sprava | February 25, 2013
just get yourself ready for quick bike ride on design principle town
These 10 SOA design patterns are so important and widely used that they
almost seem a little obvious.
1. Agnostic Services
Agnostic services implement logic that is common to multiple business
problems. Separating agnostic logic into discrete services facilitates service
reuse and composability.
principles: reuse, service composability
5. Service Façade
A service façade sits between a service and a contract. It eliminates the tight
coupling between the service and its contract. This is intended to minimize
changes to the service if the contract changes. A service can have multiple
service façades to support multiple contracts.
principles: loose coupling
6. Service Callback
A service requires its consumers to call it asynchronously. If the consumer
needs a response it provides a callback address. When the service reaches
some milestone in processing it messages the consumer with a response.
This approach frees resources and is useful when services are expected to
be long running.
principles: loose coupling
8. Authentication Broker
An authentication broker assumes responsibility for authenticating
consumers. Consumers are issued a token they can use to access services.
principles: service composability
2. Loose Coupling – Less dependency on each other. This is one of the main
characteristics of web services which just states that there should be as less
dependency as possible between the web services and the client invoking the
web service. So if the service functionality changes at any point in time, it
should not break the client application or stop it from working.
3. Service Abstraction - Services hide the logic they encapsulate from the
outside world. The service should not expose how it executes its functionality;
it should just tell the client application on what it does and not on how it does
it.
4. Service Reusability - Logic is divided into services with the intent of
maximizing reuse. In any development company re-usability is a big topic
because obviously one wouldn't want to spend time and effort building the
same code again and again across multiple applications which require them.
Hence, once the code for a web service is written it should have the ability
work with various application types.
5. Service Autonomy - Services should have control over the logic they
encapsulate. The service knows everything on what functionality it offers and
hence should also have complete control over the code it contains.
Patterns are not 'invented'; they are harvested from repeated use in practice. If you
have built integration solutions, it is likely that you have used some of these patterns,
maybe in slight variations and maybe calling them by a different name. The purpose
of this site is not to "invent" new approaches, but to present a coherent collection of
relevant and proven patterns, which in total form an integration pattern language.
Despite the 700+ pages, our book covers only a fraction of patterns (and the problems
to be solved) in the integration space. The current patterns focus on Messaging, which
forms the basis of most other integration patterns. We have started to harvest more
patterns but are realizing (once again) how much work documenting these patterns
really is. So please stay tuned.
Messaging Patterns
The patterns are not tied to a specific implementation. They help you design better
solutions, whether you use any of the following platforms:
Reference. A summary of each pattern from the book is available on this site.
Read. Of course, the book Enterprise Integration Patterns (Addison-Wesley,
ISBN 0321200683) contains the full catalog of patterns with a much more
detailed discussion and examples -- over 700 pages worth of material. You can
also read the full text on-line on Safari (with membership).
Document. You can create design documents using our icon language by
downloading the Visio stencil or using the OmniGraffle stencil created by one
of our readers.
Reuse. You are also welcome to build on top of what we have done. We made
the pattern name, icon, problem and solution statements, as well as the sketches
(the diagram below the solution statement) available under the Creative
Commons Attribution license. In brief, this license allows you share, use and
modify these passages as long as you give proper attribution. In our case, this
would mean a link to the site and a reference to the book title and authors. If
you have questions regarding this requirement, please contact us.
Build. A number of open-source frameworks, such as Mule, Apache Camel,
or Spring Integration incorporate our patterns. Now you can not only think in
integration patterns, but also to code in them!
Teach. A number of professors use our material in lectures. If you are
interested in getting access to material for academic purposes, please contact
us.
The book is now over 10 years old. Yet, the integration problems we have to solve
every day remain frustratingly similar. Because the patterns encapsulate design
knowledge, this knowledge does not age nearly as quickly as a specific technology.
For more on applying the patterns to recent integration technologies
like REST or Google Cloud Pub/Sub, follow our Ramblings.
Messaging Patterns
HOME PATTERNS RAMBLINGS ARTICLES TALKS DOWNLOAD BOOKS
CONTACT
Me
Table of Contents Messaging Patterns ss
ag
MESSAGING PATTERNS » TABLE OF CONTENTS Previous Next in
g
Messaging Patterns Overview Pa
tte
Table of Contents Detailed table of contents. rn
s
Preface
Introduction
Synchronous Implementation
using Web Services
Asynchronous Implementation
with MSMQ
Asynchronous Implementation
with TIBCO ActiveEnterprise
Messaging Endpoints
Introduction to Messaging
Endpoints
How do you encapsulate access to the
Messaging Gateway messaging system from the rest of the
application?
How do you move data between domain objects
Messaging Mapper and the messaging infrastructure while keeping
the two independent of each other?
How can a client control its transactions with the
Transactional Client
messaging system?