Swipe to navigate through the chapters of this book
This chapter is called “The Contenders” because it describes enterprise integration that does not rely on a cloud implementation. An enterprise that has chosen not to pursue cloud implementations can use the patterns and architectures described here. On the other hand, the patterns of this chapter are frequently used in cloud implementations, although modifications are sometimes needed.
Please log in to get access to this content
To get access to this content you need the following product:
Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns Elements of Reusable Object-Oriented Software, New York: Addison-Wesley, 1994.
There are a number of excellent references on design patterns for enterprise and cloud applications. Martin Fowler, “Patterns of Enterprise Application Architecture,” New York: Addison-Wesley, 2003, is an excellent starting point. Gregor Hohpe and Bobby Wolfe, Enterprise Integration Patterns Designing, Building, and Deploying Messaging Solutions, New York: Addison-Wesley, 2004, takes off where Fowler leaves off. Bill Wilder, Cloud Architecture Patterns, O’Reilly: Cambridge, 2012, carries design patterns into the cloud era. Although Cloud Architecture Patterns draws on Microsoft Azure for examples, it is much more than an Azure handbook.
Wikipedia. “Comparison of data serialization formats.” February 8, 2015. http://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats .
CSV is mostly an informal standard. There is an Internet Engineering Task Force (IETF) request for comment, RFC 4180, http://tools.ietf.org/html/rfc4180 , but it is informational, not a recommendation. CSV is so common and so simple that most developers don’t think about standards for CSV.
Simple file locking is an extreme example of file sharing. The application locking the file or the operating system writes a file with the same name but a different extension as the file to be locked. This extra file signals other applications that the file is not to be touched until the lock file disappears. The existence of the file conveys the essential information. The file is empty or the contents are irrelevant in the simplest case.
Relational database normalization is a difficult subject. A fully normalized database contains no duplicated information, and each row in the database is independent following rules derived from relational algebra. Replacing good database design with rote normalization can lead to poor performance and complex schemas. Consequently, database normalization is not as well thought of as it was in the past.
Transactional database locking is complex, and several methods exist. For this simplified discussion, read locks block changes but not views, and write locks block both changing and viewing. A write lock cannot be taken when a read lock is in place. A row lock may be either a read or write lock and locks a single row. A table lock is like a row lock but locks an entire table. A database lock locks all tables. Some databases can hold only a limited number of locks of any kind. Locks are promoted to reduce the total number of locks.
It’s worth noting that implementing checks and responses in the communicating applications can render an unreliable protocol such as UDP reliable. Sometimes this is an effective tactic.
Under the covers, the message exchanges between e-mail servers are more complicated than “fire and forget,” but after the user clicks the send button, the e-mail is out of their control.
A separate broker process may not be necessary. The broker function can be distributed if there is a means to distribute all the subscription to each integrated application, and each application has code to use the subscription information. This avoids the broker becoming a bottleneck. Alternatives include broker clones that distribute the load.
Strictly speaking, the World Wide Web is a sprawling information system that runs on the Internet. The Internet is the interconnected mass of networks that enables widespread communication. The components of the World Wide Web include browsers such as Internet Explorer, Firefox, and Chrome; HTTP servers like Apache and Internet Information Services (IIS); and a myriad of web sites.
- The Contenders
- Sequence number
- Chapter number
- Chapter 9