WCF Scenarios Map

image The Microsoft WCF (Windows Communication Foundation) scenarios map is a consolidated and shared view of the common scenarios and tasks around developing WCF services. You will find Getting Started and Architecture scenarios first, followed by other common areas. Scenarios in each group should represent common tasks developers would face.

Your call to action here is simply scan the WCf Scenarios Map below and either share your scenarios in the comments or email your scenarios to me at FeedbackAndThoughts at live.com.  Be sure to share your scenarios in the form of “how to blah, blah, blah …” – this makes it much easier to act on and update the map.

For a quick review of what a good Scenarios Map looks like, see my related post, 5 Keys to Effective Scenario Maps.

Categories

  • Getting Started
  • Architecture and Design
  •  Auditing and logging
  • Authentication
  • Authorization
  • Cryptography
  • Data Binding
  • Deployment Considerations
  • Exception Management
  • General
  • Globalization/Localization
  • Impersonation and Delegation
  • Message Security
  • Performance and Scalability
  • Proxy
  • Sensitive Data
  • Service Interface
  • Session Management
  • Silverlight
  • Transactions
  • Transport Security
  • Unit Testing
  • Validation
  • WCF Data Services
  • WCF RIA Services

WCF Scenarios Map 

Categories

Items

Getting Started

  • How to build a WCF service with a RESTful interface.
  • How to build a WCF service with a SOAP interface.
  • How to build a public facing WCF service.
  • How to build a WCF service with authenticated access control.

Architecture and Design

  • How to build a WCF service that supports federated security architectures through the wsFederationHttpBinding.
  • How to build a WCF service that implements the List-Based Publish-Subscribe design pattern.
  • How to implement a custom peer resolver with a WCF service.
  • How to use the Peer Channel to implement multiparty chat.

Auditing and Logging

  • How to configure service to enable logging with filters
  • How to configure service to enable transport level logging
  • How to configure service to enable message level logging
  • How to configure service to enable authentication auditing
  • How to configure service to enable authorization auditing
  • How to configure service to enable tracing with different levels of information
  • How to configure service to enable WMI provider
  • View log and trace files for auditing purposes
  • Enable performance counters to monitor denial of service conditions

Authentication

  • How to configure service with issue token authentication
  • How to configure service with certificate authentication
  • How to configure service with NTLM authentication
  • How to configure service with basic authentication
  • How to configure service with digest authentication
  • How to configure service with windows authentication
  • How to configure service with username/password authentication
  • How to configure service with no credentials
  • How to pass service certificate via secure session negotiation
  • How to pass NTLM credentials via secure session negotiation
  • How to implement custom credential validation

Authorization

  • How to configure service to use a custom authorization provider
  • How to configure service to use a Windows provider to authorize users
  • How to configure service to use an ASP.NET role provider
  • How to configure service to use custom security policies
  • How to mark an operation contract with security demands attribute
  • How to perform authorization based on a programmatically verified claim

Cryptography

  • Implement custom binding with cryptographic algorithms for encrypting/signing messages
  • Implement custom binding to sign message without encryption
  • Implement custom binding to encrypt message without signing.

Data Binding

  • How to bind to data returned by a WCF service in a Web Forms application.
  • How to bind to data returned by a WCF service in a Windows Forms client application.
  • How to bind to data returned by a WCF service in a WPF client application.

Deployment Considerations

  • How to host service in IIS for HTTP(s) communication
  • How to configure certificate on a client local store for message encryption and authentication
  • How to host service in Windows Activation server (WAS) for TCP communication
  • How to host service in Windows Activation server (WAS) for HTTP(s) communication
  • How to self-host service in windows service for HTTP(s) communication
  • How to self-host service in windows service for TCP communication
  • How to host service with least privilege account
  • How to host service in medium trust
  • How to configure certificate in IIS to enable SSL in a virtual directory hosting service
  • How to configure certificate to enable SSL in a self hosted service
  • How to configure partner public key certificates in local store for authorization
  • How to configure IIS for authentication
  • How to store encryption keys in a secure location
  • How to encrypt all or part of a web configuration file
  • How to map certificates with accounts in active directory
  • How to configure Active Directory groups and accounts for role-based authorization checks
  • How to configure Cardspace accounts
  • How to configure a Secure Token Service (STS)
  • How to configure MSMQ accounts and security

Discovery and Client Access

  • How to build a WCF service that supports discovery through UDDI V2.
  • How to add a WCF service as a “web reference” to a Visual Studio project.
  • How to implement a WCF client that performs basic operations with a UDDI V2 service.

Exception Management

  • How to implement a global exception handler
  • How to design service with exceptions handling that will not divulge information to the client
  • How to design fault contracts to allow services to declare known faults for each operation
  • How to enable debugging behavior to allow debug information to be propagated to the client
  • How to design operations to catch exceptions and communicate failures to client
  • How to clients handle exceptions in stateful services

General

  • How to create a service with multiple endpoints.
  • How to create a service with one-way interfaces.

