Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Designing Applications and Services

What a week I've had! Even with the massive learning curve that I've had over the past 2 years, I can safely say that I've learned more in the past week than in any other *three week* timespan in that period!

For those that haven't been following my blog, let me start by explaining that I've just completed my 70-306 exam (Windows Applications) and am now studying for my 70-310 exam (Web Services).

My week started by tackling Remoting - a topic that I've been quite fearful of; thankfully Ingo stepped in with a useful link that led to my first Remoting app. From there it only gets better...

After building my first Remoting app my employer came to me and asked whether I'd be interested in exposing an application that was written in VB6 via a WebService, and writing a Windows Client to consume the Service. This tied in supremely with the WebServices learning that I needed to do for my 70-310 studies and allowed me to consoldate the learning I did for my 70-306 studies. It also meant that, for the first time, I was exposed to the following issues:

  • COM Interop
  • Serviced Components
  • Web Services
  • SOAP Extensions
  • XSD

The following articles and links provided very useful information while I was building the application and learning about the surrounding technologies and standards:

Although it has been a huge week, it's also highlighted many areas in which I'm lacking! Specifically, architecting distributed applications. To understand what I mean, consider the following scenario:

You have created a WebService to expose certain functionality of an existing (VB6) application. The strongly typed collections and objects in the existing app. cannot be directly exposed because they are not serializable. The remote clients that consume the WebService must be able to work in a disconnected mode on the collections of business objects and, at a time determined by the client, synchronize, via the WebService, with the central application. Data collisions may occur due to some of the central objects being deleted or closed and the Smart client application must be notified of these exceptions.

So, in the previous example, you decide to submit a strongly-typed DataSet of rows back via the WebService when synchronizing. You then enumerate the rows of the DataSet table and create instances of the custom business objects. On each business object you call its Save() method. What does your WebMethod return? Does it return:

  • A) True to indicate atomic success, False to indicate atomic failure.
  • B) A DataSet of errors. If the DataSet is empty then no errors occurred.
  • C) An enum representing the status of the operation.
  • D) Other?

I haven't as yet decided exactly how to manage the operation, so I'd love to hear any ideas that others might have as to how I might handle the submission and subsequent reporting. What I intend to do in the meantime is to re-read the appropriate sections of the Application Architecture for .NET document and see if it can shed any light.

1 Comment




  • The Interop link points to a free ebook which, at first glance, looks full of promise. Unfortunately, once you start reding it, for instance the COM interop chapter, you'll see that the author is merely providing an overview, not real world cases of actual marshalling issues (anyone can check that .NET programming boards are full of marshalling issues and concerns).


Comments have been disabled for this content.