Thứ Năm, 9 tháng 6, 2016

Enterprise Service Bus (ESB)

An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in aservice-oriented architecture (SOA). As a software architectural model for distributed computing, it is a specialty variant of the more general client-server model and promotes agility and flexibility with regard to communication between applications. Its primary use is in enterprise application integration (EAI) of heterogeneous and complex landscapes.

Overview[edit]

The concept is analogous to the bus concept found in computer hardware architecture combined with the modular and concurrent design of high-performance computer operating systems. The motivation was to find a standard, structured, and general purpose concept for describing implementation of loosely coupled software components (called services) that are expected to be independently deployed, running, heterogeneous, and disparate within a network. ESB is also a common implementation pattern forservice-oriented architecture.

Duties[edit]

An ESB transports the design concept of modern operating systems to networks of disparate and independent computers. Like concurrent operating systems an ESB caters for commodity services in addition to adoption, translation and routing of a client request to the appropriate answering service.
The primary duties of an ESB are:
  • 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
  • Cater for 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

Ambiguous use of the term ESB in commerce[edit]

There is no global standard for enterprise service bus concepts or implementations.[1] 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 and standards-based message-oriented middleware in combination with message queues as technology frameworks.[2] However, some software manufacturers relabel their existing middleware and communication solutions as ESB without adopting the crucial aspect of a bus concept.

History[edit]

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.
  • 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
  • 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
In fact, the term "bus" was created in the 1980s by Teknekron Software Systems[citation needed]. Frustrated by how software seemed to always under-deliver, while hardware was always on time and under budget, Vivek Ranadivé set out to build software based on the premise of a "Software Bus" (which later became known as "The Information Bus" or TIB), where a "bus" is the standard data highway by which various elements—such as a computer system such as the CPU, the memory, the I/O devices, etc.—communicate. This concept would allow for the "tight" coupling of applications.
In 1986 Teknekron Corporation embarked on a consulting project with Goldman Sachs to redefine the "trading floor of the future" applying this approach. In 1987 the first TIB—for the integration and delivery of market data such as stock quotes, news, and other financial information—went live at Fidelity[citation needed], followed by First Interstate Bank[citation needed], then Salomon, eventually digitizing all of Wall Street[citation needed]. Teknekron was later acquired by Reuters in 1994[citation needed] to expand its use of the Information Bus in the financial services markets. In January 1997, Ranadivé founded Tibco Software Inc. to create and market software for use in the integration of business applications outside the financial services sector. In 1998 TIBCO Software released TIB/ActiveEnterprise suite. In July 1999 TIBCO went public on the NASDAQ Stock Market[citation needed] under the ticker symbol TIBX. TIBCO stands for The Information Bus Company.

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 encapsulate the functionality offered by its component applications in a meaningful way. This typically occurs through the use of an 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.[3]

ESBs rely on accurately constructing the enterprise message model and properly designing the functionality offered by applications. If the message model does not completely encapsulate the application functionality, then other applications that desire that functionality may have to bypass the bus, and invoke the mismatched applications directly. Doing so violates the principles of the ESB model, and negates many of the advantages of using this architecture.
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 SOA. Therefore, the challenges and opportunities for EAI vendors are to provide an integration solution that is low-cost, easily configurable, intuitive, user-friendly, and open to any tools customers choose.

ESB hive of commodity components

Characteristics[edit]

Most observers[who?] accept certain core capabilities as functions of an ESB:
CategoryFunctions
Invocationsupport for synchronous and asynchronous transport protocols, service mapping (locating and binding)
Routingaddressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing
Mediationadapters, protocol transformation, service mapping
Messagingmessage-processing, message transformation and message enhancement
Process choreography[4]implementation of complex business processes
Service orchestration²coordination of multiple implementation services exposed as a single, aggregate service
Complex event processingevent-interpretation, correlation, pattern-matching
Other quality of servicesecurity (encryption and signing), reliable delivery, transaction management
Managementmonitoring, audit, logging, metering, admin console, 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. )
Agnosticismgeneral agnosticism to operating-systems and programming-languages; for example, it should enable interoperability between Java and .NETapplications
Protocol Conversioncomprehensive support for topical communication protocols service standards
Message Exchange Patternssupport for various MEPs (Message Exchange Patterns) (for example: synchronous request/response, asynchronous request/response, send-and-forget, publish/subscribe)
Adaptersadapters for supporting integration with legacy systems, possibly based on standards such as JCA
Securitya standardized security-model to authorize, authenticate and audit use of the ESB
Transformationfacilitation of the transformation of data formats and values, including transformation services (often via XSLT or XQuery) between the formats of the sending application and the receiving application
Validationvalidation against schemas for sending and receiving messages
Governancethe ability to apply business rules uniformly
Enrichmentenriching messages from other sources
Split and Mergethe splitting and combining of multiple messages and the handling of exceptions
Abstractionthe provision of a unified abstraction across multiple layers
Routing and Transformationrouting or transforming messages conditionally, based on a non-centralized policy (without the need for a central rules-engine)
Commodity Servicesprovisioning of commonly used functionality as shared services depending on context
² 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.[5] 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.[6]

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, specially 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[edit]

  • 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
  • Incremental patching with zero down-time; enterprise becomes "refactorable"

