Enterprise Integration Patterns
این کتاب دربارهی یکپارچه سازی سازمانی با استفاده از پیام رسانی(messaging) است که هیچ تکنولوژی یا محصول خاصی در آن مستند نشده است، بلکه برای توسعه دهندگان و یکپارچه سازها طراحی شده است تا با استفاده از محصولات و تکنولوژیهای متنوع پیام رسانی کار خود را انجام دهند.
یکپارچگی سازمانی فراتر از ساختن یک برنامه با معماری چند لایه توزیع شده است که آن برنامه قادر است در بین چندین کامپیوتر توزیع شود. در حالی که یک لایه در یک برنامه توزیع شده، به خودی خود نمیتواند اجرا شود، برنامههای یکپارچه، برنامههای مستقلی هستند که هر کدام به طور مستقل میتوانند اجرا شوند و این در حالی است که هماهنگی با یکدیگر را به صورت آزاد از هم انجام میدهند. پیام رسانی، داده و دستورات را در شبکه قادر میسازد تا با استفاده از رویکرد "ارسال کن و فراموش کن" ارسال شوند در حالی که صدا زننده اطلاعات را ارسال میکند و وقتی که اطلاعات در حال منتقل شدن توسط سیستم پیام رسانی است، به سراغ شبکه ای دیگر برود. در صورت تمایل، صدا زننده میتواند بعدا از نتیجه، توسط یک callback با خبر شود. فراخوانیها و callbackهای آسنکرون ،طراحی را نسبت به رویکرد سنکرون پیچیدهتر میکنند، اما فراخوانی آسنکرون میتواند آن قدر تکرار شود تا با موفقیت روبرو شود و این باعث میشود که ارتباط، بیش از پیش قابل اعتماد باشد. پیام رسانی آسنکرون همچنین مزیتهای دیگری از جمله گلوگاه درخواستها و تعادل بار (load balancing) را در بر دارد.
Who Should Read This Book
This book is designed to help application developers and system integrators connect applications using message-oriented middleware products:
• Application architects and developers who design and build complex enterprise applications that need to integrate with other applications. We assume that you’re developing your applications using a modern enterprise application platform such as the Java 2 Platform, Enterprise Edition (J2EE) or the Microsoft .NET framework. This book will help you connect the application to a messaging layer and exchange information with other applications. This book focuses on the integration of applications, not on building applications; for that, we refer you to Patterns of Enterprise Application Architecture by Martin Fowler.
• Integration architects and developers who design and build integration solutions connecting packaged or custom applications. Most readers in this group will have experience with one of the many commercial integration tools like IBM WebSphere MQ, TIBCO, WebMethods, SeeBeyond, Vitria, etc. Many of these tools incorporate the patterns presented in this book. This book helps readers understand the underlying concepts and make confident design decisions using a vendor-independent vocabulary.
• Enterprise Architects have to maintain the "big picture" view of the software and hardware assets in an enterprise. This book presents a consistent language to describe large-scale integration solutions that may span across many technologies or point solutions. This language is also a key enabler for efficient communication between the enterprise architect and the integration and application architects and developers.
What You Will Learn
This book does not attempt to make a business case for enterprise application integration; the focus is on how to make it work. Readers of this book will learn how to integrate enterprise applications by understanding:
• The advantages and limitations of messaging as compared to other integration techniques
• How to determine the message channels your applications will need, how to control whether multiple consumers can receive the same message, and how to handle invalid messages
• When to send a message, what it should contain, and how to use special message properties
• How to route a message to its ultimate destination even when the sender does not know where that is
• How to convert messages when the sender and receiver do not agree on a common format
• How to design the code that connects an application to the messaging system
• How to manage and monitor a messaging system once it’s in use as part of the enterprise
Even readers who are familiar with these practices will benefit from having them documented and being able to use them to facilitate communication with their colleagues.
What This Book Does Not Cover
We believe that any book sporting the word "enterprise" in the title is likely to fall into one of three categories. Either it attempts to cover the whole breadth of the subject matter and will be forced to stop short of detailed guidance on how to implement actual solutions. Or, the book will provide specific hands-on guidance on the development of actual solutions but is forced to constrain the scope of the subject area it addresses. Lastly, books that attempt to do both are likely to never get finished or are published so late as to be irrelevant. We opted for the second choice and hopefully created a book that helps people create better integration solutions even though we had to limit the scope of the book. Topics that we would have loved to discuss but had to exclude in order not to fall into the category three trap include security, complex data mapping, workflow, rule engines, scalability and robustness, and distributed transaction processing (XA, Tuxedo and the like). We chose asynchronous messaging as the emphasis for this book because it is full of interesting design issues and trade-offs and provides a clean abstraction from the many implementation provided by various integration vendors.
This book is also not a tutorial on a specific messaging or middleware technology. You will find examples based on a number of different technologies in this book, such as JMS, MSMQ, TIBCO, Microsoft BizTalk, XSL etc. We included these examples for illustrative purposes to show readers how the pattern could be translated into an actual implementation. If you are interested in learning more about any of these specific technologies, please refer to one of the books referenced in the bibliography or one of the many on-line resources.
How This Book Is Organized
The core of the book contains 65 patterns that form a pattern language. Books such as Design Patterns, Pattern Oriented Software Architecture, Core J2EE Patterns, and Patterns of Enterprise Application Architecture have popularized the notion of using patterns to document computer-programming techniques. The concept of patterns and pattern languages was originally applied to city and building architecture by Christopher Alexander in his seminal works A Pattern Language and A Timeless Way of Building. To help the reader design an integration solution, each pattern represents a decision that the reader must make, explains the considerations that affect the decision, and presents a well regarded solution to guide the decision. A pattern language is a web of related patterns where each pattern leads to others, guiding the reader through the decision making process. This approach is a powerful technique for documenting an expert’s knowledge so that it can be readily understood and applied by non-experts.
A pattern language teaches the reader how to solve a limitless variety of problems within a bounded problem space. Because the overall problem that is being solved is different every time, the path through the patterns and how they’re applied is also unique. In this way, this book was written for anyone using any messaging or integration tools for any purpose, but can be applied specifically for you and the specific application of messaging that you are facing.
Patterns describe commonly accepted solutions to recurring problems, so if you’re an experienced developer of message-oriented integration solutions, many of these patterns will seem familiar to you. Yet even if you already recognize most of these patterns, there is still value in reviewing this book. This book should validate your hard-earned understanding of how to use messaging. It gives you a consolidated reference to help you pass your knowledge effectively to less-experienced colleagues. It also documents details of the solutions and relationships between them that you may not have been aware of. Finally, the pattern names give you a common vocabulary to efficiently discuss integration design alternatives with your peers.