multiple sites on one web instance and db
I have been thinking about supporting multiple sites on one web instance and one db for a while and have finally got around to working on it since the design has finally coalesced in my mind. It ties in with thinking I've been doing about the role hierarchy within the site and my future plans to support content workflow.
The way it would know which site to use is by the host name in the url.
Say the ip address of your site is 22.214.171.124 and you have 2 (or more) DNS host records both pointing to that ip address for example
I would have a SiteHosts table in the db to connect the host names to site ids. Then using the host name in the request I can easily get the site id. There would be a fallback to use the first site in the table if no matching host name is found.
There will also be a need to separate and secure file system resources between sites. Things like gallery images for example should not be accessible between sites. I'm thinking I could create folders named based on the site id and store any site specific stuff beneath that.
There will have to be a property on each site indicating whether it is allowed "Server Administrator" priveleges. Sites with this setting will be able to create new sites and setup the site hosts. Also it would be nice if these admins could specify which modules are available to each of the non-serveradmin sites. This way someone could do hosting with free for some features and charge for others. I'm thinking normally there will only be one site configured this way to administer the others.
Any good site needs to have a good search engine. DotLucene seems to have what I need. I'm still deciding on how best to build the index. I've thought about building a site crawler that could be run from a an aspx page or from a cron job or scheduled task. I'm leaning toward following the example of Martijn Boland and the approach he has taken with his Cuyahoga Web Site Framework. He is also using DotLucene and his design updates the index whenever content is added or updated so no scheduled indexing is needed. Pretty cool! I see alot of advantages to this approach. The index is never out of date and it works for hosted situations where scheduled tasks and cron jobs may not be an option at all. Of course I need to implement the mutliple sites feature first since I will want the search to be site specific, each site will have its own index.
Postgre SQL support
Joseph Hill of GotMono.com has begun work on a data layer for Postgre SQL. Joseph has a lot of experience porting ASP.NET apps to mono and Postgre SQL as you can see from the Projects page on his site.
Found a few cool things recently that I plan to use in mojoPortal. ZedGraph is an awesome open source charting framework for .NET. Just look at the samples to see how visually impressive it is. I also found a cool schedule control on codeproject.com, I'm sure I will find some use for these in the other features I have planned.
Sunday, March 6, 2005 2:24:22 AM