Programming WCF Services, 3rd Edition

Book description

Programming WCF Services is the authoritative, bestselling guide to Microsoft's unified platform for developing modern service-oriented applications on Windows. Hailed as the definitive treatment of WCF, this book provides unique insight, rather than documentation, to help you learn the topics and skills you need for building WCF-based applications that are maintainable, extensible, and reusable.

Author Juval Löwy -- one of the world's top .NET experts -- revised this edition to include the newest productivity-enhancing features of .NET Framework 4 and the Azure AppFabric Service Bus, as well as the latest WCF ideas and techniques. By teaching you the why and the how of WCF programming, Programming WCF Services will help you master WCF and make you a better software engineer.

  • Learn about WCF architecture and essential building blocks, including key concepts such as reliability and transport sessions
  • Use built-in features such as service hosting, instance and concurrency management, transactions, disconnected queued calls, security, and discovery
  • Master the Windows Azure AppFabric Service Bus, the most revolutionary piece of the new cloud computing initiative
  • Increase your productivity and the quality of your WCF services by taking advantage of relevant design options, tips, and best practices in Löwy's ServiceModelEx framework
  • Discover the rationale behind particular design decisions, and delve into rarely understood aspects of WCF development

"If you choose to learn WCF, you've chosen well. If you choose to learn with the resource and guidance of Juval Löwy, you've done even better... there are few people alive today who know WCF as well."

--Ron Jacobs, Senior Technical Evangelist for WCF, Microsoft Corporation

Publisher resources

View/Submit Errata

