Messaging Pattern
The Applications participating in an Enterprise Solution communicate with each other using a common messaging system. The message publishing application follows the fire and forget model where it places a message in the shared messaging system and forgets about it. Other interested applications listen for these messages and act on them as business rules dictate. The most common implementation of a messaging system is a queue. The queue semantics ensure delivery of messages in the order they are received. A robust messaging system guarantees delivery via local persistence of message and multiple delivery attempts. The delivery guarantee is important because all participant applications in an Enterprise Solution may not be online all the time. Microsoft Message Queuing (MSMQ) and Oracle Advanced Queues are examples of messaging systems.
Shared Database Pattern
If all applications participating in an Enterprise Solution have access to a common database, the applications can exchange data by reading/writing to the common database. This is a less robust solution than the Messaging Pattern because a change in the common database schema may require modifications to participating applications.
Service Oriented Architecture (SOA) Pattern
The applications participating in an Enterprise Solution expose their functionality as a Public API that other applications can consume. This approach is more robust than sharing a database but still causes some coupling between applications due to dependence on the Public API. There is also an implicit assumption that all collaborating applications are online all the time. The most common incarnation of SOA are SOAP and RESTful Web Services.
Shared File Pattern
In this pattern, the publishing application writes a file with appropriate data and/or instructions to a shared network resource. The interested applications read this file and act on it as appropriate. On the surface, this approach seems to be a highly decoupled and robust. However, for a complex application this method of collaboration can be cumbersome and requires agreement on content location, file access policies, shared file disposal, frequency of file drops and retrievals, and meaning of the file content and format.
Messaging + SOA Pattern
For a complex Enterprise Solution with many participating Applications, Messaging provides the most robust solution. Messaging Pattern is even more effective when it is used as a way to communicate Commands among participating applications rather than detailed application data. Following the preceding paradigm, the Messaging Pattern can be combined with the SOA Pattern. For example, let's say an Enterprise Solution consists of an Accounting Application and a Shipping Application. When a payment is received from the customer for an order, the Accounting Application publishes a message stating that an order is OK to ship. The message contains the May Ship Order command with an additional parameter Order Id (Messaging Pattern). When the Shipping Application receives the message, it calls the Public API of the Accounting Application (SOA Pattern) to get the details of the order to ship and proceeds with shipping.