February 2006 Entries

Debugging Web Services


Recently I have been working on a mobile application running on a Pocket PC. The application uses XML web services to synchronize itself with SQL Server. Web Service Studio allow you to point to a web service to which it will generate the proxy, compile it, generate an assembly, and then reflect over that assembly providing you a user interface to the web service. You can then select any of the methods the web service exposes and it provides a UI to interact with you web services, showing you the results. This tool is very similar in the features provided by Mindreef's SOAPscope; except Web Service Studio is free. One of the more interesting features Web Service Studio provides is the ability to copy and paste nodes from the TreeView that represent your request and response to and from your web services.

Merging Database Schemas


For business applications, databases can be the ugly step child of an application, in particular during the development process. From the test driven development aspect, the question is often, how can I maintain consistent data for the environment so I can invoke atomic tests, quickly and repeatedly in an automated fashion? Another common issue is versioning of the database schema over the lifetime of the development process.

At work, I was tasked with merging an existing application into a web framework that required table modifications for integration (it wouldn’t be considered an ‘integration’ without modifications, right?). While the modifications are something you could maintain in a physical document somewhere; that introduces a human error factor that I’m not comfortable with. To help manage this task, we decided to use a product called SQL Compare from Red-Gate software. Not only will SQL Compare provide differencing between my various tables, I can export those table differences as well as synchronize between databases. As an added bonus, I can create a NAnt task to invoke this process comparison during my build, which we can use as additional documentation for our clients which require this type of information for Sarbanes-Oxley compliance.

I am curious how others handle this type of problem and what other issues you have with database-driven applications during the development phase.