Key disadvantages[edit]

  • Slower communication speed, especially for those already compatible services

See also[edit]

Existing ESB products[edit]

A more complete overview can also be found in the Comparison of business integration software article.

MuleSoft Champions

An introduction to MuleSoft Anypoint Platform

The Anypoint Platform is designed as an integrated set of individual products. Users can utilize part or all of the platform. The functional pieces include:
  • Anypoint technology – designed to replace point-to-point integration for SaaS companies, system integrators and enterprises
  • CloudHub – an integration platform as a service (iPaaS), designed to integrate SaaS applications with each other or to on-premises applications, and allow SaaS providers to build and offer packaged integration applications that automate business processes across applications.
  • Mule ESB – an integration platform for connecting enterprise applications on-premises and to the cloud, designed to eliminate the need for custom point-to-point integration code
  • Anypoint Connectors – out-of-the-box connectivity for enterprise and SaaS applications
  • MuleSoft's Tcat Server – based on Apache Tomcat, an application server that runs existing Tomcat applications without any changes, and adds functionality related to managing Tomcat, including visual configuration management, performance diagnostics, and application provisioning, accessed through a management web console.
  • API Solution – Built on top of the CloudHub iPaaS, this is software for designing, building, publishing, securing, managing and monetizing internal services and external APIs, as well as engaging the developer community around APIs.
  • Unified development experience – designed to offer a way to build integration applications, for deployment either on-premises or in the cloud.

Lots of stuff to learn? Boring to learn? Now let's go with MuleSoft Champions...

Where you can find suitable technologies for your company/ projects from Mule Developers world. Where you can organize documents to learn. Where you can meet the experts to help you to resove problems.

Especially, you can earn the reward points to claims funny stuffs from the machine Alienware Alpha, PlayStation 4, Microsoft Xbox to the T-shirt or any certification vouchers...

Why not join MuleSoft Champions at http://champions.mulesoft.com


Thứ Năm, 2 tháng 6, 2016

Discover and Consume APIs

Discover and Consume APIs

This walkthrough requires Portal Viewer permissions.
Everything you experience when you browse and search the Developer Portal for APIs depends on what other members of your organization have accomplished previously in the Anypoint Platform. To see any API portals in the Developer Portal, at least one of the following must be true:
  • Someone in your organization with API Creator permissions has created an API version, published its API Portal, and made that API Portal Public.
  • Someone in your organization with API Creator permissions has created an API version, published its API Portal, and arranged for your account to be granted Portal Viewer permissions for that API version.
If you don’t see any APIs listed in your organization’s Developer Portal, first confirm that you are logged in, then check with your organization administrator to request Portal Viewer permissions for any APIs that you should have access to see.

Browsing and Searching the Developer Portal

Sign in to the Anypoint Platform and either land on or navigate to your Developer Portal:

http://apiplatform.anypoint.mulesoft.com/apiplatform/{yourorgdomain}/#/portals
On the Developer Portal, you can browse APIs in an alphabetical list, or search for a specific API by name, version, or its tags.

Accessing API Documentation

Click on the API name or version number to access the API Portal for the T-Shirt Ordering Service. If you don’t see that particular API, you can try to follow these same steps with another API in your organization. Note however, the content of the API Portal varies.
Click to open the API Console from the left hand navigation, if you see it. The API Console is an automatically generated client based on the API’s RAML definition that allows you to test out calls and see possible responses for this API. The API Console serves as interactive documentation for the API.
If the API Portal doesn’t have an API Console, follow the instructions in the API’s documentation to test out the API.

