Cover image for Programming WCF Services, 2nd Edition

Book description

Programming WCF Services is the authoritative, bestselling introduction to Microsoft's unified platform for developing service-oriented applications (SOA) on Windows. Hailed as the most definitive treatment of WCF available, this relentlessly practical book provides insight, not documentation, to help you learn the topics and skills you need for building WCF-based applications that are maintainable, extensible, and reusable. Author Juval Lowy, Microsoft software legend and participant in WCF's original strategic design review, revised this new edition for the latest productivity-enhancing features of C# 3.0 and the .NET 3.5 SP1 Framework. The book also contains Lowy's ServiceModelEx, a framework of useful utilities, tools, and helper classes that let you simplify and automate many tasks, and extend WCF as well. With this book, you will:

  • Learn about WCF architecture and essential building blocks, including key concepts such as reliability and transport session

  • Use built-in features such as service hosting, instance management, concurrency management, transactions, disconnected queued calls, and security

  • Take advantage of relevant design options, tips, and best practices in Lowy's ServiceModelEx framework to increase your productivity and the quality of your WCF services

  • Learn the rationale behind particular design decisions, and discover poorly documented and little-understood aspects of SOA development

By teaching you the "why" along with the "how" of WCF programming, Programming WCF Services not only will help you master WCF, it will enable you to become a better software engineer.

