Multi-level shop, xml or sql. best practice?
- by danrichardson
Hello, i have a general "best practice" question regarding building a multi-level shop, which i hope doesn't get marked down/deleted as i personally think it's quite a good "subjective" question.
I am a developer in charge (in most part) of maintaining and evolving a cms system and associated front-end functionality.
Over the past half year i have developed a multiple level shop system so that an infinite level of categories may exist down into a product level and all works fine.
However over the last week or so i have questioned by own methods in front-end development and the best way to show the multi-level data structure.
I currently use a sql server database (2000) and pull out all the shop levels and then process them into an enumerable typed list with child enumerable typed lists, so that all levels are sorted.
This in my head seems quite process heavy, but we're not talking about thousands of rows, generally only 1-500 rows maybe.
I have been toying with the idea recently of storing the structure in an XML document (as well as the database) and then sending last modified headers when serving/requesting the document for, which would then be processed as/when nessecary with an xsl(t) document - which would be processed server side.
This is quite a handy, reusable method of storing the data but does it have more overheads in the fact im opening and closing files?
And also the xml will require a bit of processing to pull out blocks of xml if for instance i wanted to show two level mid way through the tree for a side menu.
I use the above method for sitemap purposes so there is currently already code i have built which does what i require, but unsure what the best process is to go about.
Maybe a hybrid method which pulls out the data, sorts it and then makes an xml document/stream (XDocument/XmlDocument) for xsl processing is a good way? - This is the way i currently make the cms work for the shop.
So really (and thanks for sticking with me on this), i am just wandering which methods other people use or recommend as being the best/most logical way of doing things.
Thanks
Dan