The content in this book is divided into the following primary parts:
 Part I: SOA and Web Services Fundamentals
 Part II: SOA and WS-* Extensions
 Part III: SOA and Service-Orientation
 Part IV: Building SOA (Planning and Analysis)
 Part V: Building SOA (Technology and Design)
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.
Below are descriptions of individual parts and chapters:
Chapter 2: Case Studies: Background (TOC)
A common thread across all parts of the book is the consistent use of case studies. The case study examples provided in this book were inspired by and derived from twelve real projects and five real case studies. To establish a consistent real world reference point for all chapters, details from the individual projects were synthesized into two inter-related storylines. Key topics are demonstrated through over 125 individual case study examples interspersed throughout the chapters. Case studies are introduced in Chapter 2, which establishes background information for the two organizations.


Service-Oriented Architecture: Concepts, Technology & Design
Service-Oriented Architecture:
Concepts, Technology & Design

by Thomas Erl
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.

Chapter 3: Introducing SOA
Chapter 4: The Evolution of SOA
Chapter 5: Web Services and Primitive SOA

Chapter 3: Introducing SOA (TOC)
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 constitute 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.

Chapter 4: The Evolution of SOA (TOC)
This chapter continues with an exploration of how SOA came to be. Specifically, we follow a timeline that looks at the following:
  Past architectural platforms from which SOA has evolved and inherited traits and qualities.
  Current influences (as fueled by XML and Web services technology platforms) that have shaped SOA into
    what it is now.
  The ongoing activity of standards organizations and contributing vendors that are further extending the breadth     of the SOA platform.
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:
 World Wide Web Consortium (W3C)
 Organization for the Advancement of Structured Information Standards
   (OASIS)
 Web Services Interoperability Organization (WS-I)
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:
  client-service architecture
  distributed Internet architecture
  distributed architectures that use Web services peripherally
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.

Chapter 5: Web Services and Primitive SOA (TOC)
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:
 basic Web services messaging
  service providers and service requestors
  service descriptions, service contracts, and metadata
  active and passive intermediaries
  message paths and service compositions
  common service models
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.

Part II: SOA and WS-* Extensions
The next set of chapters tackle advanced issues related to a multitude of contemporary SOA extensions.

Chapter 6: Web Services and Contemporary SOA Part I: Activity Management and Composition
Chapter 7: Web Services and Contemporary SOA Part II: Advanced Messaging, Metadata, and Security

Chapter 6: Web Services and Contemporary SOA Part I: Activity Management and Composition (TOC)
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:
  message exchange patterns
  activities
  coordination
  atomic transactions
  business activities
  orchestration
  choreography
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:
  WS-Coordination
  WS-AtomicTransaction
  WS-BusinessActivity
  WS-BPEL (formerly known as BPEL4WS)
  WS-CDL (formerly WS-Choreography)
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.
Chapter 7: Web Services and Contemporary SOA Part II: Advanced Messaging, Metadata, and Security (TOC)
This chapter dives even more deeply into the world of SOA extensions, as we study and explain another series of concepts related additional WS-* specifications.
The following topics are covered:
  addressing
  reliable messaging
  correlation
  policies
  metadata exchange
  security
  notification and eventing
The concepts behind each of these topics are derived from the following WS-* specifications:
  WS-Addressing
  WS-ReliableMessaging
  WS-Policy Framework (including WS-PolicyAttachments
   and WS-PolicyAssertions)
  WS-MetadataExchange
  WS-Security (including XML-Encryption and XML-Signature)
  WS-Notification Framework (including WS-BaseNotification, WS-Topics,
   and WS-BrokeredNotification)
  WS-Eventing
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.

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.

Chapter 8: Principles of Service-Orientation
Chapter 9: Service Layers

Chapter 8: Principles of Service-Orientation (TOC)
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.

Chapter 9: Service Layers (TOC)
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:
  application service layer
  business service layer
  orchestration service layer
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.

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.

Chapter 10: SOA Delivery Strategies
Chapter 11: Service-Oriented Analysis Part I: Introduction
Chapter 12: Service-Oriented Analysis Part II: Service Modeling

Chapter 10: SOA Delivery Strategies (TOC)
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:
  top-down strategy
  bottom-up strategy
  agile strategy
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.

Chapter 11: Service-Oriented Analysis Part I: Introduction (TOC)
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 following chapter.

Chapter 12: Service-Oriented Analysis Part II: Service Modeling (TOC)
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 clarify 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.

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.

Chapter 13: Service-Oriented Design Part I: Introduction
Chapter 14: Service-Oriented Design Part II: SOA Composition Guidelines
Chapter 15: Service-Oriented Design Part III: Service Design
Chapter 16: Service-Oriented Design Part IV: Business Process Design
Chapter 17: Fundamental WS-* Extensions
Chapter 18: SOA Platforms

Chapter 13: Service-Oriented Design Part I: Introduction (TOC)
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:
  Entity-centric business service design
  Application service design
  Task-centric business service design
  Service-oriented business process design
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:
  WSDL
  WSDL-related XML Schema elements
  SOAP message structure 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.

Chapter 14: Service-Oriented Design Part II: SOA Composition Guidelines (TOC)
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.

Chapter 15: Service-Oriented Design Part III: Service Design (TOC)
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:
  Entity-centric business service design
  Application service design
  Task-centric business service design
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.

Chapter 16: Service-Oriented Design Part IV: Business Process Design (TOC)
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.)
Note that this chapter became an official OASIS submission and was used as the starting point from which the OASIS WS-BPEL Technical Committee created the WS-BPEL Primer document.
Chapter 17: Fundamental WS-* Extensions (TOC)
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:
  WS-Addressing
  WS-ReliableMessaging
  WS-Policy
  WS-MetadataExchange
  WS-Security
Each language description is supplemented with case study examples containing the code used to implement the corresponding conceptual examples provided in Chapter 7.

Chapter 18: SOA Platforms (TOC)
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:
  Characteristics of primitive SOA
  Principles of service-orientation
  Characteristics of contemporary SOA

Appendices

Appendix A: Case Studies: Conclusion (TOC)
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.

Appendix B: Service Models Reference (TOC)
This appendix provides a quick reference table for all of the service models described in this book.