The next 17 chapters contain a mountain of information. Some serious thought was given to organization so that this book would be easy to read, while maintaining a logical structure.
Content was finally divided into the following primary parts:
Essentially, Parts I, II, and III cover basic and advanced SOA concepts and theory that prepare you for Parts IV and V, which supply a series of step-by-step "how to" instructions for building SOA. Part V further contains coverage of WS-* technologies and SOA platform support provided by J2EE and .NET.
A common thread across all parts of the book is the consistent use of case studies. Over 125 individual case study examples are interspersed throughout the chapters to provide constant real-life reference points that further demonstrate key topics. Case studies are introduced in Chapter 2, which establishes background information for two fictional organizations.
Let's now take a closer look at what's covered in the remaining chapters.
1.5.1. Part I: SOA and Web Services Fundamentals
Key SOA concepts are explained, a look at how SOA has evolved from past platforms follows, and then a description of the Web services framework wraps up this first part of the book.
Introducing SOA (Chapter 3)
We start off with a chapter dedicated to nailing down a clear definition of what SOA actually is and is not. We accomplish this by first studying the core characteristics of what constitutes a fundamental or "primitive SOA." We supplement this by introducing the principles of service-orientation, and then look at the many influences that are elevating the primitive service-oriented architecture into a broader, enterprise-level platform.
As part of this exercise, we identify and explain 20 key characteristics associated with what we term as "contemporary SOA." After we progress through individual descriptions of these characteristics, we provide detailed and generic definitions of what constitutes an SOA.
To further clarify what SOA is not, we proceed to address a series of common myths and misperceptions. These sections help cut through some of the confusion surrounding SOA and set the groundwork for the many SOA-related topics we discuss in subsequent chapters.
We then move on to identifying and explaining the key benefits behind adopting SOA. Although these benefits are discussed throughout this book, it is important to separate them ahead of time so that we can form a clear vision of what it is we are accomplishing by transitioning to this architectural model.
Finally, we conclude this chapter with a look at the most common pitfalls facing any organization on the path toward SOA. Understanding these "worst practices" is important not only to avoiding a whole lot of problems, but also to better appreciate the reasoning behind some of the analysis and design processes provided in later chapters.
The Evolution of SOA (Chapter 4)
This chapter continues with an exploration of how SOA came to be. Specifically, we follow a timeline that looks at the following:
We begin with a brief historical account of XML and Web services and discuss how these now established technologies have shaped SOA and are, to a large extent, responsible for its success. Subsequently, we turn the tables and discuss how the resulting popularity of SOA has changed the manner in which some XML and Web services technologies have been traditionally positioned and utilized.
We then dive into the current world of SOA as we discuss who and what is making SOA happen. Organizations and software vendors involved with developing contemporary SOA specifications and products are discussed. Most notably, the roles played by the following organizations are explained:
The unique dynamics between standards organizations and software manufacturers are explored, with an emphasis on how vendors have influenced and contributed to the development of Web services specifications.
Next, we provide definitions for the terms "application architecture" and "enterprise architecture" and then define the architectural scope of SOA as it relates to these types of architectures. We subsequently dig up the roots of service-orientation by describing each of the following traditional platforms for the purpose of contrasting them with SOA:
For each of these architectural models, we explore the following aspects: application logic, application processing, technology, security, and administration. This part of the chapter is rounded out by a preliminary comparison of service-orientation and object-orientation.
Web Services and Primitive SOA (Chapter 5)
In Chapter 3 we formally defined the characteristics of primitive SOA. This chapter now explains how these characteristics are fulfilled by first-generation Web services technologies.
Note that this chapter introduces a new feature of the book called In Plain English. Even though all sections in this chapter are supplemented with examples that are part of our continuing case studies, they are further outfitted with these intentionally simplistic, non-technical analogies.
We begin with a review of the fundamental mechanics behind the Web services communications framework.
Topics covered include the following:
Next, we move on to primitive SOA specifics, as we describe how service descriptions accomplish the core quality of loose coupling that contractually binds services within an SOA. Concepts specific to abstract and concrete WSDL definitions are explained and then supplemented with an introduction to UDDI and service registries.
We follow this section with an explanation of how SOAP is being used to address the messaging needs of SOA. The standardized messaging format provided by SOAP is discussed, along with a look at the SOAP message structure and the runtime roles played by SOAP processing nodes.
1.5.2. Part II: SOA and WS-* Extensions
The next set of chapters tackle advanced issues related to a multitude of contemporary SOA extensions.
Web Services and Contemporary SOAPart I: Activity Management and Composition (Chapter 6)
This chapter picks up the tempo by venturing into the WS-* landscape. This is the first of two chapters dedicated to exploring how SOA can be extended using features provided by WS-* specifications.
The following parts of contemporary SOA are explored:
The sequence of these topics is intentional, as each establishes a layer of functionality upon which the next builds.
Concepts relating to the latter five items in the above list are derived from the following WS-* specifications:
Because this book intentionally separates concepts from technology, the actual language and syntax-level details for these WS-* extensions are covered in Part V: Building SOA (Technology and Design).
Further, this chapter explains how these specifications and their associated concepts inter-relate, as well as how they individually tie into and fulfill the predefined characteristics of contemporary SOA. Finally, it is also worth mentioning that this chapter continues providing In Plain English sections to help clarify concepts using non-technical analogies.
Web Services and Contemporary SOAPart II: Advanced Messaging, Metadata, and Security (Chapter 7)
This chapter dives even more deeply into the world of SOA extensions, as we study and explain another series of concepts related to additional WS-* specifications.
The following topics are covered:
The concepts behind each of these topics are derived from the following WS-* specifications:
As with Chapter 6, only concepts are discussed at this stage. The respective languages of the first five specifications in the above list are explained later in Chapter 17.
Also as with the previous chapter, how the individual extensions inter-relate and address specific characteristics of contemporary SOA is explained and supplemented with additional In Plain English sections.
1.5.3. Part III: SOA and Service-Orientation
Service-orientation, as a design paradigm, is explored in this part of the book. These chapters establish crucial concepts that form the basis for service and architecture-level design approaches described in later chapters.
Principles of Service-Orientation (Chapter 8)
We now turn our attention to the fundamental principles of service-orientation. It is these principles that form the basis for SOA and shape and standardize the individual services from which SOA is comprised.
This chapter introduces a view of the enterprise referenced throughout subsequent parts of this book, establishing a model that separates an enterprise into business and application logic domains. We then go on to discuss how SOA promotes service-orientation throughout both of these domains.
Next, we dissect a logical SOA and study its most fundamental parts. We begin this process with an examination of the core components of the Web services framework and then illustrate how these are positioned and augmented within SOA. We continue this exercise by examining how the components of an SOA inter-relate.
We then move on to a detailed review of the eight most common principles of service-orientation. Each is explained individually and each is accompanied by a case study example. These principles are then revisited as we explore how they inter-relate. In these sections we discover how some principles support or rely on others.
The subsequent section provides a mini-study of how common object-orientation (OO) principles relate to or influence the service-orientation principles we just discussed. This is an interesting analysis for those familiar with object-orientation.
The chapter concludes with an important revelation. After explaining the principles of service-orientation, we compare them with the feature set supplied by the first-generation Web services platform. This then tells us which of the service-orientation principles are provided automatically by the mere use of Web services and which require explicit effort to realize. This is an important piece of knowledge, as it gives us a checklist of design issues that we later incorporate in the step-by-step design processes.
Service Layers (Chapter 9)
Advanced service-orientation issues are addressed in this chapter, as we set our sights on realizing further characteristics of contemporary SOA. We first examine the primary influences that are shaping and broadening the reach of SOA. We then study which of these influences are responsible for realizing certain characteristics. Through deduction we end up with a list of contemporary SOA characteristics that require explicit design effort. Key among these are service-oriented business modeling and organizational agility.
We then move on to defining an approach to designing SOA in support of these characteristics wherein a series of specialized service layers abstract key parts of generic and application-specific logic. This fosters SOA throughout the enterprise and facilitates the realization of many important benefits.
The following three service layers are defined at this stage:
These layers establish the basis for a series of standardized services that are discussed and further explained in subsequent chapters. Next, we raise some issues in relation to the creation of solution-agnostic services and then conclude this chapter with an exploration of eight different service layer configuration scenarios that illustrate a range of possible SOA designs.
1.5.4. Part IV: Building SOA (Planning and Analysis)
All of the previous chapters provide a knowledge of concepts and theory that can now be applied to the real world. These next two chapters structure an SOA delivery project around the creation of a contemporary SOA and then supply detailed guidance as to how business and application logic can be defined and modeled into service candidates.
SOA Delivery Strategies (Chapter 10)
SOA is now viewed from a project delivery perspective by identifying and describing the typical phases that comprise an SOA delivery lifecycle. These phases are then assembled into the following three SOA delivery strategies:
The pros and cons of each are contrasted, and an emphasis is placed on the agile strategy, which attempts to blend the benefits and requirements of the top-down and bottom-up approaches.
Service-Oriented AnalysisPart I: Introduction (Chapter 11)
At this point we have covered fundamental and advanced concepts relating to SOA, service-orientation, and the many facets of the supporting Web services framework. This chapter now takes the first step of applying this knowledge by establishing the service-oriented analysis phase.
The overall objectives of service-oriented analysis are defined, followed by a list of steps required to complete this stage. The last of these steps is a service modeling process that is described in Chapter 12.
This chapter then examines what constitutes a business-centric SOA. It explains the key benefits of investing in the creation of business service layers and highlights the various ways business services can be derived from existing business models.
For the most part, the sections in this chapter assist you in preparing for the step-by-step service modeling process described in the following chapter.
Service-Oriented AnalysisPart II: Service Modeling (Chapter 12)
We now embark on a twelve-step analysis process wherein we apply service-orientation to an existing business workflow and derive business and application service candidates.
This important part of building SOA allows us to create service candidates that become a primary input for the ultimate SOA design we finalize as part of the service-oriented design processes described in upcoming chapters. Our service modeling process is supplemented with detailed case study examples that demonstrate the execution of individual process steps.
Following the process description are a dozen service modeling guidelines, providing advice, recommended analysis standards, and further insights into how best to approach and complete an SOA analysis.
Next, we provide an optional classification system that can be applied to further enhance the analysis process. This approach breaks down and labels units of logic, which can improve the clarity of documentation and the identification of potential reuse opportunities.
Finally, we complete this chapter with another detailed case study example wherein the second of our two fictional companies takes us through the service modeling process again, this time applying the aforementioned classification system. Additionally, this example results in the creation of three different service candidate combinations for the purpose of contrasting approaches.
1.5.5. Part V: Building SOA (Technology and Design)
This, the largest part in the book, provides step-by-step processes for designing specialized SOA services and creating a service-oriented business process. Numerous technology tutorials are supplied to help understand the code examples used throughout these chapters. This part concludes with an overview of what constitutes an SOA technology platform, including a review of current SOA support provided by the .NET framework and the J2EE platform.
Service-Oriented DesignPart I: Introduction (Chapter 13)
This chapter continues where we left off when we completed the service-oriented analysis phase. We now prepare to move our service candidates into service-oriented design.
The first step is an SOA composition exercise that helps identify the architectural boundary of our planned solution (this step is detailed in Chapter 14). The remaining steps consist of the following individual design processes:
Step-by-step descriptions for each of these design processes are provided in Chapters 15 and 16.
These exercises will result in the creation of WSDL definitions that implement service candidates (which originated from the service-oriented analysis process). Therefore, this chapter helps us further prepare by providing short tutorials for the following key language elements:
Note that the language elements described are limited to those used in the case study code samples.
This chapter ends with a discussion of service interface modeling approaches, during which modeling tools are contrasted with hand coding techniques.
Service-Oriented DesignPart II: SOA Composition Guidelines (Chapter 14)
Chapter 14 kicks off the service-oriented design process by providing guidance for composing a service-oriented architecture based on known functional requirements and technical limitations. As part of this procedure, we provide guidelines for choosing service layers and positioning identified standards and SOA extensions.
Specifically, we raise design issues related to incorporating XML, WSDL, XML Schema, SOAP, UDDI, and the WS-I Basic Profile into SOA. We then conclude this chapter with a set of considerations and guidelines for choosing WS-* specifications, with an emphasis on the use of WS-BPEL.
Service-Oriented DesignPart III: Service Design (Chapter 15)
This chapter, the longest in this book, contains three detailed, step-by-step process descriptions for designing services that correspond to two of the three service layers we established in Chapter 9.
The following design processes are described:
Each process description is supplemented with extensive case study examples that demonstrate the application of individual process steps in real-world scenarios. This important chapter is then concluded with a set of service design guidelines applicable to the previously described processes.
Service-Oriented DesignPart IV: Business Process Design (Chapter 16)
Step-by-step instructions for building a service-oriented business process are provided in this chapter. A WS-BPEL process definition is created as part of the case study examples to orchestrate services that were modeled and designed in previous chapters.
Before we get into the service-oriented business process design, we provide a tutorial describing key WS-BPEL language elements used in the detailed examples that supplement the process description steps. (A brief look at the contents of WS-Coordination SOAP headers is also included.)
Fundamental WS-* Extensions (Chapter 17)
Our SOA so far consists of a set of services that establish up to three levels of abstraction, along with a service-oriented business process responsible for orchestrating them. This next chapter provides technical insight into how the feature set of SOA can be extended with the WS-* specifications we introduced in Chapter 7.
Key elements and constructs for the following specifications are covered:
Each language description is supplemented with case study examples containing the code used to implement the corresponding conceptual examples provided in Chapter 7.
SOA Platforms (Chapter 18)
Our final chapter takes a close look at what constitutes an implementation platform for SOA. The individual parts that comprise the development and runtime environments required to build and host a service-oriented solution are explained, along with an "under the hood" look at the implementation logic behind a typical Web service.
This is followed by two identically structured sections that supply an overview of SOA support provided by the J2EE and .NET platforms. Each of these sections begins with a high-level introduction of the respective platforms and then continues to revisit the following aspects of SOA established in earlier chapters:
Case Studies: Conclusion (Appendix A)
Appendix A acts as a bookend to the case study storylines that began in Chapter 2. The progress of each organization is reviewed, and the resulting solution environments are studied. The original objectives established at the beginning of the book are revisited to ensure that all have been met.
Service Models Reference (Appendix B)
This appendix provides a quick reference table for all of the service models described in this book.