Friday, December 19, 2008

My first WSCF web service project. Contract first, code later.

We're using WSCF (Web Services Contract First) 0.7 at work, and this guy published a review of an earlier version (0.5). He loved it except for the following, which might be different in 0.7, but I haven't checked yet:
"So far using WSCF for building the web service is quite a success. But I did not use it for building the consuming client. My main problem was that every roundtrip of the contracts requires deploying (plain copy) the generated wsdl and the accompanying schema's to the client code. Instead I created just a server project which included the contract schema's. One clean and independent project. As all info needed by a consumer of the service is in the wsdl all the consuming client application needs is a reference to the wsdl. Which is exactly what add web reference in VS does. Having updated the service all I need to do in the client project is Update Web Reference. However, the proxy generated by WCSF does offer some nice extra's. It returns the data (when the option in the wizard is set) as a collection, the VS web reference just sees an plain array. I also have to set the service endpoint (the URL with it's location) by hand. The latter is something I'll have to do anyhow, as it will be read from a config file. And I can live with the arrays as a trade off for a cleaner development process. This is a point where WSCF could be improved."

Monday, December 15, 2008

LINQ support on .NET 2.0

Oh thank god!!!

I'm working in a shop with ancient servers which run only .NET 2.0, so this is a wonderful thing to know about. Woo hoo!

Here's what he has to say:
  1. "Create a new console application
  2. Keep only System and System.Core as referenced assemblies
  3. Set Copy Local to true for System.Core, because it does not exist in .NET 2.0
  4. Use a LINQ query in the Main method. For example the one below.
  5. Build
  6. Copy all the bin output to a machine where only .NET 2.0 is installed
  7. Run"

[Update Apr 2 2009: This didn't work for me because our server was using .NET 2.0 without SP1. Instead, I used the excellent LINQBridge.]