Windows Communication Foundation (WCF) is SOA for MS and Nicholas Allen tells developers how to make it work. Allen - a program manager at Microsoft working on BizTalk Server, Windows Communication Foundation and other projects for the .NET Framework - provides some valuable tips and tricks for getting the most out of your WCF development efforts. Here are some highlights of some of his most popular blogs.
If you have moved over to Windows Vista, you might have run into problems running HTTP services. In Configuring HTTP for Windows Vista, Allen explains that the problems may occur because many developers are not running with administrator privileges by default, as they were on earlier platforms. In Windows 2003, the administrator could just add other users in the httpcfg.exe tool. On Vista, you are going to need to learn the intricacies of the netsh.exe tool to do the same thing.
In "Inside the Standard Bindings," Allen covers how to set up the most common bindings in your WCF apps. NetTCP binding is the most popular choice for communicating over an Internet. It is faster than HTTP, but only works for WCF. BasicHTTP allows connectivity with other applications via SOAP and HTTP protocols.
Poison messages are permanently unprocessable, which can lock an application in an infinite loop, sucking the life out of your application. In MSMQ and Poison Messages, Allen explains the primary strategy MSMQ uses for poison messages. The application needs to set a threshold of attempts for determining if a message is not getting processed. In MSMQ 3 these got moved to a dead letter box that had to be manually cleared. MSMQ 4 adds another step to retry the queue without burdening the administrator or the application.
In Making Sense of Transport Quotas, Allen explains how transport quotas prevent Denial of Service (DoS) attacks by setting a hard limit on network usage. In general, the developer does not need to touch these unless an installation is running out of resources or connections are being limited despite resource availability. The three main types of quotas are one) Timeouts; two) Memory allocation limits; and three) Collection size limits that bound indirectly allocated resource consumption.
In this How to Enable Streaming blog posting, Allen describes how to scale up your application and how turning on streaming can reduce the need for large memory buffers, particularly for larger messages. By default, this is turned off and all messages are sent using buffered transfers. But there are restrictions imposed by streaming such as one) A single input/and or output parameter; two) No support for Reliable Messaging, Transaction and SOAP security; and three) SOAP headers are always buffered.
Network Address Translators and Firewalls can get in the way of the direct path between the client and server. Allen spells out in great detail some of the different issues and fixes for integrating WCF communications through an organization's infrastructure. NAT allows multiple machines to share a single IP address. This is great for sharing a DSL modem in an office, but makes it more difficult to deliver WCF messages to the right client. Firewalls examine packets and discard what they don't like. They could prove problematic when an employee is trying to get work done from home. On the NAT side, one solution is Teredo, IPV6 translation technology.
When a developer turns off anonymous access to improve security, Allen points out in Preventing Anonymous Access that you must change it in both the IIS and service configuration settings. This can be tricky because some calls, such as TransportCredentialOnly are not supported by every binding.