World's Top-Selling SOA Books from the Top Industry Experts
The Prentice Hall Service-Oriented Computing Series from Thomas Erl The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services Service-Oriented Architecture: Concepts, Technology & Design SOA Principles of Service Design Web Service Contract Design and Versioning for SOA SOA Design Patterns SOA with .NET & Windows Azure: Realizing Service-Orientation with the Microsoft Platform SOA Governance SOA with REST Cloud Computing Modern SOA Infrastructure: Technology, Design, and Governance SOA with Java Next Generation SOA Modern SOA Methodology
Preface

Chapter 1: Introduction
  1.1 About this Book
  1.2 Objectives of this Book
  1.3 Who this Book if For
  1.4 What this Book Does Not Cover
  1.5 Prerequisite Reading
  1.6 How this Book is Organized
  1.7 How Principles and Patterns are Used in this Book
    Part I: Fundamentals
    Part II: Services and Service Composition
    Part III: Infrastructure and Architecture
    Part IV: Appendices
  1.8 Symbols, Figures, and Style Conventions.

Chapter 2: Case Study Background
  2.1 How Case Study Examples are Used
  2.2 Case Study Background: ActionCon
    History and Culture
    Technical Infrastructure
    Business Goals and Obstacles

Part I: Fundamental Service Contract Design
Chapter 3: SOA Fundamentals
  3.1 Basic SOA Terminology
    Service-Oriented Computing
    Service-Orientation
    Service-Oriented Architecture (SOA)
    Services
    Services as Components
    Services as Web Services
    Services as REST Services
    Service Models
    Agnostic Logic and Non-Agnostic Logic
    Service Composition
    Service Inventory
    Service-Oriented Analysis
    Service Candidate
    Service-Oriented Design
    Service Contract
    Service-Related Granularity
    SOA Design Patterns
  3.2 Service-Oriented Computing Goals
    Increased Intrinsic Interoperability
    Increased Federation
    Increased Vendor Diversification Options
    Increased Business and Technology Domain Alignment
  3.3 Further Reading

Chapter 4: A Brief History of Legacy .NET Distributed Technologies
  4.1 Distributed Computing 101
    Client-Server
    Distributed Architecture
    Service-Oriented Architecture
  4.2 .NET Enterprise Services
    It All Began with COM (and DCOM)
    COM+ Services
    .NET Assemblies
    Distributed Transaction Coordinator
    .NET Enterprise Services and Service-Orientation
  4.3 .NET Remoting
    .NET Remoting Architecture
    Serializable Classes
    Remotable Classes
    Ordinary Classes
    Hosting .NET Remoting Components
    Windows Service
    IIS Hosting Under ASP.NET
    Hosting a .NET Remoting Component in a Console Application
    .NET COM+ Services
    .NET Remoting Configurations
    Activation Types
    Message Formats
    Communication Protocols
    Object Lifetime Management
    .NET Remoting and Service-Orientation
  4.4 Microsoft Messaging Queue (MSMQ)
    The Queues
    Sending and Receiving Messages
    MSMQ and Service-Orientation
  4.5 System.Transactions
    Distributed Resource Transactions
    Explicit and Implicit Programming Models
    Ambient Transactions
  4.6 Web Services (ASMX and WSE)
    XML Web Services (ASMX)
    The WebService Attribute
    The WebMethod Attribute
    Web Service Enhancements (WSE)
  4.7 REST Service Processing with IHttpHandler

