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
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 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
|