Requesting Access to an API

If the owner of the API has set up an endpoint for it in the Anypoint Platform, you see a button at the top of the page that reads Request API Access. Click this button to register your application with this API. Registering your application allows the API owner to see key information, including contact information, about who and what is accessing their API version, helping them with needs analysis and lifecycle management. If the API owner has applied certain policies to the API, such as client id enforcement, you’ll need to register your application and then pass your client id and client secret in any calls to that API in order to satisfy the requirements of that governance policy.

Registering Your Application

When you request API access, you are given the option to create a new application or to request access on behalf of an existing application that you created previously. When you create a new application, you provide key information about your application and yourself that helps API owners identify the characteristics and needs of your application so they can make good decisions when approving your for a particular SLA tier, for example. It also gives them the information they need in to contact you (should they need to migrate you to a new version of the API, for example).
When you create an application, you are prompted for a NameDescriptionApplication URL, and Callback URL. If your organization is signed up to use PingFederate for identity management, you are also prompted to select anOAuth Grant Type. Many of these fields are optional – fill them out if they are relevant for your application.
Click Submit to commit your application details, then click Request Access. If the API owner has not configured any policies restricting access, or has set those policies to auto-approve access requests, you see a message that reads "Your API access request has been approved." If the access request requires manual approval, wait for the API owner to grant your request.
After you have created your application, you can access information about it on the My Applications tab on the Developer Portal. You need to be logged in to see your applications, because this information is available only to you. The My Applications display provides you with the unique client id and client secret for your application, which you may need to pass in your API calls for APIs that are protected with certain policies.

Create an API Portal

Create an API Portal

This step in the walkthrough assumes that you have API Version Owner permissions to the T-Shirt Ordering Service API, or that you are an Organization Administrator.

Creating a New API Portal

To get started, access the API Version Details page by clicking here, selecting APIs, and selecting your API.
creating-a-new-api-portal
On the API Version Details page for your T-Shirt Ordering Service API, select Create new Portal from the dropdown menu. This page can be accessed from here by clicking APIs and selecting your API or adding a new one.
portal
The Anypoint Platform takes you directly into the editing mode for your new API Portal. By default, you land on a pre-created Home page that contains the description you entered when you created the API in the platform. You can edit this text and add any additional text you want, using markdown.
If you like, create additional markdown pages using the Add new menu on the left of the page. You can also place external links directly in your left navigation.
externallink
You may also create headers to separate out content in your left navigation to make it easier to find. For instance, you might want to separate out your external links in a separate section. Click Add new > Section header and enter a title for the header, such as Resources. You can drag your section heading or any other left nav item up or down to reorder them.
moveinnav
Any changes you make to your left navigation are automatically saved. Changes that you make to your markdown pages need to be saved as drafts and published.

Including an API Console

If you’ve defined your API using RAML before creating your API Portal, your API Console should automatically be included in your API Portal in your left navigation. Click on API reference to view it.
If you created your RAML definition after creating your API Portal, the API Console is not automatically included in the left navigation of your portal. However, you can add it at any time by clicking Add new…​ > API reference.
If you don’t have a RAML definition for your API, consider designing a RAML layer for your existing API to take advantage of this automatic documentation.

Customizing Your API Portal Theme

If you want to, you can adjust the look and feel of your API Portal by accessing the API Portal Theme Settings from the menu in the upper right corner.
Apiportalthemesettings
Clicking this option opens a theme editor that allows you to customize your logo and color scheme.
apiportalthemedialog
Experiment as you wish with adjusting the settings, then click Save when you are satisfied. To view the results, return to your API Version Details page and click View live portal.
portal-view-portal

Exposing Your API Portal

In order to allow other users to view your portal, you can either make your portal public or give specific users Portal Viewer permissions.
To make your API Portal public, select which items you would like to make public and click the eye ball above.
exposing-your-portal
To add other users as editors of your API Portal, go back to your API Version Details page and click the Permissionstab.
permissions
Note that you can only grant permissions to users who are already members of your Anypoint Platform organization. If you need to invite users to the organization, you must ask an Organization Administrator to do so from the Anypoint Organization Administration page.