Design and Build Maintainable Service-Oriented Systems
1234567

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 guide provides unique insight, rather than documentation, to help you learn the topics and skills you need for building maintainable, extensible, and reusable WCF-based applications.

Authors Juval Löwy—one of the world’s top .NET experts—and Michael Montgomery have revised this edition to include the productivity-enhancing features of .NET Framework 4.6, along with the latest WCF ideas and techniques. By teaching you the why and the how of WCF programming, this book will help you master WCF and make you a better software engineer.

  • Learn WCF’s architecture and essential building blocks, including key concepts such as reliability and transport sessions
  • Use built-in features such as service contracts, instance and concurrency management, transactions, queued services, and security
  • Increase the quality of your WCF services by using design options, tips, and best practices in Löwy’s ServiceModelEx framework
  • Understand the rationale behind particular design decisions, and rarely understood aspects of WCF development
  • Learn why Azure Service Fabric is the killer app for modern DevOps

Juval Lowy

Juval Lowy is a software architect and the principal of IDesign, specializing in .NET architecture consulting and advanced training. Juval is Microsoft’s Regional Director for the Silicon Valley, working with Microsoft on helping the industry adopt .NET 4.0. He participates in the Microsoft internal design reviews for future versions of .NET and related technologies. Juval has published numerous articles, regarding almost every aspect of .NET development, and is a frequent presenter at development conferences. Microsoft recognized Juval as a Software Legend, one of the world's top .NET experts and industry leaders.

Michael Montgomery