Chapter 5: WCF Services
  5.1 Overview
  5.2 Service Contracts with WCF
    WCF Terminology
    WCF Service Contract
    Interface Contract
    Operation Contract
    Data Contract
    Message Contract
    Service Endpoint
    The ServiceContract and OperationContract Attributes
    Data Models and the DataContract Attribute
    Messaging and the MessageContract Attribute
    Service Endpoints and the endpoint Element
    Address
    Bindings
    Contract
    REST Service Classes and Attributes
    The WebGet Attribute
    The WebInvoke Attribute
    WCF UriTemplate Attribute
    Faults and the FaultContract Attribute
    MEX Endpoints
    Versioning Considerations
  5.3 Service Implementation with WCF
    Behaviors
    Instancing
    A Sample Implementation
  5.4 Service Hosting with WCF
    Self-Hosted Services
    Managed Windows Services
    IIS Process Boundary
    Windows Activation Services (WAS)
    Hosting REST Services
  5.5 Service Consumers with WCF
    Using the Service Metadata Tool
    Writing the Proxy Class for a Service
    Using the ChannelFactory Class

Chapter 6: WCF Extensions
  6.1 WCF Security
    Security Modes
    Authorization
    Federated Identity
  6.2 WCF Transactions
    Operation Attributes for Transactions
    TransactionScopeRequired
    TransactionAutoComplete
    TransactionFlow
    Service Attributes for Transactions
    TransactionIsolationLevel
    TransactionAutoCompleteOnSessionClose
    TransactionTimeout
    Durable Services
  6.3 WCF Router
    The RoutingService Class
    Routing Contracts
    Routing Configuration
    Step 1: Define Endpoints
    Step 2: Configure Service Behavior
    Step 3: Enumerate Target Endpoints
    Step 4: Define Message Filters
    Step 5: Create a Filter Table
    Fault Tolerance
  6.4 WCF Discovery
    Discovery Modes
    Locating a Service Ad Hoc
    Sending and Receiving Service Announcements
    Discovery Proxies for Managed Discovery
    Discovering from a Discovery Proxy
    Implicit Service Discovery
  6.5 WCF Extensibility
    WCF Layers
    Layered Extensibility
    Channel Layer Extensibility
  6.6 WCF Management Tools
    Administration
    Troubleshooting
    Logging Messages

Chapter 7: .NET Enterprise Services
  7.1 SQL Server
    Native XML Web Services Support
    Service Broker (SSB)
    Query Notification
    XML Support in SQL Server
  7.2 Windows Workflow Foundation (WF)
    WF Architecture
    Workflows
    Sequential Workflows
    State Machine Workflows
    Workflow Designer
    Workflow Persistence (with WF)
    Communicating with the Host Container.
    Activities
    Workflow Runtime Environment.
    WF Programming Model
    Passing Parameters into a Workflow Instance
    Returning Parameters from a Workflow Instance
    Workflow-Enabled Services.
    Versioning Orchestrations
    WF Extensibility
    Business Rules
  7.3 Application Blocks and Software Factories
    Application Blocks
    Software Factories
    Guidance Toolkits
    Web Services Software Factory
  7.4 Windows Server AppFabric
    Configurable Hosting Environment
    Workflow Persistence (with AppFabric)
    In-Memory Application Cache Platform
    Manageability Extensions
    Application Server Event Collector
  7.5 BizTalk Server
    BizTalk Server Architecture
    Messaging
    Pipelines
    Pipeline Components
    Ports and Locations
    Adapters
    Context Properties
    Itineraries
    Unified Exception Management

Chapter 8: Cloud Services with Windows Azure
  8.1 Cloud Computing 101
    Cloud Deployment Models
    Public Cloud
    Private Cloud
    Community Cloud
    Other Deployment Models
    The Intercloud (Cloud of Clouds)
    Deployment Models and Windows Azure
    Service Delivery Models
    Infrastructure-as-a-Service (IaaS)
    Platform-as-a-Service (PaaS)
    Software-as-a-Service (SaaS)
    Other Delivery Models
    IaaS vsPaaS
  8.2 Windows Azure Platform Overview
    Windows Azure (Application Container)
    SQL Azure
    Windows Azure Platform AppFabric
  8.3 Windows Azure Roles
    Web Roles and Worker Roles
    Virtual Machines
    Input Endpoints
    Inter-Role Communication
  8.4 Hello World in Windows Azure
    1. Create a Cloud Service Project
    2. Choose an ASP.NET Web Role
    3. Create the Solution
    4. Instantiate the Service
  8.5 A Web Service in Windows Azure
    1. Create a Host Service and Storage Service
    2. Create and Deploy a Service Package
    3. Promote the Service to Production
  8.6 A REST Service in Windows Azure
    REST Service Addressing
    Creating a Windows Azure REST Service
  8.7 Windows Azure Storage
    Tables
    Entities and Properties
    Data Access
    Queues
    Blobs
    Block Blobs
    Page Blobs
    Windows Azure Drive

