Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Enterprise service bus
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{confused|Enterprise bus matrix}} {{Short description|Communication system in a service-oriented architecture}} [[File:ESB.svg|thumb|All customer services communicate in the same way with the ESB: the ESB translates a message to the correct message type and sends the message to the correct consumer service.]] An '''enterprise service bus''' ('''ESB''') implements a communication system between mutually interacting software applications in a [[service-oriented architecture]] (SOA). It represents a [[software architecture]] for [[distributed computing]], and is a special variant of the more general [[client-server]] model, wherein any application may behave as server or client. ESB promotes agility and flexibility with regard to high-level protocol communication between applications. Its primary use is in [[enterprise application integration]] (EAI) of heterogeneous and complex service landscapes. ==Architecture== The concept of the enterprise service bus is analogous to the [[Bus (computing)|bus]] concept found in [[Computer architecture|computer hardware architecture]] combined with the modular and concurrent design of high-performance computer operating systems. The motivation for the development of the architecture was to find a standard, structured, and general purpose concept for describing implementation of [[Loose coupling|loosely coupled]] software components (called [[Service (systems architecture)|services]]) that are expected to be independently deployed, running, heterogeneous, and disparate within a network. ESB is also a common implementation pattern for [[service-oriented architecture]], including the intrinsically adopted network design of the [[World Wide Web]]. No global standards exist for enterprise service bus concepts or implementations.<ref>{{cite web |first=Raul |last=Lapeira |title=ESB is an architectural style, a software product, or a group of software products? |url=http://www.consultoriajava.com/articulos/esb_arquitecture_software_product.jsp |publisher=Artifact Consulting |access-date=2010-04-16 |quote=The first thing an ESB architect should have in mind is that as of 2010 there is no global standard for ESB. |archive-url=https://web.archive.org/web/20140808053149/http://www.consultoriajava.com/articulos/esb_arquitecture_software_product.jsp |archive-date=2014-08-08 |url-status=dead }}</ref> Most providers of [[message-oriented middleware]] have adopted the enterprise service bus concept as ''de facto'' standard for a service-oriented architecture. The implementations of ESB use [[event-driven architecture|event-driven]] and standards-based message-oriented middleware in combination with [[message queue]]s as technology frameworks.<ref>Curry, Edward. 2004. [http://www.mendeley.com/download/public/1652511/4338215212/cce0f06f047faa57879a1fc36a8e8d6d754d2f6a/dl.pdf "Message-Oriented Middleware"]{{dead link|date=September 2017 |bot=InternetArchiveBot |fix-attempted=yes }}. In ''Middleware for Communications'', ed. Qusay H. Mahmoud, 1-28. Chichester, England: John Wiley and Sons. {{doi|10.1002/0470862084.ch1}}. {{ISBN|978-0-470-86206-3}}</ref> However, some software manufacturers relabel existing middleware and communication solutions as ESB without adopting the crucial aspect of a bus concept. ===Functions=== An ESB applies the design concept of modern [[operating system]]s to independent services running within networks of disparate and independent computers. Like concurrent operating systems, an ESB provides commodity services in addition to adoption, translation and routing of client requests to appropriate answering services. The primary duties of an ESB are: * Route messages between services * Monitor and control routing of message exchange between services * Resolve contention between communicating service components * Control deployment and versioning of services * Marshal use of redundant services * Provide commodity services like event handling, data transformation and mapping, message and event queuing and sequencing, security or [[exception handling]], protocol conversion and enforcing proper quality of communication service. == History == The first published usage of the term "enterprise service bus" is attributed to Roy W. Schulte from the Gartner Group 2002 and the book ''The Enterprise Service Bus'' by David Chappell. Although a number of companies take credit for coining the phrase, in an interview, Schulte said that the first time he heard the phrase was from a company named Candle and went on to say: "The most direct ancestor to the ESB was Candle’s Roma product from 1998"<ref>{{Cite web|last=McKendrick|first=Joe|title=The great ESB squabble of 2005|url=https://www.zdnet.com/article/the-great-esb-squabble-of-2005/|access-date=2020-12-31|website=ZDNet|language=en}}</ref> whose Chief Architect and patent application holder was Gary Aven. Roma was first sold in 1998 making it the first commercial ESB in the market, but that Sonic's product from 2002 was also one of the early ESBs on the market.<ref>{{Cite web|url=https://stackoverflow.com/questions/773503/difference-between-a-message-broker-and-an-esb|title=Difference between a Message Broker and an ESB|access-date=2017-07-19}}</ref> * Service - denotes non-iterative and autonomously executing programs that communicate with other services through message exchange * Bus - is used in analogy to a computer hardware [[Bus (computing)|bus]] * Enterprise - the concept has been originally invented to reduce complexity of enterprise application integration within an enterprise; the restriction has become obsolete since modern Internet communication is no longer limited to a corporate entity ===ESB as software=== {{more citations|date=October 2014|reason=reads like a bunch of short essays}} The ESB is implemented in software that operates between the business applications, and enables communication among them. Ideally, the ESB should be able to replace all direct contact with the applications on the bus, so that all communication takes place via the ESB. To achieve this objective, the ESB must [[information hiding|encapsulate]] the functionality offered by its component applications in a meaningful way. This typically occurs through the use of an [[Enterprise messaging system|enterprise message model]]. The message model defines a standard set of messages that the ESB transmits and receives. When the ESB receives a message, it routes the message to the appropriate application. Often, because that application evolved without the same message model, the ESB has to transform the message into a format that the application can interpret. A software adapter fulfills the task of effecting these transformations, analogously to a physical [[adapter]].<ref>{{Cite web|url=http://shop.oreilly.com/product/9780596006754.do|title=Enterprise Service Bus [Book]}}</ref> ESBs rely on accurately constructing the enterprise message model and properly designing the functionality offered by applications. If the message model does not completely [[Encapsulation (computer science)|encapsulate]] the application functionality, then other applications that desire that functionality may have to bypass the bus, and [[Invocational media|invoke]] the mismatched applications directly. Doing so violates the principles of the ESB model, and negates many of the advantages of using this architecture.{{citation needed|date=May 2025}} The beauty of the ESB lies in its platform-agnostic nature and the ability to integrate with anything at any condition. It is important that [[Application Lifecycle Management]] vendors truly apply all the ESB capabilities in their integration products while adopting [[Service-oriented architecture|SOA]]. Therefore, the challenges and opportunities for [[Enterprise application integration|EAI]] vendors are to provide an integration solution that is low-cost, easily configurable, intuitive, user-friendly, and open to any tools customers choose.{{citation needed|date=May 2025}} [[File:ESB Component Hive.png|thumb|ESB hive of commodity components]] ====Characteristics==== {| class="wikitable" |- ! Category ! Functions |- | Invocation | support for synchronous and asynchronous transport protocols, service mapping (locating and binding) |- | Routing | addressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing |- | [[data mediation|Mediation]] | adapters, protocol transformation, service mapping |- | Messaging | message-processing, message transformation and message enhancement |- | [[Process choreography]]¹ | implementation of complex business processes |- | [[Orchestration (computers)|Service orchestration]]² | coordination of multiple implementation services exposed as a single, aggregate service |- | [[Complex event processing]] | event-interpretation, correlation, pattern-matching |- | Other [[quality of service]] | security (encryption and signing), reliable delivery, transaction management |- | [[systems management|Management]] | monitoring, audit, logging, metering, admin console, [[Business Activity Monitoring|BAM]] (BAM is not a management capability in other words the ESB doesn't react to a specific threshold. It is a business service capability surfaced to end users.) |- | [[Agnostic (data)|Agnosticism]] | general agnosticism to operating-systems and programming-languages; for example, it should enable interoperability between [[Java (programming language)|Java]] and [[Microsoft .NET|.NET]] applications |- | [[Protocol Conversion]] | comprehensive support for topical communication protocols service standards |- | [[Message Exchange Pattern]]s | support for various MEPs ([[Message Exchange Pattern]]s) (for example: synchronous request/response, asynchronous request/response, send-and-forget, publish/subscribe) |- | Adapters | adapters for supporting integration with legacy systems, possibly based on standards such as [[J2EE Connector Architecture|JCA]] |- | Security | a standardized security-model to authorize, authenticate and audit use of the ESB |- | Transformation | [[Middleware Analysts|facilitation of the transformation]] of data formats and values, including transformation services (often via [[XSL Transformations|XSLT]] or [[XQuery]]) between the formats of the sending application and the receiving application |- | Validation | validation against schemas for sending and receiving messages |- | [[SOA Governance|Governance]] | the ability to apply business rules uniformly |- | Enrichment | [[Event-driven SOA|enriching messages]] from other sources |- | Split and Merge | the splitting and combining of multiple messages and the handling of exceptions |- | Abstraction | the provision of a unified abstraction across multiple layers |- | Routing and Transformation | routing or transforming messages conditionally, based on a non-centralized policy (without the need for a central rules-engine) |- | Commodity Services | provisioning of commonly used functionality as shared services depending on context |} ¹ ''Some do not regard process choreography as an ESB function. For example, see M.Richards.<ref>{{cite web | last = Richards | first = Mark | title = The Role of the Enterprise Service Bus (presentation) | url=http://www.infoq.com/presentations/Enterprise-Service-Bus | access-date = 2009-06-04 | quote = I do not consider process choreography part of an ESB, if we consider an ESB as a high-speed messaging middleware. However, I do consider process choreography part of the ESB *platform*. Fortunately most ESB vendors separate out these major components into different products, but package them under a consolidated ESB offering. So, in the strictest sense of the word, no, I would not consider it as part of an ESB. It is a related capability.}}</ref> ² ''While process choreography supports implementation of complex business processes that require coordination of multiple [[business]] services (usually using [[BPEL]]), [[service orchestration]] enables coordination of multiple implementation services (most suitably exposed as an aggregate service) to serve individual requests.'' These solutions often focus on low-level ESB functions, such as connectivity, routing and transformation, and require coding or scripting to implement orchestration.<ref>{{cite web|last=Feraga|first=Matthias|title=How to: choosing between lightweight and traditional ESBs|url=http://blog.octo.com/en/choosing-between-lightweight-and-traditional-esbs/|publisher=Octo|access-date=23 April 2014|date=6 Jun 2011}}</ref> Developers operating at a project or tactical level, e.g., just trying to fix a problem, often gravitate toward lightweight service bus technologies, but there is often ongoing tension between these initiatives and an enterprise architecture whose goal it is to optimize infrastructure across multiple projects.<ref>{{cite web|last=Fulton|first=Larry|title=Learn How to Embrace Lightweight ESBs|url=http://www.forrester.com/Learn+How+To+Embrace+Lightweight+ESBs/fulltext/-/E-RES43339|publisher=Fo2014|date=12 Sep 2007|access-date=23 April 2014|archive-date=27 January 2022|archive-url=https://web.archive.org/web/20220127014928/https://www.forrester.com/Learn+How+To+Embrace+Lightweight+ESBs/fulltext/-/E-RES43339|url-status=dead}}</ref> If the message broker, the ESB software, translates a message from one format to another, then as with any translation, there is the issue of semantics of the message. For example, a record can be translated from [[JSON]] to [[XML]], but the same set of fields can be interpreted differently by different applications, specifically in the case of the various corner cases that are usually known only to developers that have extensive experience with the application that is connected to the ESB. For the known corner cases the number of tests that cover all corner cases increases exponentially with every application that is connected to the ESB, because every ESB-connected application must be tested against every other application that is connected to the ESB. == Key benefits == * Scales from point-solutions to enterprise-wide deployment (distributed bus) * More configuration rather than integration coding * No central rules-engine, no central broker * Easy plug-in and plug-out and loosely coupling system ==Key disadvantages== * Slower communication speed, especially for those already compatible services * [[Single point of failure]], can bring down all communications in the Enterprise * High configuration and maintenance complexity ==Products== {{See also|Comparison of business integration software}} Notable products include: {{colbegin}} * Proprietary **[[IBM]] App Connect, formerly IBM Integration Bus and IBM WebSphere ESB **[[InterSystems]] Ensemble **[[Information Builders]] iWay Service Manager **[[Microsoft Azure]] Service Bus **[[Microsoft BizTalk Server]] **[[Mule (software)|Mule]] ESB **[[Oracle Enterprise Service Bus]] **[[Progress Software]] Sonic ESB (acquired by [[Trilogy (company)|Trilogy]]) **[[SAP Process Integration]] **[[TIBCO Software]] ActiveMatrix BusinessWorks **[[webMethods]] enterprise service bus (acquired by [[Software AG]]) **[[Sonic ESB]] from Aurea *[[Open-source software]] **[[Apache Camel]] **[[Fuse ESB]] from [[Red Hat]] **[[JBoss Enterprise SOA Platform#Enterprise Service Bus (ESB)|JBoss ESB]] **[[NetKernel]] **[[Open ESB]] **[[Petals ESB]] **[[Spring Integration]] **[[UltraESB]] **[[WSO2 ESB]] {{Div col end}} ==See also== <!--* [[Enterprise nervous system|Enterprise Nervous System]]--> <!--* [[Digital nervous system]]--> * [[Enterprise Integration Patterns]] * [[Event-driven messaging]] * [[Java Business Integration]] * [[Business Process Management]] * [[Universal integration platform|Universal Integration Platform]] * [[Enterprise application integration]] * [[Business Service Provider]] * [[Medical integration environment]] * [[Message Oriented Middleware]] * [[Complex event processing]] * [[Event Stream Processing]] * [[Event-driven programming]] * [[Comparison of business integration software|Comparison of Business Integration Software]] * [[Comparison of BPEL engines]] * [[Comparison of BPMN 2.0 Engines]] * [[Composite application]] * [[Event-driven SOA]] * [[Integration Platform as a service]] (iPaaS) == References == {{Reflist}} == Further reading == * David Chappell, "Enterprise Service Bus" (O’Reilly: June 2004, {{ISBN|0-596-00675-6}}) * Binildas A. Christudas, "Service-oriented Java Business Integration" (Packt Publishers: February 2008, {{ISBN|1-84719-440-0}}; {{ISBN|978-1-84719-440-4}}) * Michael Bell, "Service-Oriented Modeling: Service Analysis, Design, and Architecture" (2008 Wiley & Sons, {{ISBN|978-0-470-14111-3}}) ==External links== * [http://searchwebservices.techtarget.com/tip/1,289483,sid26_gci913058,00.html "Lasting concept or latest buzzword?"] (Nicolas Farges, 2003) * [http://www.infoworld.com/article/2671356/application-development/enterprise-service-buses-hit-the-road.html Enterprise service buses hit the road: Infoworld Test Center] (July 22, 2005) * [http://www.jcp.org/en/jsr/detail?id=208 JSR-208: Java Business Integration] (August 2005) * [http://www.infoq.com/presentations/Enterprise-Service-Bus The Role of the Enterprise Service Bus (InfoQ - Video Presentation)] (October 23, 2006) * [http://www.infoq.com/articles/ESB-Roundup-Part1-Defining-ESB ESB Roundup Part One: Defining the ESB (InfoQ)] (July 13, 2006) * [http://www.infoq.com/news/ESB-Roundup-Part-Two--Use-Cases ESB Roundup Part Two: Use Cases (InfoQ)] (July 5, 2006) * [https://web.archive.org/web/20071219235821/http://www.iasahome.org/c/portal/layout?p_l_id=PUB.1.266 "Services Fabric—Fine Fabrics for New Era Systems"] (Binildas A. Christudas, 2007) * [http://www.ebizq.net/hot_topics/esb/features/8480.html "ESBs in 2007: Taking the Open Source Bus to SOA"] (Dennis Byron, September 20, 2007) * [http://www.packtpub.com/article/aggregate-services-in-servicemix-jbi-esb Aggregate Services in ServiceMix JBI ESB: PACKT Publishers] (Binildas A. Christudas, November 30, 2007) * [http://www.infoq.com/articles/louis-esb-topologies ESB Topology alternatives] (InfoQ, A. Louis, May 23, 2008) * [http://www.computerworld.com/s/article/9219205/Rethinking_the_ESB_Building_a_simple_secure_scalable_Service_Bus_with_an_SOA_Gateway?taxonomyId=157&pageNumber=1 Rethinking the ESB: Building a Simple, Secure, Scalable Service Bus with a SOA Gateway] (Computerworld, J. Ryan, 2011) * {{cite web |first = Adrien |last = Louis |author2=Marc Dutoo |title = Choosing between Routing and Orchestration in an ESB |url = http://www.infoq.com/articles/louis-dutoo-esb-routing |work = InfoQ |date = 2010-07-02 |access-date = 2009-07-02 }} * [http://www.ibm.com/developerworks/websphere/techjournal/1105_flurry/1105_flurry.html The Enterprise Service Bus, re-examined] (IBM developer Works, Greg Flurry and Kim Clark, May 2011) {{Authority control}} {{DEFAULTSORT:Enterprise Service Bus}} [[Category:Enterprise application integration]] [[Category:Message-oriented middleware]] [[Category:Service-oriented (business computing)]] [[Category:Software architecture]] [[Category:2002 neologisms]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Colbegin
(
edit
)
Template:Confused
(
edit
)
Template:Dead link
(
edit
)
Template:Div col end
(
edit
)
Template:Doi
(
edit
)
Template:ISBN
(
edit
)
Template:More citations
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)