Table of contents

  1. Programming WCF Services
  2. Dedication
  3. A Note Regarding Supplemental Files
  4. Foreword
  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 O’Reilly
    7. Safari® Books Online
    8. Acknowledgments
  6. 1. WCF Essentials
    1. What Is WCF?
    2. Services
      1. Service Execution Boundaries
      2. WCF and Location Transparency
    3. Addresses
      1. TCP Addresses
      2. HTTP Addresses
      3. IPC Addresses
      4. MSMQ Addresses
      5. Service Bus 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 2010
        2. The Web.Config file
      2. Self-Hosting
        1. Using Visual Studio 2010
        2. Self-hosting and base addresses
        3. Advanced hosting features
        4. The ServiceHost<T> class
      3. WAS Hosting
      4. Custom Hosting in IIS/WAS
      5. Windows Server AppFabric
      6. Choosing a Host
    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
        3. Default binding
      2. Programmatic Endpoint Configuration
        1. Binding configuration
      3. Default Endpoints
        1. Protocol mapping
    8. Metadata Exchange
      1. Metadata over HTTP-GET
        1. Enabling metadata exchange administratively
        2. Enabling metadata exchange programmatically
      2. The Metadata Exchange Endpoint
        1. Standard endpoints
        2. Adding MEX endpoints programmatically
        3. Streamlining with ServiceHost<T>
      3. The Metadata Explorer
    9. More on Behavior Configuration
    10. 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
    11. Programmatic Versus Administrative Configuration
    12. WCF Architecture
      1. Host Architecture
    13. Working with Channels
      1. The InProcFactory Class
        1. Implementing InProcFactory<T>
        2. The WcfWrapper
    14. Transport-Level Sessions
      1. Transport Session and Binding
      2. Transport Session Termination
    15. 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. Data Contract Resolvers
        1. Installing the data contract resolver
        2. The generic resolver
        3. Installing the generic resolver
        4. GenericResolver and ServiceHost<T>
        5. Generic resolver attribute
      6. 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. Generics
    9. 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
  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
    4. Events
    5. Streaming
      1. I/O Streams
      2. Streaming and Binding
      3. Streaming and Transport
  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
      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. 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 ClientResponseBase<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. 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 2010
        4. Credentials Manager
        5. Authentication
        6. Authorization
        7. Declarative role-based security
      6. Identity Management
        1. Impersonation
    9. Business-to-Business Application Scenario
      1. Securing the Business-to-Business Bindings
      2. Authentication
      3. Authorization
      4. Identity Management
        1. Impersonation
      5. 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. 11. The Service Bus
    1. What Is a Relay Service?
      1. The Windows Azure AppFabric Service Bus
    2. Programming the Service Bus
      1. Relay Service Address
        1. Extracting the service namespace
      2. The Service Bus Registry
      3. The Service Bus Explorer
    3. The Service Bus Bindings
      1. The TCP Relay Binding
        1. Adding default endpoints
        2. Connection modes
        3. TCP relayed mode
        4. TCP hybrid mode
        5. Duplex callbacks
      2. The WS 2007 Relay Binding
      3. The One-Way Relay Binding
        1. Fire-and-forget semantics
      4. The Event Relay Binding
        1. Events publishing
    4. Cloud as Interceptor
    5. Service Bus Buffers
      1. Buffers Versus Queues
      2. Working with Buffers
        1. The buffer policy
        2. Administering the buffer
        3. Streamlining administration
      3. Sending and Retrieving Messages
      4. Buffered Services
        1. Buffered service host
        2. Buffered client base
      5. Response Service
        1. Client side
        2. Service side
        3. Response service
    6. Service Bus Authentication
      1. Configuring Authentication
      2. Shared Secret Authentication
        1. Providing the credentials on the host side
        2. Providing the credentials on the client side
        3. Providing credentials in config file
      3. No Authentication
      4. Metadata over the Service Bus
        1. Client-side metadata processing
    7. Transfer Security
      1. Transport Security
      2. Message Security
        1. Message security and credentials
      3. TCP Relay Binding and Transfer Security
        1. Anonymous Message security
        2. Message security with credentials
        3. Mixed security
      4. WS Relay Binding and Transfer Security
        1. Message security and Mixed security
      5. One-Way Relay Binding and Transfer Security
        1. Anonymous calls
      6. Bindings and Transfer Modes
      7. Streamlining Transfer Security
        1. Declarative service security
        2. Streamlining the client
  17. 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
  18. 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
  19. C. Discovery
    1. Address Discovery
      1. Service Configuration
        1. Dynamic endpoint addresses
        2. Enabling discovery
      2. Client-Side Steps
      3. Scopes
        1. Assigning scopes
        2. Using scopes
      4. Streamlining Discovery
        1. Discovery cardinality
        2. Single endpoint
        3. Binding discovery
        4. Discovery factory
        5. Creating discoverable host
        6. The Metadata Explorer
      5. Ongoing Discovery
    2. Announcements
      1. Announcing Endpoints
        1. Automatic announcements
      2. Receiving Announcements
      3. Streamlining Announcements
        1. The announcements sink
    3. Service Bus Discovery
      1. Solution Architecture
      2. Discoverable Host
      3. Discovery Client
        1. More client-side helper classes
      4. Announcements
        1. Service-side announcements
        2. Receiving announcements
      5. The Metadata Explorer
  20. D. 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
    3. Publish-Subscribe with the Service Bus
      1. The Event Relay Binding
        1. The ServiceBusEventsHost
        2. The ServiceBusEventsClientBase
    4. Publish-Subscribe with Discovery
      1. The DiscoveryPublishService<T> Class
      2. The Publisher
      3. The Subscriber
      4. More on DiscoveryPublishService<T>
  21. 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
  22. 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
    12. The Service Bus
  23. G. ServiceModelEx Catalog
    1. CollectionExtensions
    2. ArrayExtensions
    3. InProcFactory<S,I>
    4. WcfWrapper<S,I>
    5. ServiceHost<T>
    6. MetadataHelper
    7. DataContractSerializer<T>
    8. GenericResolver, GenericResolverBehaviorAttribute, GenericResolverInstaller
    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. DebugHelper
    17. ErrorHandlerHelper
    18. ErrorHandlerBehaviorAttribute, CallbackErrorHandlerBehaviorAttribute
    19. ILogbookManager, LogbookManagerClient, LogbookManager
    20. BindingRequirementAttribute
    21. ResourceManager, TransactionalLock
    22. Transactional<T>
    23. TransactionalCollection<C,T>
    24. TransactionalArray<T>, TransactionalDictionary<K,T>, TransactionalLinkedList<T>, TransactionalList<T>, TransactionalQueue<T>, TransactionalSortedDictionary<K,T>, TransactionalSortedList<K,T>, TransactionalStack<T>
    25. TransactionalBehaviorAttribute
    26. AsyncOneWayClientBase<T>
    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. ClientResponseBase<T>, ServiceResponseBase<T>, ResponseContext
    34. CredentialsManager, AspNetSqlProviderService
    35. SecureClientBase<T>, SecureDuplexClientBase<T,C>, SecurityBehaviorAttribute, SecurityHelper, ServiceSecurity
    36. IServiceBusProperties
    37. ServiceBusHelper
    38. ServiceBusHost, ServiceBusClientBase<T>, ServiceBusDuplexClientBase<T,C>
    39. DiscoverableServiceHost, IServiceBusDicovery, IServiceBusDiscoveryCallback, ServiceBusDiscoveryClient, ServiceBusDiscoveryFactory, ServiceBusDiscoveryHelper, IServiceBusAnnouncements, ServiceBusAnnouncementSink<T>
    40. OneWayClientBase<T>
    41. BufferedServiceBusHost<T>, BufferedServiceBusClient<T>, BufferedServiceBusChannelFactory<T>
    42. ClientBufferResponseBase<T>, ServiceBufferResponseBase<T>
    43. ServiceBusMetadataHelper
    44. HeaderClientBase<T,H>, HeaderChannelFactory<T,H>, GenericContext<T>
    45. ContextClientBase<T>, ContextManager
    46. NetNamedPipeContextBinding, NetNamedPipeContextBindingElement, NetNamedPipeContextBindingCollectionElement
    47. DiscoveryHelper
    48. DiscoveryFactory
    49. AddressesContainer<T>
    50. AnnouncementSink<T>
    51. DiscoveredServices<T>
    52. PersistentSubscriptionServiceClient, IPersistentSubscriptionService, ISubscriptionService, PersistentSubscription, PublishService<T>, SubscriptionManager<T>, PersistentSubscriptionManager
    53. ServiceBusEventsHost, ServiceBusEventsClientBase<T>
    54. DiscoveryPublishService <T>
    55. GenericInvoker, OperationInterceptorBehaviorAttribute, ServiceInterceptorBehaviorAttribute
    56. InterceptorClientBase<T>, InterceptorChannelFactory<T>
    57. SecurityCallFrame, SecurityCallStack, SecurityCallStackContext, SecurityCallStackClientBase<T>, SecurityCallStackInterceptor, OperationSecurityCallStackAttribute, SecurityCallStackBehaviorAttribute
  24. Index
  25. About the Author
  26. Colophon
  27. Copyright

Product information

  • Title: Programming WCF Services, 3rd Edition
  • Author(s): Juval Lowy
  • Release date: August 2010
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9780596805487