Part II: Advanced Service Contract Design
Chapter 9: Service-Orientation with .NET Part I: Service Contracts and Interoperability
  9.1 Standardized Service Contract
    Contract-First
    1Create or Reuse Data Contract
    2Create Message Contract
    3Create Interface Contract
    Standardized Service Contract and Patterns
  9.2 Canonical Schema
    Creating Schemas with Visual Studio
    Generating .NET Types
    Using the DataContract Library
  9.3 Data Model Transformation
    Object-to-Object
    LINQ-to-XML
    XSLT Transformation
  9.4 Canonical Protocol
    Web Service
    REST Service
    Component
    Another WCF Option: Named Pipes
    Dual Protocols with WCF
  9.5 Canonical Expression
    Service Naming Conventions
    Service Capability Naming Conventions

Chapter 10: Fundamental WS-Policy: Assertions, Expressions, and Attachments
  10.1 Service Loose Coupling
    Service Loose Coupling and Patterns
  10.2 Decoupled Contract
    WSDL-First
    Generating Service Code Using Svcutil
    Generating WCF Service Code Using WSCF.blue
    Generating ASMX Service Code Using WSCF.classic
  10.3 Service Façade
  10.4 Concurrent Contracts
  10.5 Service Loose Coupling and Service Capability
    Granularity
  10.6 Service Abstraction
  10.7 Validation Abstraction
  10.8 Exception Shielding
  10.9 Service Discoverability
    In-line Documentation
    REST and Hypermedia
    Service Profiles
  10.10 Metadata Centralization

Chapter 11: Service-Orientation with .NET Part III: Reusability and Agnostic Service Models
  11.1 Service Reusability and the Separation of Concerns
    Functional Decomposition
    Service Encapsulation
    Agnostic Context
    Agnostic Capability
    Utility Abstraction
    Entity Abstraction
    The Inventory Analysis Cycle
    Additional Design Considerations
  11.2 Case Study Example: Utility Abstraction with a .NET Web Service
  11.3 Case Study Example: Entity Abstraction with a .NET REST Service

Chapter 12: Service-Orientation with .NET Part III: Reusability and Agnostic Service Models
  12.1 Service Composition 101
    Service-Orientation and Service Composition
    Service Composability (PSD)
    Capability Composition and Capability Recomposition
    Capability Composition
    Capability Recomposition
    Composition Roles
    Service Layers
    Non-Agnostic Context
    Process Abstraction and Task Services
  12.2 Orchestration
    Process Abstraction, Process Centralization, and Orchestrated Task Services
    Process Centralizationand Tools
    Process Abstraction and WS-BPEL
    State Repository and Compensating Service Transaction
    State Repository with .NET
    Compensating Service Transaction
    Other Patterns
    Microsoft Orchestration Platforms: WF and BizTalk Server

Chapter 13: Orchestration Patterns with WF
  13.1 Process Abstraction and Orchestrated Task Services
    A Brief History of WF Service Contract Support
    Publishing WF Workflows as Web Services and Activities
    Workflows Published as ASMX Services
    Workflows Published via WCF 3.5 Activities
    Workflows Published via WCF 4.0 Activities
    Workflows Published via ExternalDataExchange Services
    WS-I BasicProfile Support
    Publishing WF Workflows as REST Services
    JSON Encoding
    Send and Receive Activity Configuration
    Orchestrated Task Services with REST and WF 4.0
  13.2 Process Centralization
    Centralized Process Maintenance
    WS-BPEL Support
  13.3 State Repository
    SQL Persistence Service and Scaling Out in WF 3.0
    SQL Persistence Service and Scaling Out in WF 4
  13.4 Compensating Service Transaction
    Creating Compensations
    Triggering Compensations
  13.5 Case Study Example

