Blog By Hal Hayes
Sunday, September 11, 2005

I am attending the .NET Framework 2.0 - The Smart Client Perspective. Great stuff. This one is being presented by Rocky Lhotka and Billy Hollis. I highly recommend checking out any presentation these two guys do -- they have some great material and they are very good speakers. Anyway...

Rocky was discussing architectures, basically where the business and data objects on what tiers (client, back end server, etc.) and what type of applications those create (browser based, rich client, etc.), and he expressed an idea on something I and many others have obviously have thought about... Building a presentation tier/client that accepts both data and metadata.

The purpose of the metadata is to provide information to the UI so that controls...probably smart controls...can populate themselves and handle validation --- without having to know anything about the business rules. So, the client has no business object at all, it communicates (perhaps remotely) with the business layer.

The smart controls would get data to help populate things like combo box items, and just enough validation logic to assist the user in entering valid data and prohibiting invalid information. This system would allow the UI to "reconfigure itself" within bounds to adapt to a slightly different domain (different user roles, different but similar data sets).

We developed something similar to this for a VB6 application that used a custom web-services layer for communication. We not only handled the validation issue, but we also handled event operations. An example was the population of a tree control from the data, purely handled by the UI, but we had metadata that determined not only what events were available, but also what operations were available on a per-element basis. The UI interpreted the operation information by turning on or off menu items, or revealing or hiding controls - like buttons.

While this scheme could handle a host of validation issues, there were some business cases that could only be resolved by comparisons against various tables within the datastore. Therefore, when an input operation was made to the business layer, we had a return call that told the client whether the operation had succeeded, and if not, why it did not. Also, calls made via these operations might inform the UI to "refresh" its overall data-representation (repopulate the tree control, for instance) since the data may have changed. This refresh reference could apply to a single entity type or for the entire tree.

Rocky hinted that Billy Hollis was going to talk about an implementation of such a system that he had done.

9/11/2005 6:03:48 PM (Eastern Daylight Time, UTC-04:00) |  | .NET Framework | PDC | Visual Studio 2005 | .NET Framework 2.0#
Search
Archive
Links
Categories
Admin Login
Sign In
Blogroll
 CTO 2.0
Antonio Chagoury
Dot NET Ramblings
Brian Noyes
 New Entry
 SharePoint Resources
Lamont Harrington
 Winsmarts
Sahil Malik
Themes
Pick a theme: