Monday, November 2, 2009

David bishop - dynamic project content

david bishop site
It wasn't long ago I asked my graphic artist Travis Oakes to design a persona site for me, David Bishop, which I then created from his graphics and design. This site functions as an online resume detailing my work history and contains links to everything I do: blogs, my Company: VillainousMind including the Locura Media Server its flagship product, my World of WarCraft guild which I recently updated, my kid's sites and more.

But as time progressed, I realized the static nature of the site was no good for a few reasons:
  • There wasn't an automatic way to show project completion.

  • There wasn't a way to reference projects that had completed.


For this reason I wanted to create a data-driven list of projects to show the information on the projects, show the completion within a time frame after the project completed, then drop them off the main pages and into the archive section. And, in keeping with Code Once philosophy, the site will auto-update by the data without code changes.

The Technology
Since personal projects are always opportunities to learn and have fun, we get to play with some fun tech. In a nutshell the data will be normalized in a SQL Server database, referenced through a data layer in C#.NET, and pulled using SOAP Web Services. Woot! And to kick it up a notch I'm going to try my hand at Windows Communication Foundation (WCF)

The Data
The data will focus on projects and run out from there to pictures, links to blog posts, and information about the technologies used.

Bishop Universe database design

The technologies will also show dependencies which link back recursively to the technologies table. Those dependencies in turn could have dependencies. For instance, Web Services are dependent on SOAP, which is in turn dependent on XML.

Bishop Universe technologies table

The fun part is finding the best way to find out how to grab all related technologies. For instance, if I say a project uses WCF and XHTML, the technology list needs to pull Web Services, which pulls SOAP, which pulls XML. In addition, it needs to pull HTML because of XHTML.

Joe Celko has some interesting SQL on trees (who better to turn to for SQL but Celko himself?) but I don't like the way he's set up the data structure in order to be able to pull the data (for a better visual explanation see this article).

I also thought about finding a way to pull the data recursively with solid SQL, meaning no cursors (spit) and no iterative and future-killing, pre-defined, numbered tables (Technologies AS Tech1 LEFT JOIN Technologies AS Tech2 LEFT JOIN Technologies AS Tech 3 LEFT JOIN Technologies AS Tech4 etc.)

In the end, however, this is a job for code. I think like most developers I had the "that would be cool" or "wow, finding a way to do 'x' would be a challenge. Let's do it!" hat on. Instead common sense took hold and I realized I should pull the data and link it all up in the code.

The Code
I'm new to Windows Communication Foundation. I have read a fair amount about it. I have yet to understand why I need it, but I would like to a) find out and b) continue learning.

windows communication foundation

There is nothing crazy here on tech. It will be simple stored procs (and for those out there that don't make stored procs simple: shame on you!), a data access layer written in C#.NET and a web service layer utilizing WCF. Of course this will all be consumed with a web front end and Web Controls.

data access layer model

The web service will be consumed by a Web Control on the page and an new archive section will be added.

That's It
There's really nothing more to say: New database, data driven projects with recursive technology links, data access layer, WCF web service consumed by custom Web Control on a C#.NET ASP.NET page.

Now to get cracking!

0 comments:

Post a Comment