Wednesday, April 09, 2008

Synchronous Web Service Calls in Silverlight

There seem to be a lot of strong opinions about the absence of Synchronous Web Service calls in the Beta 1 release of Silverlight 2, so I thought I would try and condense the points brought forward by the two opposing forces into an easily digestible format.

Camp 1: Synchronous Web Service calls are missing and rightly so!

  • Synchronous calls will block the web browser's UI thread, rendering the browser unresponsive.
  • Microsoft did this to prevent developers from....<<insert self-mutilation saying here>>.
  • Microsoft did this to protect Silverlight platform from getting a bad rap.
  • Microsoft did this because of cross-platform limitations.
  • Flash Web Service calls are asynchronous.
  • Synchronous calls are dangerous because you are depending on receiving a response that might not happen.
  • Synchronous calls are easier to make and therefore easier to abuse.

Camp 2: Synchronous Web Service calls are missing and you have ruined my life!

  • Asynchronous calls are causing my code to be difficult to read and maintain.
  • If I want to ....<<insert self-mutilation saying here> then I should be able to do it.
  • Most web service calls are short-lived and aren't transferring gobs of information.
  • At least support background threads and let us call synchronously there.
  • At least provide a way to simulate synchronous behavior.


Hopefully, Microsoft will come up with a good compromise to satisfy both camps!