InfoQ

News

Windows Communication Foundation: Application Deployment Scenarios

Posted by Boris Lublinsky on May 25, 2008 05:15 PM

Community
Architecture,
.NET,
SOA
Topics
Design ,
Web 2.0 ,
.NET Framework ,
Web Services
Tags
Windows Workflow Foundation ,
Microsoft ,
WCF ,
Web 2.0 ,
Best Practices

In November of 2006 .NET 3.0 has introduced a new Web Service implementation platform (WCF) simplifying the design, implementation and deployment of services with essential plumbing for scalability, performance, security, reliable message delivery, transactions, multithreading, asynchronous messaging and much more. In November 2007, release of .NET 3.5 introduced additional WCF features, including support for web programming models such as Plain Old XML (POX), Representational State Transfer (REST), JavaScript Object Notation (JSON) and syndication feeds such as Really Simple Syndication (RSS) and ATOM; Support durable, long running services; Seamless integration between WCF and Windows Workflows (WF) allowing for services to be written as workflows and workflows to invoke services, etc.

With this multiplicity of choices, many .NET developers often do not know which features to choose for their implementations what are the best implementation/deployment practices should be followed in each case. An excellent whitepaper by Michele Leroux Bustamante from IDesign provides an excellent summary on these multiple options. It is build around 5 common scenarios:

  • Enterprise Web Services
  • Web 2.0 services
  • Intranet Applications
  • Queued Messages
  • Workflow Service

The whitepaper summarizes WCF features usage and implementation characteristics of each scenario, a summary of important development considerations, and answers to typical questions related to each scenario.

For the case of Enterprise Web Services whitepaper describes support for web services based on SOAP protocol and additional WS* standards. It includes extensive discussion on security implementations and such new features as Secure sessions, Reliable Sessions and Transactions. It also describes when these advance features should be used along with protocol and deployment options for them.

Web 2.0 services section starts with the detailed description of messaging protocols, prevalent in Web 2.0 implementations, including POX, REST, JSON, RSS and Atom and their support in WCF. It then describes deployment options, security support and client programming models for these protocols.

For the classic client-server applications and distribution of services behind the firewall a whitepaper discusses details of WCF support of binary SOAP messaging over TCP/IP and Named Pipes. Similar to the previous section this one provides a wealth of information on security and deployment option for client-server applications, using WCF.

Asynchronous messaging section describes WCF usage for implementation of guaranteed message delivery, asynchronous calls, disconnected calls and publish and subscribe patterns implementation. It includes recommendations on usage of the binary SOAP over Microsoft’s MSMQ transport, discusses recommended queues topology and security and deployment options for MSMQ transport.

Finally, Workflow section describes usage of WF for coordinating service calls using WF runtime and exposing a workflow as a higher level service. A whitepaper also introduces a notion of WF persistence as a way for implementation of long running (durable) stateful services.

The whitepaper is a very useful reference for everyone who is trying to navigate in an extremely rich and powerful WCF framework and is seeking a practical advice on a WCF usage for solving their specific problems.

Proofreading? by Andrew Badera Posted May 26, 2008 4:45 AM
cross-platform, cross-language integration with .NET WCF by alexis richardson Posted May 26, 2008 6:19 PM
  1. Back to top

    Proofreading?

    May 26, 2008 4:45 AM by Andrew Badera

    That's something that happens PRIOR to publishing, right?

  2. Back to top

    cross-platform, cross-language integration with .NET WCF

    May 26, 2008 6:19 PM by alexis richardson

    Apologies for the advert, but we have found WCF a good environment to work with for queued applications and other integration scenarios - but using RabbitMQ instead of MSMQ. RabbitMQ is a commercially supported open source messaging product that works across multiple programming languages using AMQP wire level integration. You can download code, and read about user scenarios in the PDF documentation here. Cheers, alexis.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.