Chapter 14: Orchestration Patterns with BizTalk Server
  14.1 Process Abstraction and Orchestrated Task Services
    Orchestrated Task Service Contracts
    WS-* Support
    Case Study Example
  14.2 Process Centralization
    Centralized Process Maintenance
    WS-BPEL Support
    Exporting BizTalk Orchestrations to WS-BPEL
    Importing WS-BPEL Processes into BizTalk
  14.3 State Repository
  14.4 Compensating Service Transaction
    Case Study Example

Part III: Service Contract Versioning
Chapter 15: Enterprise Service Bus with BizTalk Server and Windows Azure
  15.1 Microsoft and the ESB
  15.2 Integration with BizTalk
    Application Integration 101
    The BizTalk Hub-Bus Model
  15.3 The ESB Toolkit
    Itineraries
    Itineraries Types
    The Itinerary Lifecycle
    Resolvers
    Adapter Providers
    WCF-Custom and REST
  15.4 Distributed and Scalable ESB Architecture
    Configuring for High-Availability
    Techniques for Scaling
    Distributed ESBs
  15.5 Cloud-Enabling the ESB with Windows Azure
    Receiving Messages from Azure’s AppFabric Service Bus
    Sending Messages to Azure’s AppFabric Service Bus
  15.6 Governance Considerations
    SLA Enforcement
    Monitoring
    Preparing Project Teams
  15.7 Mapping the Microsoft Platform to the Enterprise Service Bus Pattern

Chapter 16: Advanced WS-Policy Part I: Policy Centralization and Nested, Parameterized, and Ignorable Assertions
  16.1 Introducing the Service Bus
    Connectivity Fabric
    Message Buffers
    Service Registry
  16.2 Service Bus and REST
    REST-Based Service Design
    REST-Based Service Consumer Design
    Message Buffers and REST
  16.3 Service Bus Connectivity Models
    Eventing
    Service Remoting
    Tunneling
  16.4 Working with Windows Azure Platform AppFabric Service Bus
    Setting up the AppFabric Service Bus
    Defining a REST-Based Service Bus Contract
    Creating the Service Bus Message Buffer

Chapter 17: SOA Security with .NET and Windows Azure
  17.1 Authentication and Authorization with WCF
    Direct and Brokered Authentication
    Direct Authentication
    Brokered Authentication
    Authentication Patterns in WCF
    Role-Based Authorization
    Authorization Roles in WCF
    Authorizing Operations with Roles
    Claims-Based Authorization
    Claims Processing in WCF
    Implementing Claims-Based Authorization
    Access Control in Windows Azure
    Designing Custom Claims
    Case Study Example
  17.2 Windows Identity Foundation (WIF)
    Digital Identity
    The Identity Metasystem
    Windows Cardspace
    Active Directory Federation Services (ADFS)
    WIF Programming Model
    WCF Integration
    Programming Windows Cardspace
    Developing a Relying Party
    Developing an Identity Provider
  17.3 Windows Azure Security
    Cloud Computing Security 101
    Cross-Domain Access Control
    Hybrid Cloud Security
    Inter-Organization Service Composition Security
    External Identity Providers
    Claims-Based Access Control, As-A-Service
    Windows Azure Platform AppFabric Access Control Overview
    Access Control Step-by-Step
    Access Control and REST
    Access Control Service Authorization Scenarios
    Hybrid Cloud Authorization Model
    Public Cloud Authorization Model
    Cloud-to-Cloud Authorization Model
    Case Study Example

