Java Reference
In-Depth Information
Orchestration
Many ESBs offer the ability to coordinate multiple services to expose them as a single proxy
service. This can be done with a lightweight internal orchestration engine that offers basic or-
chestration features such as conditions, waits, and parallel flows. Some buses delegate most
or all of this functionality to a full-blown BPEL or XPDL engine.
Security
We have seen many examples in this topic of security-related functions in individual service
components. A service bus will typically provide additional security capabilities, enforcing
the use of security policies in conjunction with policy enforcement points, security as a ser-
vice, SSL, and SAML (Security Assertion Markup Language).
SOA Without an ESB
It is worth mentioning that not every SOA practitioner thinks that an ESB is essential to SOA.
However, I do not know any architects who are using mostly SOAP-based services who do
not recommend an ESB. In my view, SOA without the ESB repeats the past complexities of
Enterprise Application Integration efforts, wherein each integrated node requires an adapter
for every other node it is connected to, and interfaces for these components are tightly coupled
to the other connected nodes.
Most of this topic has focused on creating SOAP-based web services as a means to abstract
the underlying platform of these connected nodes. This is a positive evolution over integration
attempts of the past because when you define a web services endpoint, it is represented by a
WSDL with the message format defined in XML Schema. These XML-based formats do not
reveal the underlying platform in a way that is necessary with other distributed technologies.
For example, if you were to use EJBs to connect remote systems, not only would they have to
be written in Java, they would expose interfaces written in Java and require the distribution of
an EJB client JAR. Imagine that you have the following interface defined:
public interface CRM {
public Customer getCustomer(int id);
}
If your company acquires another company whose customer IDs are defined with strings be-
cause they contain alphabetic characters, you would need to either create a different interface
for that system and disburse the integration logic into client systems (thereby creating tighter
coupling), or change the interface that you expose to clients, redistribute the client JAR, and
redeploy the clients. While this may work fine for departmental applications, it may not scale
Search WWH ::




Custom Search