Globalization / Localization

  • How to create a service that can be Globalized/Localized.

Impersonation and Delegation

  • How to configure service to use certificate on the local store to allow client to authenticate
  • How to Flow identities in message from intermediary for authentication/delegation/auditing
  • How to configure service to run under security principal name to allow client to authenticate
  • How to configure service to allow impersonation of clients with windows credentials
  • How to set operation contract attribute to allow impersonation when enabled via service behavior
  • How to configure impersonation to retrieve identities from security context

Message Security

  • How to build a service that sends credentials over https
  • How to build a service that sends sensitive data in message over https
  • How to configure message security to support partial signing of a message
  • How to configure message security to support partial encryption of a message
  • How to build a service that sends credentials over http
  • How to build a service that sends credentials over TCP
  • How to build a service that sends sensitive data in message over http
  • How to build a service that sends sensitive data in message over TCP
  • How to configure message security to support communication via intermediaries

Performance and Scalability

  • How to implement a service that provides basic routing and load balancing functionality.
  • How to optimize performance in a transactional WCF service.

Proxy

  • How to create a proxy using SvcUtil.exe.
  • How to generate a proxy from service metadata over HTTP(S)
  • How to create a service where client is configured to use certificate for authentication and message security.
  • How to generate proxy from service metadata over TCP
  • Service operations invocation administratively - Client authenticates with service providing credentials
  • Service operations invocation administratively - Client calls service anonymously
  • Service operations invocation programmatically - Client authenticates with service providing credentials
  • Service operations invocation programmatically - Client calls service anonymously
  • Client is invoked via client factory to improve performance
  • How to generate proxy from service metadata over MSMQ

Sensitive Data

  • How to configure service for message encryption to protect message confidentiality and integrity with certificates
  • How to configure service to use transport security
  • How to design service to protect parts of the message with partial encryption
  • How to configure service to secure metadata in an endpoint to be consumed by service clients
  • How to configure service to change the default message encryption algorithm
  • How to configure service for message encryption to protect message confidentiality and integrity with Kerberos tickets

Service Interface

  • How to build a WCF service with a RESTful interface.
  • How to build a WCF service that communicates POX (Plain-old XML) messages.

Session Management

  • How to configure message throttling to avoid denial of service attacks
  • How to design services per session mode
  • How to configure memory limits to avoid denial of service attacks
  • How to configure service for reliable messaging with reliable session and ordering of messages
  • How to implement structured exception handling and state management to avoid state corruption

Silverlight

  • How to access a WCF service from a hosted Silverlight application.
  • How to access a WCF Data Services interface from Silverlight.
  • How to access a WCF service from an out-of-browser Silverlight application.

Transactions

  • How to support transactions in a WCF service.
  • How to support 2-phase commit transactions in a WCF service.
  • How to support nested transactions in a WCF service.

Transport Security

  • How to use transport security to send credentials over https
  • How to use transport security to send sensitive data over https
  • How to configure transport security for end point communication with no intermediaries
  • How to configure transport security for improved performance over message security

Unit Testing

  • How to unit test WCF services.

Validation

  • How to Validate messages with custom schema inspectors
  • How to Validate messages with custom message inspectors

WCF Data Services

  • How to interface with a WCF Data Service from jQuery, JavaScript and Ajax.
  • How to consume WCF Data Services from an ASP.NET application.
  • How to implement server driven paging in a WCF Data Service.
  • How to support data binding from a WCF Data Service.
  • How to consume JSON data from a WCF Data Service in an ASP.NET application.
  • How to consume JSON data from a WCF Data Service in a Silverlight application.
  • How to implement Business Logic in a WCF Data Service using Interceptors.
  • How to filter WCF Data Services data using service operations.
  • How to consume AtomPub data from a WCF Data Service in an ASP.NET Application.
  • How to consume AtomPub data from a WCF Data Service in a WPF Application.
  • How to consume AtomPub data from a WCF Data Service in a Windows Forms Application.
  • How to consume AtomPub data from a WCF Data Service in a Silverlight Application.

WCF RIA Services

  • How to use a WCF RIA service to access data from Entity Framework.
  • How to use a WCF RIA service to access RESTful interfaces.
  • How to use a WCF RIA service to return Data Transfer Objects (DTO’s).
  • How to use a WCF RIA service to access data from another WCF service.
  • How to access LinqToSql data from a WCF RIA service.
  • How to access ADO.NET DataSet from a WCF RIA service.
  • How to use a WPF client application to access WCF RIA services through ADO.NET Data Services.
  • How to access a WCF RIA service from an ASP.NET MVC application.
  • How to access a WCF RIA service from a Silverlight application.

Contributors and Reviewers

  • External Contributors / Reviewers – Adam Grocholski, Andy Eunson, Dean Meyer, Kevin Lam, Terrance Snyder, Will Clevenger
  • Microsoft Contributors / Reviewers - Carlos Farre, Tim Walton, Wade Mascia

My Related Posts