Table of Contents

  1. Programming WCF Services, Second Edition
  2. Dedication
  3. A Note Regarding Supplemental Files
  4. Forewords
  5. Preface
    1. How This Book Is Organized
    2. Some Assumptions About the Reader
    3. What You Need to Use This Book
    4. Conventions Used in This Book
    5. Using Code Examples
    6. How to Contact Us
    7. Safari® Books Online
    8. Acknowledgments
  6. 1. WCF Essentials
    1. What Is WCF?
    2. Services
      1. Service Execution Boundaries
        1. WCF and location transparency
    3. Addresses
      1. TCP Addresses
      2. HTTP Addresses
      3. IPC Addresses
      4. MSMQ Addresses
      5. Peer Network Addresses
    4. Contracts
      1. The Service Contract
        1. Applying the ServiceContract attribute
        2. Names and namespaces
    5. Hosting
      1. IIS 5/6 Hosting
        1. Using Visual Studio 2008
        2. The Web.Config file
      2. Self-Hosting
        1. Using Visual Studio 2008
        2. Self-hosting and base addresses
        3. Advanced hosting features
        4. The ServiceHost<T> class
      3. WAS Hosting
      4. Custom Hosting in IIS/WAS
    6. Bindings
      1. The Common Bindings
        1. Format and encoding
      2. Choosing a Binding
      3. Additional Bindings
      4. Using a Binding
    7. Endpoints
      1. Administrative Endpoint Configuration
        1. Using base addresses
        2. Binding configuration
      2. Programmatic Endpoint Configuration
        1. Binding configuration
    8. Metadata Exchange
      1. Enabling Metadata Exchange Administratively
      2. Enabling Metadata Exchange Programmatically
      3. The Metadata Exchange Endpoint
        1. Adding MEX endpoints programmatically
        2. Streamlining with ServiceHost<T>
      4. The Metadata Explorer
    9. Client-Side Programming
      1. Generating the Proxy
        1. Generating the proxy using SvcUtil
      2. Administrative Client Configuration
        1. Binding configuration
        2. Generating the client config file
        3. In-proc configuration
        4. The SvcConfigEditor
        5. Working with the proxy
        6. Closing the proxy
        7. Call timeout
      3. Programmatic Client Configuration
      4. The WCF-Provided Test Client
    10. Programmatic Versus Administrative Configuration
    11. WCF Architecture
      1. Host Architecture
    12. Working with Channels
      1. The InProcFactory Class
        1. Implementing InProcFactory<T>
    13. Transport-Level Sessions
      1. Transport Session and Binding
      2. Transport Session Termination
    14. Reliability
      1. Bindings, Reliability, and Ordered Messages
      2. Configuring Reliability
      3. Requiring Ordered Delivery
  7. 2. Service Contracts
    1. Operation Overloading
    2. Contract Inheritance
      1. Client-Side Contract Hierarchy
        1. Restoring the hierarchy on the client
    3. Service Contract Factoring and Design
      1. Contract Factoring
      2. Factoring Metrics
    4. Contract Queries
      1. Programmatic Metadata Processing
        1. The MetadataResolver class
      2. The MetadataHelper Class
  8. 3. Data Contracts
    1. Serialization
      1. .NET Serialization
        1. The Serializable attribute
        2. The NonSerialized attribute
        3. The .NET formatters
      2. The WCF Formatters
      3. Data Contract via Serialization
    2. Data Contract Attributes
      1. Importing a Data Contract
      2. Data Contracts and the Serializable Attribute
      3. Inferred Data Contracts
      4. Composite Data Contracts
      5. Data Contract Events
        1. Using the deserializing event
        2. Using the deserialized event
      6. Shared Data Contracts
    3. Data Contract Hierarchy
      1. Known Types
      2. Service Known Types
      3. Multiple Known Types
      4. Configuring Known Types
      5. Objects and Interfaces
    4. Data Contract Equivalence
      1. Serialization Order
    5. Versioning
      1. New Members
      2. Missing Members
        1. Using the OnDeserializing event
        2. Required members
      3. Versioning Round-Trip
        1. Schema compatibility
    6. Enumerations
    7. Delegates and Data Contracts
    8. Data Sets and Tables
      1. Using Arrays Instead of Tables
        1. Converting legacy data tables
        2. Converting new data tables
      2. Using LINQ to SQL
    9. Generics
    10. Collections
      1. Concrete Collections
      2. Custom Collections
      3. The CollectionDataContract Attribute
      4. Referencing a Collection
      5. Dictionaries
  9. 4. Instance Management
    1. Behaviors
    2. Per-Call Services
      1. Benefits of Per-Call Services
      2. Configuring Per-Call Services
      3. Per-Call Services and Transport Sessions
      4. Designing Per-Call Services
        1. Per-call services and performance
        2. Cleanup operations
      5. Choosing Per-Call Services
    3. Per-Session Services
      1. Configuring Private Sessions
        1. SessionMode.Allowed
        2. SessionMode.Required
        3. SessionMode.NotAllowed
        4. Bindings, contracts, and service behavior
        5. Consistent configuration
      2. Sessions and Reliability
      3. The Session ID
      4. Session Termination
    4. Singleton Service
      1. Initializing a Singleton
        1. Streamlining with ServiceHost<T>
      2. Choosing a Singleton
    5. Demarcating Operations
    6. Instance Deactivation
      1. Configuring with ReleaseInstanceMode.None
      2. Configuring with ReleaseInstanceMode.BeforeCall
      3. Configuring with ReleaseInstanceMode.AfterCall
      4. Configuring with ReleaseInstanceMode.BeforeAndAfterCall
      5. Explicit Deactivation
      6. Using Instance Deactivation
    7. Durable Services
      1. Durable Services and Instance Management Modes
        1. Initiating and terminating
      2. Instance IDs and Durable Storage
      3. Explicit Instance IDs
      4. Instance IDs in Headers
      5. Context Bindings for Instance IDs
        1. Using the standard ID for context binding
      6. Automatic Durable Behavior
        1. The durable service behavior attribute
        2. The durable operation behavior attribute
        3. Programmatic instance management
        4. Persistence providers
        5. Custom persistence providers
        6. The SQL Server persistence provider
    8. Throttling
      1. Configuring Throttling
        1. Administrative throttling
        2. Programmatic throttling
        3. Streamlining with ServiceHost<T>
        4. Reading throttle values
      2. Throttled Connections in the Binding
  10. 5. Operations
    1. Request-Reply Operations
    2. One-Way Operations
      1. Configuring One-Way Operations
      2. One-Way Operations and Reliability
      3. One-Way Operations and Sessionful Services
      4. One-Way Operations and Exceptions
    3. Callback Operations
      1. The Callback Contract
      2. Client Callback Setup
        1. Duplex proxies
      3. Service-Side Callback Invocation
        1. Callback reentrancy
      4. Callback Connection Management
        1. Connection management and instance mode
      5. The Duplex Proxy and Type Safety
      6. The Duplex Factory
      7. Callback Contract Hierarchy
      8. Callbacks, Ports, and Channels
        1. Assigning a callback address
        2. Assigning the callback address declaratively
    4. Events
    5. Streaming
      1. I/O Streams
      2. Streaming and Binding
      3. Streaming and Transport
      4. Stream Management
  11. 6. Faults
    1. Error Isolation and Decoupling
      1. Error Masking
      2. Channel Faulting
        1. Closing the proxy and the using statement
        2. Exceptions and instance management
    2. Fault Propagation
      1. Fault Contracts
        1. Fault handling
        2. Faults and channels
      2. Fault Debugging
        1. Including exceptions declaratively
        2. Host and exception diagnostics
        3. Exception extraction
      3. Faults and Callbacks
        1. Callback debugging
    3. Error-Handling Extensions
      1. Providing a Fault
        1. Using ProvideFault( )
        2. Exception promotion
      2. Handling a Fault
        1. The logbook service
      3. Installing Error-Handling Extensions
        1. The ErrorHandlerBehavior attribute
      4. The Host and Error Extensions
      5. Callbacks and Error Extensions
        1. The CallbackErrorHandlerBehavior attribute
  12. 7. Transactions
    1. The Recovery Challenge
    2. Transactions
      1. Transactional Resources
      2. Transaction Properties
        1. The atomic property
        2. The consistent property
        3. The isolated property
        4. The durable property
      3. Transaction Management
        1. The transaction management challenge
        2. Distributed transactions
        3. The two-phase commit protocol
      4. WCF Resource Managers
    3. Transaction Propagation
      1. Transaction Flow and Bindings
      2. Transaction Flow and the Operation Contract
        1. TransactionFlowOption.NotAllowed
        2. TransactionFlowOption.Allowed
        3. TransactionFlowOption.Mandatory
      3. One-Way Calls
    4. Transaction Protocols and Managers
      1. Protocols and Bindings
      2. Transaction Managers
        1. The LTM
        2. The KTM
        3. The DTC
      3. Transaction Manager Promotion
        1. LTM promotion
        2. KTM promotion
        3. Resources and promotion
    5. The Transaction Class
      1. The Ambient Transaction
      2. Local Versus Distributed Transactions
        1. The local transaction identifier
        2. The distributed transaction identifier
    6. Transactional Service Programming
      1. Setting the Ambient Transaction
      2. Transaction Propagation Modes
        1. Client/Service transaction mode
        2. Requiring transaction flow
        3. Client transaction mode
        4. Service transaction mode
        5. None transaction mode
        6. Choosing a service transaction mode
      3. Voting and Completion
        1. Declarative voting
        2. Explicit voting
        3. Terminating a transaction
      4. Transaction Isolation
        1. Isolation and transaction flow
      5. Transaction Timeout
        1. Transaction flow and timeout
    7. Explicit Transaction Programming
      1. The TransactionScope Class
        1. TransactionScope voting
      2. Transaction Flow Management
        1. Voting inside a nested scope
        2. TransactionScopeOption.Required
        3. TransactionScopeOption.RequiresNew
        4. TransactionScopeOption.Suppress
        5. TransactionScope timeout
        6. TransactionScope isolation level
      3. Non-Service Clients
    8. Service State Management
      1. The Transaction Boundary
    9. Instance Management and Transactions
      1. Per-Call Transactional Services
        1. The transaction lifecycle
      2. Per-Session Transactional Services
        1. Releasing the service instance
        2. Disabling releasing the service instance
        3. State-aware per-session services
        4. Stateful per-session services
        5. Transaction lifecycle
        6. Concurrent transactions
        7. Completing on session end
        8. Transactional affinity
        9. Hybrid state management
      3. Transactional Durable Services
        1. Instance ID management
      4. Transactional Behavior
        1. In-proc transactions
      5. Transactional Singleton Service
        1. Stateful singleton service
      6. Instancing Modes and Transactions
    10. Callbacks
      1. Callback Transaction Modes
        1. Isolation and timeouts
      2. Callback Voting
      3. Using Transactional Callbacks
        1. Out-of-band transactional callbacks
        2. Service transactional callbacks
  13. 8. Concurrency Management
    1. Instance Management and Concurrency
    2. Service Concurrency Modes
      1. ConcurrencyMode.Single
        1. Synchronized access and transactions
      2. ConcurrencyMode.Multiple
        1. Unsynchronized access and transactions
      3. ConcurrencyMode.Reentrant
        1. Designing for reentrancy
        2. Reentrancy and transactions
        3. Callbacks and reentrancy
    3. Instances and Concurrent Access
      1. Per-Call Services
      2. Sessionful and Singleton Services
    4. Resources and Services
      1. Deadlocked Access
      2. Deadlock Avoidance
    5. Resource Synchronization Context
      1. .NET Synchronization Contexts
        1. The SynchronizationContext class
        2. Working with the synchronization context
      2. The UI Synchronization Context
        1. UI access and updates
        2. Safe controls
    6. Service Synchronization Context
      1. Hosting on the UI Thread
        1. Accessing the form
        2. Multiple UI threads
      2. A Form As a Service
        1. The FormHost<F> class
      3. The UI Thread and Concurrency Management
        1. UI responsiveness
        2. The UI thread and concurrency modes
    7. Custom Service Synchronization Contexts
      1. The Thread Pool Synchronizer
        1. Declaratively attaching a custom synchronization context
      2. Thread Affinity
        1. The host-installed synchronization context
      3. Priority Processing
    8. Callbacks and Client Safety
      1. Callbacks with ConcurrencyMode.Single
      2. Callbacks with ConcurrencyMode.Multiple
      3. Callbacks with ConcurrencyMode.Reentrant
    9. Callbacks and Synchronization Contexts
      1. Callbacks and the UI Synchronization Context
        1. UI thread callbacks and responsiveness
        2. UI thread callbacks and concurrency management
      2. Callback Custom Synchronization Contexts
        1. Callback thread affinity
    10. Asynchronous Calls
      1. Requirements for an Asynchronous Mechanism
      2. Proxy-Based Asynchronous Calls
      3. Asynchronous Invocation
        1. The IAsyncResult interface
        2. Asynchronous calls and transport sessions
      4. Polling or Waiting for Completion
      5. Completion Callbacks
        1. Completion callbacks and thread safety
        2. Passing state information
        3. Completion callback synchronization context
      6. One-Way Asynchronous Operations
      7. Asynchronous Error Handling
        1. Asynchronous calls and timeouts
        2. Cleaning up after End<Operation>( )
      8. Asynchronous Calls and Transactions
      9. Synchronous Versus Asynchronous Calls
  14. 9. Queued Services
    1. Disconnected Services and Clients
    2. Queued Calls
      1. Queued Calls Architecture
      2. Queued Contracts
      3. Configuration and Setup
        1. Workgroup installation and security
        2. Creating the queue
        3. Queue purging
        4. Queues, services, and endpoints
        5. Exposing metadata
        6. WAS hosting
    3. Transactions
      1. Delivery and Playback
        1. The delivery transaction
        2. The playback transaction
      2. Service Transaction Configuration
        1. Participating in the playback transaction
        2. Ignoring the playback transaction
        3. Using a separate transaction
      3. Nontransactional Queues
    4. Instance Management
      1. Per-Call Queued Services
        1. Nontransactional clients
        2. Transactional clients
        3. Per-call processing
      2. Sessionful Queued Services
        1. Clients and transactions
        2. Services and transactions
      3. Singleton Service
        1. Calls and order
    5. Concurrency Management
      1. Throttling
    6. Delivery Failures
      1. The Dead-Letter Queue
      2. Time to Live
      3. Configuring the Dead-Letter Queue
        1. Custom DLQ verification
      4. Processing the Dead-Letter Queue
        1. Defining the DLQ service
        2. Failure properties
        3. Implementing a DLQ service
    7. Playback Failures
      1. Poison Messages
      2. Poison Message Handling in MSMQ 4.0
        1. Retry batches
        2. ReceiveErrorHandling.Fault
        3. ReceiveErrorHandling.Drop
        4. ReceiveErrorHandling.Reject
        5. ReceiveErrorHandling.Move
        6. Configuration sample
        7. Poison message service
      3. Poison Message Handling in MSMQ 3.0
    8. Queued Versus Connected Calls
      1. Requiring Queuing
    9. The Response Service
      1. Designing a Response Service Contract
        1. Response address and method ID
        2. The ResponseContext class
      2. Client-Side Programming
        1. Using ResponseClientBase<T>
      3. Queued Service-Side Programming
      4. Response Service-Side Programming
      5. Transactions
        1. Using a new transaction
        2. Response service and transactions
    10. The HTTP Bridge
      1. Designing the Bridge
      2. Transaction Configuration
      3. Service-Side Configuration
      4. Client-Side Configuration
  15. 10. Security
    1. Authentication
    2. Authorization
    3. Transfer Security
      1. Transfer Security Modes
        1. None transfer security mode
        2. Transport transfer security mode
        3. Message transfer security mode
        4. Mixed transfer security mode
        5. Both transfer security mode
      2. Transfer Security Mode Configuration
        1. Specific binding configurations
      3. Transport Security and Credentials
      4. Message Security and Credentials
    4. Identity Management
    5. Overall Policy
    6. Scenario-Driven Approach
    7. Intranet Application Scenario
      1. Securing the Intranet Bindings
        1. Transport security protection level
        2. NetTcpBinding configuration
        3. NetNamedPipeBinding configuration
        4. NetMsmqBinding configuration
      2. Constraining Message Protection
      3. Authentication
        1. Providing alternative Windows credentials
      4. Identities
        1. The IIdentity interface
        2. Working with WindowsIdentity
      5. The Security Call Context
      6. Impersonation
        1. Manual impersonation
        2. Declarative impersonation
        3. Impersonating all operations
        4. Restricting impersonation
        5. Avoiding impersonation
      7. Authorization
        1. The security principal
        2. Selecting an authorization mode
        3. Declarative role-based security
        4. Programmatic role-based security
      8. Identity Management
      9. Callbacks
    8. Internet Application Scenario
      1. Securing the Internet Bindings
        1. WSHttpBinding configuration
        2. WSDualHttpBinding configuration
      2. Message Protection
        1. Configuring the host certificate
        2. Using the host certificate
        3. Service certificate validation
        4. Working with a test certificate
      3. Authentication
      4. Using Windows Credentials
        1. Authorization
        2. Identity management
      5. Using the ASP.NET Providers
        1. The credentials providers
        2. Credentials administration
        3. Shortcomings of Visual Studio 2008
        4. Credentials Manager
        5. Authentication
        6. Authorization
        7. Declarative role-based security
      6. Identity Management
        1. Impersonation
      7. Callbacks
    9. Business-to-Business Application Scenario
      1. Securing the Business-to-Business Bindings
      2. Authentication
      3. Authorization
      4. Identity Management
        1. Impersonation
      5. Callbacks
      6. Host Security Configuration
    10. Anonymous Application Scenario
      1. Securing the Anonymous Bindings
      2. Authentication
      3. Authorization
      4. Identity Management
        1. Impersonation
      5. Callbacks
    11. No Security Scenario
      1. Unsecuring the Bindings
      2. Authentication
      3. Authorization
      4. Identity Management
        1. Impersonation
      5. Callbacks
    12. Scenarios Summary
    13. Declarative Security Framework
      1. The SecurityBehaviorAttribute
        1. Configuring an intranet service
        2. Configuring an Internet service
        3. Configuring a business-to-business service
        4. Configuring an anonymous service
        5. Configuring a no-security service
        6. Implementing the SecurityBehavior attribute
      2. Host-Side Declarative Security
      3. Client-Side Declarative Security
        1. Implementing SecurityHelper
        2. The SecureClientBase<T> class
        3. Secure channel factory
        4. Duplex clients and declarative security
        5. Extensions for the duplex factory
    14. Security Auditing
      1. Configuring Security Audits
      2. Declarative Security Auditing
  16. A. Introduction to Service-Orientation
    1. A Brief History of Software Engineering
      1. Object-Orientation
      2. Component-Orientation
        1. Off-the-shelf plumbing
    2. Service-Orientation
      1. Benefits of Service-Orientation
      2. Service-Oriented Applications
    3. Tenets and Principles
      1. Practical Principles
      2. Optional Principles
    4. What's Next?
      1. A Service-Oriented Platform
        1. Every class as a service
  17. B. Headers and Contexts
    1. Message Headers
      1. Client-Side Header Interaction
      2. Service-Side Header Interaction
      3. Encapsulating the Headers
        1. The GenericContext<T> helper class
      4. Streamlining the Client
        1. The HeaderClientBase<T,H> proxy class
    2. Context Bindings
      1. Client-Side Context Binding Interaction
      2. Service-Side Context Binding Interaction
      3. Streamlining the Client
      4. Streamlining the Service
      5. Creating a Custom Context Binding
        1. Implementing NetNamedPipeContextBinding
  18. C. Publish-Subscribe Service
    1. The Publish-Subscribe Design Pattern
      1. Subscriber Types
    2. The Publish-Subscribe Framework
      1. Managing Transient Subscriptions
      2. Managing Persistent Subscribers
      3. Event Publishing
      4. Administering Persistent Subscribers
        1. Singleton subscriber
      5. Queued Publishers and Subscribers
        1. Queued publisher
        2. Queued subscriber
  19. D. Code-Access Security
    1. Code-Access Support in .NET 3.5
    2. Partially Trusted Clients
      1. Client-Side Demands
        1. Suppressing demands with PartialTrustClientBase<T>
        2. Raw WCF demands with PartialTrustClientBase<T>
        3. Structured demands with PartialTrustClientBase<T>
        4. Analyzing the demands of PartialTrustClientBase<T>.Invoke( )
        5. Implementing client-side structured demands
    3. Partially Trusted Services
      1. AppDomainHost
        1. Implementing AppDomainHost
    4. Partially Trusted Hosts
      1. Structured Host-Side Security Demands
        1. Implementing structured host demands
        2. Additional aspects of AppDomainHost
  20. E. Generic Interceptor
    1. Intercepting Service Operations
      1. The Generic Invoker
      2. Installing the Interceptor
    2. Intercepting Client Calls
    3. The Trace Interceptors
    4. Identity Stack Propagation
      1. Security Call Stack Interceptor
  21. F. WCF Coding Standard
    1. General Design Guidelines
    2. Essentials
    3. Service Contracts
    4. Data Contracts
    5. Instance Management
    6. Operations and Calls
    7. Faults
    8. Transactions
    9. Concurrency Management
    10. Queued Services
    11. Security
  22. G. ServiceModelEx Catalog
    1. CollectionExtensions
    2. ArrayExtensions
    3. AppDomainHost
    4. InProcFactory
    5. ServiceHost<T>
    6. MetadataHelper
    7. DataContractSerializer<T>
    8. DataTableHelper
    9. ServiceThrottleHelper
    10. IInstanceStore<ID,T>
    11. FileInstanceStore<ID,T>, FilePersistenceProvider, FilePersistenceProviderFactory
    12. MemoryProvider, MemoryProviderFactory
    13. TransactionalMemoryStore<ID,T>, TransactionalMemoryProvider, TransactionalMemoryProviderFactory
    14. TransactionalInstanceStore<ID,T>, TransactionalInstanceProvider, TransactionalInstanceProviderFactory
    15. InstanceContext<T>, DuplexClientBase<T,C>, DuplexChannelFactory<T,C>
    16. WsDualProxyHelperCallbackBaseAddressBehaviorAttribute
    17. DebugHelper
    18. ErrorHandlerHelper
    19. ErrorHandlerBehaviorAttribute, CallbackErrorHandlerBehaviorAttribute
    20. ILogbookManager, LogbookManagerClient, LogbookManager
    21. BindingRequirementAttribute
    22. ResourceManager, TransactionalLock
    23. Transactional<T>
    24. TransactionalCollection<C,T>
    25. TransactionalArray<T>, TransactionalDictionary<K,T>, TransactionalLinkedList<T>, TransactionalList<T>, TransactionalQueue<T>, TransactionalSortedDictionary<K,T>, TransactionalSortedList<K,T>, TransactionalStack<T>
    26. TransactionalBehaviorAttribute
    27. FormHost<F>
    28. SafeButton, SafeLabel, SafeListBox, SafeProgressBar, SafeStatusBar, SafeTextBox, SafeTrackBar
    29. ThreadPoolSynchronizer, ThreadPoolBehaviorAttribute, CallbackThreadPoolBehaviorAttribute, ThreadPoolHelper
    30. AffinitySynchronizer, ThreadAffinityBehaviorAttribute, CallbackThreadAffinityBehaviorAttribute, HostThreadAffinity
    31. PrioritySynchronizer, PriorityClientBase<T>, PriorityContext, PriorityCallsBehaviorAttribute
    32. QueuedServiceHelper
    33. ResponseClientBase<T>, ResponseScope<T>, ResponseContext
    34. CredentialsManager, AspNetSqlProviderService
    35. SecureClientBase<T>, SecureDuplexClientBase<T,C>, SecurityBehaviorAttribute, SecurityHelper, ServiceSecurity
    36. HeaderClientBase<T,H>, GenericContext<T>
    37. ContextClientBase<T>, ContextManager
    38. NetNamedPipeContextBinding, NetNamedPipeContextBindingElement, NetNamedPipeContextBindingCollectionElement
    39. PersistentSubscriptionServiceClient, IPersistentSubscriptionService, ISubscriptionService, PersistentSubscription, PublishService<T>, SubscriptionManager<T>, PersistentSubscriptionManager
    40. PartialTrustClientBase<T>, PartialTrustDuplexClientBase<T,C>, CodeAccessSecurityHelper
    41. GenericInvoker, OperationInterceptorBehaviorAttribute, ServiceInterceptorBehaviorAttribute
    42. InterceptorClientBase<T>
    43. SecurityCallFrame, SecurityCallStack, SecurityCallStackContext, SecurityCallStackClientBase<T>, SecurityCallStackInterceptor, OperationSecurityCallStackAttribute, SecurityCallStackBehaviorAttribute
  23. Index
  24. About the Author
  25. Colophon
  26. Copyright