September 2004 - Posts

Useful little tool - Ruler

Another neat little utility by Jeff Key. Definitely something for the toolbox. Get it here.

Cropper in C#. Grab parts of your screen.

Cropper in C# - Grab parts of your screen. Neat little utility. Definitely something for the toolbox. Get it here.

Central Maryland ASP Professionals Meeting on Tuesday, September 7th - Code Generators

Central Maryland ASP Professionals has a meeting on Tuesday, September 7th that focuses on code generators. Rob Howarth, Ed Mullin, and Randy Hayes will each present a different code generator. Between them, they will cover LLBLGEN, RapTier, and DeKlarit.

This meeting will start at 6:30 PM for networking, pizza, and refreshments. The main presentation is at 7:00 PM. It's hosted by Impact Innovations in Columbia, Maryland. Directions are available here.

Don't forget .... If you bring a new friend to the meeting, both you and your friend will receive a free raffle ticket.

Monoppix Preview (0.2.2.3) Release

[ Via JonGalloway.ToString() ]

Monoppix Preview (0.2.2.3) Release

Summary

Monoppix is a GNU/Linux distribution which includes Mono, XSP, and Monodevelop, and runs completely off a CD. It allows you to get familiar with Mono development in Linux without installing anything on your computer.

Monoppix was based on Knoppix and Miniknoppix and was developed by Roiy Zysman (zroiy at spymac dot com).

Disclaimers

  1. This is not an official release; it is a public preview intended for testing and feedback prior to the official release. [1]
  2. I'm a Linux lightweight. I've put a lot of time into testing and the XSP walkthrough, but there may be better or different ways of doing what I've listed. Please comment and I'll correct / update.

What is it?

Monoppix is a Live CD Linux distribution, which means you pop it in your CD drive, reboot, and you're running Linux. It works without installing a thing on your hard drive - it runs completely off the CD and RAM.

Data-Binding to Web Service Proxies

[Via Brian Ritchie's Blog ]

Data-Binding to Web Service Proxies

As I was preparing to post this code, I ran across Brad Adams very timely post:
   Nikhil fires up the age old debate againâ€Data-binding to public fields... yes or no?

My problem, more specifically, is data-binding to web service proxies.  The client proxies generated by .NET 1.0 & 1.1 represent the data elements returned by a web service as fields.  While this works fine for retreiving data, it does absolutely no good when trying to bind the data to a grid.

While .NET affords some extensions for web service client code generation, the data classes are generated by the serialization framework and it does not support customization AFAIK.  So what can be done?  Wait for .NET 2.0?  Being the impatient programmer, I decided to go down a different path. 

I've been following the Mono project for a while, and I knew they had an open-source port of .NET's WSDL.EXE tool.  I downloaded the source code and patched together a new WSDL tool that runs under .NET 1.0, 1.1, or Mono.  It was definitely a quest!  I interwove the System.Web.Services & System.Serialization classes from the Mono library with the base runtime classes.  This allowed me to tweak the code generator to produce the desired result while running on either MS.NET or Mono. Thanks to the Mono Team for making this code available... definitely a good reason for open-source!

The new tool has an additional flag (-eap or -elementasproperty) to generate properties instead of fields.

Here's how to run the tool:

   D:\wsdl>wsdl -eap http://www.synapticdigital.com/webservice/public/regions.asmx 

   Mono Web Services Description Language Utility
   Modified by Brian Ritchie to support extended proxy generation under
   Mono or MS.NET runtimes.

   Writing file 'States & Provinces.cs' 

I've created a sample WinForms application to demonstrate data-binding against the generated proxy.  The WSDL tool source & binary can be downloaded here.

Note: The project & compiled code are VS.NET 2003/.NET 1.1.  However, it can be compiled under 1.0 or Mono.