Roy Ogborn, Orbonyx Corp.

Microsoft .NET Architect, Developer, Mentor, Custom Software Developer

  Home :: Contact :: Syndication  :: Login
  6 Posts :: 0 Stories :: 7 Comments :: 0 Trackbacks

Article Categories

Archives

Post Categories

.NET

.NET & OO Mentoring / Training

Blogs Less Boring than Mine

Consulting

Software Analysis, Development, Design

Tuesday, November 30, 2004 #

Is SOA something “new” that supersedes OO concepts (as some from MS and elsewhere are proclaiming), or is it that SOA forces us to throw away our OO concepts due to it’s limitations? (This is actually a “comment“ posted to Rockford Lhotka's blog.)

Think about it, SOA can't possibly be, with the current state of technology, Object Oriented. If we want to use SOA (and it’s too compelling not to consider it), we’re forced into the limitation of data messaging and work requests only. It's because of a technological and/or standards limitation that OO is omitted from SOA technologies (like Web Services and other messaging technologies). SOA is not replacing OO (as some have suggested) … SOA just flat can’t tolerate OO right now.

The present roar of SOA exists mainly because of its ability to present us with a straightforward common denominator of interoperability between disparate systems or interoperability between systems that won’t trust each other. Right now, (and who knows, this could change over time) disparate systems (Windows, UNIX, Linux, Mac OS, mainframe OSs, etc.) cannot understand data packaged with behaviors (including business rules) that emanate from a foreign type of machine. Raw data can be understood by separate information systems much easier now that Web Services have been introduced; and asking a “foreign” machine to do some work can be accomplished much easier now. This is what SOA related technologies bring to the table. And SOA IS quite compelling.

So, time to break out our data flow diagrams of yesteryear (and hey, I do still like them!).

What is different and compelling about SOA related technologies are the doors that they swing open regarding interoperability that just was not there a couple years ago without expending a lot of effort. So, if we want that goodness, we have to architect for message based inter-op limitations, and it’s these limitations that force us to think a little differently when designing a SOA based set of systems.

So, when I hear people speak out regarding Object Oriented Analysis and Design that “OOAD is Dead” (i.e.; from Steven Borg presenting the Microsoft Connected Systems RoadShow in Denver, for example) or "OO is done, but not dead" (from Don Box on DotNetRocks episode 89) I chuckle when I know that this is being said due to the current limitations of what SOA's related technologies can offer today. SOA really makes us jump back in time to skip over a whole span of evolutionary refinement of system design using OO. Maybe SOA will be able to catch up one day down the road when a “new” technological innovation (or just a plain standard) is produced that allows the exchange of data and its related behavior. Then we’ll get to hear all over again that there’s a new compelling thing in town ("SOOA" perhaps?) that you’ll all want to advance toward. ;-)>

Roy
posted @ 11:45 AM | Feedback (2)

Tuesday, October 05, 2004 #

My personal-professional highlight last week (Sept. 29, 2004) was having a pint of Guinness with Rockford Lhotka after his presentation at the Denver Visual Studio User Group Meeting.

Rockford was in town (Denver, CO) via the INETA folks to present architectural concepts surrounding his work on creating the CSLA.NET application development framework.  I didn't have time to present my Anaconda/Ostrich theory of object serialization to him because we were too engaged in talking about more serious things like micro-machines that you can sprinkle in your hair, and each night when you go to bed, they wake up, climb up to the top of each hair and snip a bit off, then climb back down and wait 'till tomorrow night, putting the entire barber industry out of business.  When I said micro, I meant really really micro.  I tied this concept into our discussion of SOA Analysis and Design (Services Oriented Architecture), and how it compares to Object Orientation. I have a feeling Rocky didn't buy the connection of SOA to these micro-machines. I'm not exactly sure why ...

Roy

posted @ 1:10 PM | Feedback (5)

Friday, October 01, 2004 #

This week's CSLA study group sessions went nicely (see earlier post). I started off with a white-boarding session describing distributed objects and the trade-offs that must be considered before deciding when to split logical layers into physical tiers. We discussed network latency, “chunky“ vs. “chatty“ interfaces, how to turn a “chatty“ object interface into something more “chunky“ using a UI layer inside of a web service ... things like that.

Now Rockford has a great knack for explaining how things work in his books and that's a great talent.  But I managed to take things down a step lower (or three) by explaining, not how, but why object serialization must occur.  If objects could travel through a CAT5 Ethernet cable intact, the cable would have to expand with a lump much like you could imagine a large Anaconda who has just eaten an Ostrich.  You can picture that lump slowly moving down the length of its body (not to mention feathers everywhere).

The plastic jacket that covers the actual wire inside a CAT5 cable is, actually, quite stretchy, so, in fact, business objects could indeed travel across the wire without requiring serialization. The problem is that some of our objects are quite large, and the lumps going through the wire would be quite like our now satisfied Anaconda friend.  The difference being that our object lumps travel much, much faster.

The reason why Microsoft decided to create mechanisms to serialize objects into streams of teeny-tiny ones and zeros is because their lawyers (who are very smart) advised them against creating these object lumps.  Plasterboard, the stuff that makes up much of the walls in our homes and offices is, as you know, very brittle.  When big object lumps start flying down those wires at nearly the speed of light, the damage caused, and potential loss of life, from our walls exploding from the pressure of the expanding wires within, would bring lawsuits that would take the firm to its knees.

And so, the SOAP protocol was invented along with Binary Serialization so that our traveling, distributed, business objects wouldn't wreak havoc on known civilization.

OK, I jest. CAT5 cable does not expand, so objects can't really travel over the wire unless they're serialized first.

We made it through that discussion, and a discussion about UI in Charge, Class in Charge, Object in Charge ... though I think this last “in Charge“ topic is one we're going to have to revisit so all are quite clear on the differences. Some individuals in this group are very new to OO programming.

Next week, we shall continue on our journey through CSLA architecture concepts. I get to kick the week off with a discussion of Relational vs. Object Modeling; ERD's vs. Static Structure Diagrams and Object to Relational mapping.

I love this stuff!

Roy

posted @ 1:35 AM | Feedback (3)

Friday, September 24, 2004 #

The CSLA.NET Study Group decided to meet two days a week for two hours starting at 8 AM.  This schedule is working quite well.  Ninety minutes per session would have been a bit too short to complete the interesting discussions that are coming up. There are about six individuals in our group plus myself (I'm the facilitator).

Before our first meeting, I asked the group to read 8 pages from Chapter 1 of Expert C# Business Objects:

  • Distributed Architecture; p. 1
  • Logical and Physical Architecture; pp. 2-3
  • Business Objects; pp. 26-29
  • Architectures and Frameworks; pp. 39-40
  • Conclusion; p. 40

Everyone appears engaged, and almost all are participating in discussions.  I started off on the first day prompting individuals to talk about these sections.

What appears to be working much better after this first session is that I've broken up main concepts out of Chapter 1 and sent out “assignments” via e-mail. Each individual is responsible for presenting a particular concept.

My assignments for day 2 for specific individuals were:

  • Difference between Logical and Physical architecture
  • Why one might split an application so that it physically runs on different machines - What are the trade-offs to consider?
  • Difference between data-centric vs. object-oriented application models
  • Define the 5 layers in a 5 “tier” Logical Architecture
  • Difference between Presentation Layer and User Interface Layer
  • Optimal physical configurations of Logical Layers; When to choose which configuration?
  • In which layers/tiers does the business logic belong? Why?
  • Distributed Objects - Discuss designs for communication between tiers.
  • Compare/Contrast Local, Anchored & Unanchored objects. When to use which?
  • What is an architecture vs. an application framework. What benefits can be gained from using an application framework in an organization?

We got through almost all, with some heavy white-boarding. The two topics we didn't have time for this week were “Distributed Objects” and “Anchored, Unanchored & Local objects“.

Our next session was quite lively and all were engaged. We have one individual in the group (there's always one), who always presents a contrary view ... no matter what! His assignment was to discuss where business logic is supposed to appear in a n-layer logical architecture. His first statement was that he disagrees with the book, that business logic appears in almost all layers. Of course he's right ... the location of business logic is not black & white “it goes here”. But he had difficulty with the explanation that business logic should predominantly be centered in what Rockford calls the Business Logic Layer (BLL).

Even with the explanation that, yes, business logic winds up in the database (constraints and relations), and some needs to be in the UI and Presentation (especially regarding data validation in a web application), he could not agree with the term BLL. When pressed for a better name, he came up with “Number Crunching Layer” (the NCL?).

Skepticism is good, and questioning “the expert” (Lhotka in this case) is healthy.  And if nothing else, it leads to some good, sometimes entertaining, conversation.

For next week, I created a long assignment list ... no way we'll get through it all, but I want the participants to get their reading in.

Here's the list of what I assigned individuals to cover for next week:

  • Distributed objects (we didn't get to it)
  • Anchored, Unanchored and Local objects (didn't get to this one either this week)
  • Discussion of CSLA high level guidelines & basic design goals
  • Discussion of a few “more interesting” design goals in detail
  • Discussion of “UI in charge”, “Object in charge”, “Class in charge” design models
  • High level discussion of how objects can be enabled to better support .NET data binding
  • Discussion of object serialization
  • Discussion of Relational vs. Object Modeling
  • Discussion of Object Relational Mapping
  • Discussion on advantages / drawbacks of techniques for persisting objects
  • How is encapsulation preserved in CSLA.NET in a physical n-tier architecture
  • Application security issues
  • Framework design - Business Object Creation
  • n-Level undo classes
  • Data Binding support classes
  • Business Rule Tracking
  • Object Persistence support
  • Flow of control of persistence operations
  • How table based security is enabled, vs. Windows security

Not that I expect that we'll get through most of these next week. 

Roy

posted @ 11:49 PM | Feedback (4)

Thursday, September 16, 2004 #

Next week I begin facilitating a study group consisting of C# .NET software developers. We'll be focusing on Rockford Lhotka's CSLA.NET application framework for C#. I plan on tracking the progress of the group here, posting how we wind up organizing and distributing tasks, how well folks are participating, and our overall progress.

My intention is to have this team of software developers (who are employed by the same firm) be more productive when building custom business software by using a common application framework for each application they design.

Case in point: I've used Lhotka's pre-.NET version of CSLA on several large web applications. One of them is in use at Qwest (at least it was when I last looked) by nearly 2000 Qwest employees. Qwest was pleasantly surprised at how quickly and how bug-free I created this custom work-flow system for them. It was the underlying CSLA application framework that helped produce the great results. [That system also used what I consider to be the precursor to ASP.NET, which was VB6's webclasses, aka "IIS Application", but that's another story.]

For a multi-person team, the benefits of using a standard application framework are even greater. When everyone on the team is building different applications using whatever method each chooses, there's a huge ramp-up time for anyone joining the project. Plus the folks who later have to maintain the software systems will have no clue how any particular application works inside. When a common framework is used for every new application built, this situation improves drastically.

So stay tuned ... You'll get to follow our progress (if you so desire). Hey, and if you have any constructive comments based on your experiences, please drop me a note!

Roy

posted @ 9:39 PM | Feedback (2)