Chapter 18: Service-Oriented Presentation Layers with .NET
  18.1 Windows Presentation Foundation and the Prism Library
    Shell
    Views
    View Discovery versus View Injection
    Regions
    Modules
    Shared Services
  18.2 Design Patterns for Presentation Logic
    User Interface Patterns
    Composite View [CJP]
    Command [DP]
    UI Mediator
    Separated Presentation
    Modularity Patterns
    Separated Interface [PEA]
    Plug-In [PEA]
    Event Aggregator [PEA]
    Inversion of Control [DP]
    Dependency Injection [PEA]
    Service Locator [CJP]
  18.3 A Simple Service-Oriented User Interface
    Creating the Project
    Dynamically Loading Modules

Chapter 19: Service Performance Optimization
  19.1 Overview
    Optimization Areas
    Service Implementation Processing
    Service Framework Processing
    Wire Transmission Processing
  19.2 Service Performance Optimization Techniques
    Caching to Avoid Costly Processing
    Intermediary
    Service Container
    Service Proxy
    Caching Utility Service
    Comparing Caching Techniques
    Cache Implementation Technologies
    Computing Cache Keys
    Case Study Example
    Method 1
    Method 2
    Caching REST Responses
    Monitoring Cache Efficiency
    Reducing Resource Contention
    Request Throttling
    Throttling With WCF
    Case Study Example
    Request Throttling with BizTalk Server
    Coarse-Grained Service Contracts
    Case Study Example
    Selecting Application Containers
    Performance Policies
    Case Study Example
    REST Service Message Sizes
    Hardware Encryption
    Transport Encryption
    Message Encryption
    Custom Encryption Solution
    High Performance Transport
    Case Study Example
    MTOM Encoding
    Case Study Example
    Performance Considerations for Service Contract Design
    Case Study Example
    Impact on Service-Orientation Principles
  19.3 Service Composition Performance Optimization Techniques
    Transformation Avoidance and Caching
    Asynchronous Interactions
    Parallelize Where Possible
    Parallel Activity in WF
    Parallel Execution in BizTalk Server
    Replicator Activity in WF
    Consider Co-Hosting When Necessary
    Compose High Performance Services
    Impact on Service-Orientation Principles

Chapter 20: SOA Metrics with BAM
  20.1 SOA Metric Types
  20.2 Introducing BizTalk BAM
    BizTalk and BAM
    BAM Solution Architecture
    The BAM Management Utility
    The Tracking Profile Editor (TPE)
    Real-Time vs Scheduled Aggregations
  20.3 Activities and Views
    Roles-based Views for Service Governance
    Creating Views
  20.4 BAM APIs
    Event Streams
    DirectEventStream (DES)
    BufferedEventStream (BES)
    OrchestrationEventStream (OES)
    IPipelineContext Interface
    Abstracted APIs for Service Metrics
    Metrics for Service Compositions
    WCF and WF Interceptors
    Notifications
    Rapid Prototyping
  20.5 Managing BAM
    Database Outages
    Security
    Scripting Deployment
    Reporting
    Case Study Example

Part IV: Appendices
Appendix A: Case Study Conclusion

Appendix B: Industry Standards Reference

Appendix C: Service-Orientation Principles Reference

Appendix D: SOA Design Patterns Reference

Appendix E: The Annotated SOA Manifesto
  The Annotated SOA Manifesto

Principles and Patterns
  Agnostic Capability (Erl)
  Agnostic Context (Erl)
  Agnostic Sub-Controller (Erl)
  Asynchronous Queuing (Little, Rischbeck, Simon)
  Atomic Service Transaction (Erl)
  Brokered Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado,Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Canonical Expression (Erl)
  Canonical Protocol (Erl)
  Canonical Resources (Erl)
  Canonical Schema (Erl)
  Canonical Schema Bus (Utschig, Maier, Trops, Normann, Winterberg, Erl)
  Canonical Versioning (Erl)
  Capability Composition (Erl)
  Capability Recomposition (Erl)
  Compatible Change (Orchard, Riley)
  Compensating Service Transaction (Utschig, Maier, Trops, Normann, Winterberg,Loesgen, Little)
  Composition Autonomy (Erl)
  Concurrent Contracts (Erl)
  Contract Centralization (Erl)
  Contract Denormalization (Erl)
  Cross-Domain Utility Layer (Erl)
  Data Confidentiality (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado,Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Data Format Transformation (Little, Rischbeck, Simon)
  Data Model Transformation (Erl)
  Data Origin Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Decomposed Capability (Erl)
  Decoupled Contract (Erl)
  Direct Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Distributed Capability (Erl)
  Domain Inventory (Erl)
  
  Dual Protocols (Erl)
  Enterprise Inventory (Erl)
  Enterprise Service Bus (Erl, Little, Rischbeck, Simon)
  Entity Abstraction (Erl)
  
  Event-Driven Messaging (Little, Rischbeck, Simon)
  Exception Shielding (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Federated Endpoint Layer (Erl)
  File Gateway (Roy)
  Functional Decomposition (Erl)
  Intermediate Routing (Little, Rischbeck, Simon)
  Inventory Endpoint (Erl)
  Legacy Wrapper (Erl, Roy)
  Logic Centralization (Erl)
  Message Screening (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Messaging Metadata (Erl)
  Metadata Centralization (Erl)
  Multi-Channel Endpoint (Roy)
  Non-Agnostic Context (Erl)
  Official Endpoint (Erl)
  
  Orchestration (Erl, Loesgen)
  Partial State Deferral (Erl)
  Partial Validation (Orchard, Riley)
  Policy Centralization (Erl)
  Process Abstraction (Erl)
  Process Centralization (Erl)
  Protocol Bridging (Little, Rischbeck, Simon)
  Proxy Capability (Erl)
  Redundant Implementation (Erl)
  Reliable Messaging (Little, Rischbeck, Simon)
  Rules Centralization (Erl)
  Schema Centralization (Erl)
  Service Agent (Erl)
  Service Broker (Little, Rischbeck, Simon)
  Service Callback (Karmarkar)
  Service Data Replication (Erl)
  Service Decomposition (Erl)
  Service Encapsulation (Erl)
  Service Facade (Erl)
  Service Grid (Chappell)
  Service Instance Routing (Karmarkar)
  Service Layers (Erl)
  Service Messaging (Erl)
  Service Normalization (Erl)
  Service Perimeter Guard (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  Service Refactoring (Erl)
  State Messaging (Karmarkar)
  State Repository (Erl)
  Stateful Services (Erl)
  Termination Notification (Orchard, Riley)
  Three-Layer Inventory (Erl)
  Trusted Subsystem (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
  UI Mediator (Utschig, Maier, Trops, Normann, Winterberg)
  Utility Abstraction (Erl)
  Validation Abstraction (Erl)
  Version Identification (Orchard, Riley)

Appendix F: Additional Resources
  Consuming Services with WCF
  Introduction
  Cleaning Up Resources
  The Proper Disposal and Closing of an ICommunicationObject
  The ICommunicationObject.Close() Method
  The ICommunicationObject.Abort() Method
  Abort() versus Close()
  IDisposable for Cleaning Up Resources
  IDisposable and Its Relation to ClientBase and ChannelFactory
  Cleaning Up Resources with the Using Block
  Cleaning Up Resources with the Try-Catch-Finally-Abort Pattern
  Handling Exceptions and Cleaning Up Resources with the Try-Close-Catch-Abort Pattern
  Cleaning Up Resources in a Convenient Way
  How to Handle Connections when Consuming Services Using WCF
  Conclusion

SOA .Net & Windows Azure
SOA with .NET and Windows Azure: Realizing Service-Orientation with the Microsoft Platform
by David Chou, John deVadoss, Thomas Erl, Nitin Gandhi, Hanu Kommapalati, Brian Loesgen, Christoph Shittko, Herbjorn Wilhelmsen, Mickie Williams
Forewords by David Chappell, S. Somasegar
 
Copyright © Arcitura Education Inc. SOA School