Enterprise Library 5.0 – Notes

The new version of Enterprise Library has some interesting implied additions and constraints.  I have used the frameworks before and like them for the most part, they keep the structure of a large application from looking like slop.  I took a good look at it and I am impressed how much better the library gets in each release.  In our organization however, we have chosen not to use the framework because we used the first few and converting from 1.0 or 1.1 to 2.0 to 3.1 was a royal pain.  Several applications used 3 and 4 but they soon converted to the Castle framework because the Castle team seemed to be making more progress.  Both have pros and cons which you may assess for yourself if your interest level is high enough.

What I do want to note is the lack of expressed Windows XP support with the Enterprise Library 5.  Here is the beginning of the system requirements section:

System Requirements Screenshot

I saw a comment asking if Windows XP was supported and the reply was that if it works, it works.

There are a ton of breaking changes this time, but none appear to be outside the realm of making things better in the long run.  There is also a Migration Guide as usual to help in the transition process.

Great job on the release and I hope to see more good things from the Enterprise Library in the future.

iPad Second Impressions

The iPad has been released with all the fanfare of a king arriving home from a great battle.  iTunes has been updated to support the new applications. New applications specifically designed to support the iPad are well underway.  Now all of us skeptics can be silenced, or not.

I realized the cleaver plan of Apple a few hours after the release.  I have thought hard why anyone would want a larger iPhone other than it’s a gadget of bigger proportions.  The reason became clear when a read a blog post of an eBook reader that was very pleased with the iPad and it’s screen, form factor and overall size and weight.  Weeks ago I read that school books were to be available for the iPad.  Then I put it together, the iPad is the perfect medium for a student to carry a single lightweight device rather than a bunch of heavy books.   The school system doesn’t have to carry as many books (maybe none in the future) and the students only have to carry a gadget to their classes, brilliant.

I am sure there are people out there that are saying “Why does it have to a tablet, why not a netbook or Macbook or the like.”  The problem with a PC, Mac or Linux machine is the potential for data loss.  The iPad only has the data that has been synced with a computer so if it gets fried, dropped, drowned or just fails, the data is still on the computer.

I officially rescind my previous skeptical post and say the iPad is a gadget worth getting.

When is CRUD enough?

Let’s lay some groundwork before we start the rant.

CRUD is an acronym for the Create, Read, Update and Delete operations done to tables in a database.  I believe I can safely say “All database applications do at least the CRU of the CRUD”.

Now for the argument

I have never dealt with an enterprise level application that does just plain old CRUD.  In every case, there was some sort of logical requirement that precluded the CRUD requirement.  In the academic world there are examples of applications where CRUD operations can be done, but I have not been involved with one for a very long time.

Here’s an example:

Tables: UserInfo, ProductInfo, EventHistory

Assume EventHistory is a generic event history table with the key from the foreign table (UserInfo, ProductInfo, etc.)

Now, let’s add a new UserInfo record with the appropriate EventHistory record, this would require an Insert of the  UserInfo record with the retrieval of the key column then a write to the EventHistory table to record the user and such of the action.  Two trips even in a transaction, bleh.

How about writing a stored procedure to do the same.  One trip with little overhead to the calling application.  Simple, nice.

I’m sure there are a ton of people saying it could be done in a trigger and yet others think it should be done in the business application layer but in my opinion, the database is a good place to database oriented things.