Michael ‘Monty’ Montgomery is a master architect with IDesign, focusing on distributed systems, enterprise system architecture, SOA and mentorship. Monty has over 20 years of software-engineering experience across a broad spectrum of market segments including real-time control systems, scientific applications, and healthcare. Monty’s passion is energizing organizations to successfully deliver sustainable innovation through the expert application of modern process, practice, and technology. Through this pursuit, Monty has operated as the chief software architect of a large corporation, managed, mentored and trained countless teams and led several effective architecture revolutions. Monty offers unique insight and experience with IDesign’s original methodologies and techniques and has successfully employed them with numerous systems. Monty has written many articles on architecture sharing his unique From the Field perspective. Monty speaks regularly at .NET, IASA, and industry related events around the US.

  1. Chapter 1 - WCF Essentials

    1. What Is WCF?

    2. Services

    3. Addresses

    4. Contracts

    5. Hosting

    6. Bindings

    7. Endpoints

    8. Metadata Exchange

    9. More on Behavior Configuration

    10. Client-Side Programming

    11. Programmatic Versus Administrative Configuration

    12. WCF Architecture

    13. Working with Channels

    14. Transport-Level Sessions

    15. Reliability

  2. Chapter 2 - Service Contracts

    1. Operation Overloading

    2. Contract Inheritance

    3. Service Contract Factoring and Design

    4. Contract Queries

  3. Chapter 3 - Data Contracts

    1. Serialization

    2. Data Contract Attributes

    3. Data Contract Hierarchy

    4. Data Contract Equivalence

    5. Versioning

    6. Data Contract Factoring and Design

    7. Enumerations

    8. Delegates and Data Contracts

    9. Generics

    10. Collections

  4. Chapter 4 - Instance Management

    1. Behaviors

    2. Per-Call Services

    3. Per-Session Services

    4. Singleton Service

    5. Demarcating Operations

    6. Instance Deactivation

    7. Durable Services

    8. Throttling

  5. Chapter 5 - Operations

    1. Request-Reply Operations

    2. One-Way Operations

    3. Callback Operations

    4. Events

    5. Streaming

  6. Chapter 6 - Faults

    1. Error Isolation and Decoupling

    2. Fault Propagation

    3. Error-Handling Extensions

  7. Chapter 7 - Transactions

    1. The Recovery Challenge

    2. Transactions

    3. Transaction Propagation

    4. Transaction Protocols and Managers

    5. The Transaction Class

    6. Transactional Service Programming

    7. Explicit Transaction Programming

    8. Service State Management

    9. Instance Management and Transactions

    10. Callbacks

  8. Chapter 8 - Concurrency Management

    1. Instance Management and Concurrency

    2. Service Concurrency Modes

    3. Instances and Concurrent Access

    4. Resources and Services

    5. Resource Synchronization Context

    6. Service Synchronization Context

    7. Custom Service Synchronization Contexts

    8. Callbacks and Client Safety

    9. Callbacks and Synchronization Contexts

    10. Asynchronous Calls

  9. Chapter 9 - Queued Services

    1. Disconnected Services and Clients

    2. Queued Calls

    3. Transactions

    4. Instance Management

    5. Concurrency Management

    6. Delivery Failures

    7. Playback Failures

    8. Queued Versus Connected Calls

    9. The Response Service

    10. The HTTP Bridge

  10. Chapter 10 - Security

    1. Authentication

    2. Authorization

    3. Transfer Security

    4. Identity Management

    5. Overall Policy

    6. Scenario-Driven Approach

    7. Intranet Application Scenario

    8. Internet Application Scenario

    9. Business-to-Business Application Scenario

    10. Anonymous Application Scenario

    11. No Security Scenario

    12. Scenarios Summary

    13. Declarative Security Framework

    14. Security Auditing

  11. Chapter 11 - The Azure Service Fabric

    1. Why Azure Service Fabric

    2. Preparing for the Service Fabric

    3. Configuring the Service Fabric

    4. Programming the Service Fabric

    5. Modeling the Service Fabric

  12. Appendix - Introduction to Service Orientation

    1. A Brief History of Software Engineering

    2. Service Orientation

    3. Tenets and Principles

    4. What’s Next?

  13. Appendix - Headers and Contexts

    1. Message Headers

    2. Context Bindings

  14. Appendix - Discovery

    1. Address Discovery

    2. Announcements

    3. TCP-Based Discovery

    4. TCP-Based Announcements

  15. Appendix - Publish-Subscribe Service

    1. The Publish-Subscribe Design Pattern

    2. The Publish-Subscribe Framework

    3. Publish-Subscribe with Discovery

  16. Appendix - Generic Interceptor

    1. Intercepting Service Operations

    2. Intercepting Client Calls

    3. The Trace Interceptors

    4. Identity Stack Propagation

  17. Appendix - WCF Coding Standard

    1. General Design Guidelines

    2. Essentials

    3. Configuration

    4. Addressing

    5. Service Contracts

    6. Data Contracts

    7. Instance Management

    8. Operations and Calls

    9. Faults

    10. Transactions

    11. Concurrency Management

    12. Queued Services

    13. Security

  18. Appendix - ServiceModelEx Catalog

    1. CollectionExtensions

    2. ArrayExtensions

    3. InProcFactory<S,I>

    4. WcfWrapper<S,I>

    5. ServiceHost

    6. MetadataHelper

    7. DataContractSerializer

    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, DuplexClientBase<T,C>, DuplexChannelFactory<T,C>

    16. DebugHelper

    17. ErrorHandlerHelper

    18. ErrorHandlerBehaviorAttribute, CallbackErrorHandlerBehaviorAttribute

    19. ILogbookManager, LogbookManagerClient, LogbookManager

    20. BindingRequirementAttribute

    21. ResourceManager, TransactionalLock

    22. Transactional

    23. TransactionalCollection<C,T>

    24. TransactionalArray, TransactionalDictionary<K,T>, TransactionalLinkedList, TransactionalList, TransactionalQueue, TransactionalSortedDictionary<K,T>, TransactionalSortedList<K,T>, TransactionalStack

    25. TransactionalBehaviorAttribute

    26. OneWayClientBaseAsync

    27. FormHost

    28. SafeButton, SafeLabel, SafeListBox, SafeProgressBar, SafeStatusBar, SafeTextBox, SafeTrackBar

    29. ThreadPoolSynchronizer, ThreadPoolBehaviorAttribute, CallbackThreadPoolBehaviorAttribute, ThreadPoolHelper

    30. AffinitySynchronizer, ThreadAffinityBehaviorAttribute, CallbackThreadAffinityBehaviorAttribute, HostThreadAffinity

    31. PrioritySynchronizer, PriorityClientBase, PriorityContext, PriorityCallsBehaviorAttribute

    32. AsyncContextSynchronizer, AsyncContextBehaviorAttribute, HostAsyncContextExtensions

    33. QueuedServiceHelper

    34. ClientResponseBase, ServiceResponseBase, ResponseContext

    35. CredentialsManager, AspNetSqlProviderService

    36. SecureClientBase, SecureDuplexClientBase<T,C>, SecurityBehaviorAttribute, SecurityHelper, ServiceSecurity

    37. HeaderClientBase<T,H>, HeaderChannelFactory<T,H>, GenericContext

    38. ContextClientBase, ContextManager

    39. NetNamedPipeContextBinding, NetNamedPipeContextBindingElement, NetNamedPipeContextBindingCollectionElement

    40. AsyncContext, AsyncContextScope

    41. DiscoveryHelper

    42. DiscoveryFactory

    43. AddressesContainer

    44. AnnouncementSink

    45. DiscoveredServices

    46. IDiscovery, IDiscoveryCallback, IAnnouncements, DiscoveryService, DiscoveryFactory, DuplexDiscoveryClient, IDiscoverySubscription, IAnnouncementsSubscription, DuplexAnnouncementSink

    47. PersistentSubscriptionServiceClient, IPersistentSubscriptionService, ISubscriptionService, PersistentSubscription, PublishService, SubscriptionManager, PersistentSubscriptionManager

    48. DiscoveryPublishService

    49. GenericInvoker, OperationInterceptorBehaviorAttribute, ServiceInterceptorBehaviorAttribute

    50. InterceptorClientBase, InterceptorChannelFactory

    51. SecurityCallFrame, SecurityCallStack, SecurityCallStackContext, SecurityCallStackClientBase, SecurityCallStackInterceptor, OperationSecurityCallStackAttribute, SecurityCallStackBehaviorAttribute

    52. FabricRuntime, ActorRegistration

    53. ApplicationManifestAttribute

    54. ServiceTestBase

    55. IActor, ActorId, ActorBase, Actor, Actor, ActorProxy, ActorGarbageCollectionAttribute, ReadonlyAttribute, CompletesActorInstanceAttribute, VolatileActorStateProviderAttribute, KvsActorStateProviderAttribute, ReliableDictionaryActorStateProviderAttribute

    56. IService, StatelessServiceBase, ServiceProxy, ServicePartitionClient, WcfCommunicationClient, WcfCommunicationClientFactory, ServiceFabricClientBase, ServicePartitionResolver