Welcome to MSDN Blogs Sign in | Join | Help

The Future of WCF, Part 2

Having read part 1 will be helpful.

As I mentioned last time, there were two markets in particular that I thought were interesting for web service developers to expand into when using WCF.

The first market was REST and the HTTP application style of web development. Since the initial version of WCF I think that we've made a bit of progress in that direction although we still have quite a ways to go.

Before WCF shipped we managed to slip in a feature late in the development cycle to wash some of the SOAP off of messages: the None MessageVersion. This feature replaced a clumsier system that tried to map HTTP headers around and has turned out to be more generally useful since in non-HTTP systems. I've seen a lot of opportunities since then to make use of MessageVersion.None in a variety of contexts.

During Orcas we also made a large investment relative to the size of the release in making WCF friendlier to the web. Examples include special service hosts to reduce configuration, new bindings and message encoders, attributes for working with HTTP methods, URI templates, and so on. I think that this was a great set of improvements in WCF for web application development but we still have no direct accommodations for the REST architectural style. I hope that the REST starter kit proves out to be an initial down payment in that area. It will take some time and work before those features are ready to be incorporated into the main product. Until then, we should be able to experiment and iterate quite quickly because of the lightweight release format.

The other market that I took interest in was enterprise and application integration. Although many people viewed WCF as being enterprise-focused because of the prominence of the WS-* protocols, those type of protocols represent only one kind of enterprise scenario.

Many of the WS-* protocols make an implicit assumption of trust between the two parties to smoothly and cheaply coordinate work. That is not to say that they take no precautions in protocol or coordination to guard access and resources. However, the design of the protocols necessitates a minimum level of coupling to avoid problematic resource and timeliness issues.

For example, a distributed transaction between two parties requires resource allocations for the transaction state, an optimistic assumption by the transaction initiator that things will be resolved quickly, and a pessimistic assumption by the transaction receiver that the work must be performed soon rather than at the receiver's convenience. When operating in concert with a system that you do not control, some of these assumptions and arrangements may be ill-advised. As a result of these types of issues, many operations that are coordinated between two businesses, or within a sufficiently large business, are conducted in an asynchronous and decoupled fashion.

You'll be seeing a lot of features coming to improve the state of asynchronous and decoupled programming in WCF in future releases. Starting next time I'll talk about some of the ones we've announced in .NET 4.0.

Published Friday, November 14, 2008 5:00 AM by Nicholas Allen
Filed under: ,

Comments

Saturday, November 15, 2008 11:14 AM by Gert-Jan van der Kamp

# re: The Future of WCF, Part 2

Hi Allen,

Some issues we encountered using WCF, maybe they could make into the next release:

1) Support for streaming, so i can send a few million 'rows' over WCF, but start consuming the first one before the last one has been sent, an IEnumerable kind of approach. I've seen examples using POX or REST, but they're kind of hacks, and they're always over HTTP, TCP is many times faster especially with large volumes of data.

2) An easier way to consume webservices from within SqlServer. You can make it work now by loading some 7 assemblies into sql, but you have to do that on the database level. Would it be too hard to be able to reference the .Net 3.0 framework directly from within Sql, so we would only have to load our own (small) assembly on top of what's already installed on the box?

3) Getting the configuration from somewhere else than the local config file. If you deploy a client app somewhere, it would be nice if i could point it to a service or database and get the config from there instead of having to fill out the whole thing. Again, there are samples, but it should be possible to just feed a <servicemodel> node to a ChannelFactory and configure it like that.

WCF has been very good to me so far, but these additions would really help me streamline my everyday use of WCF, what are my chances?

Regards,

Gert-Jan

Wednesday, November 19, 2008 4:42 PM by mohit.raghav

# re: The Future of WCF, Part 2

Hi Allen,

I have response time trouble with WCF. as such great plumbing done by wcf but it some times takes 300 to 500ms to reach the server on a LAN!! this is pretty slow (binding i used were wsttp with no security,wshttpdual with no security and basichttp) and i also tried to use the ip addess/computer name in binding name. I wonder if we could improve on the latency times in wcf.

thanks

mohit

mohit.akl at gmail

New Comments to this post are disabled
 
Page view tracker