My main pet project is called Topas, it is a content management system for twee.net and my other web properties.
Most Content Management Solutions allow the users to manage their content in a database.
The system then creates web pages on the fly when a user hits a web page. There may be some
caching involved but the database plays an important role during the display of content to the user.
Topas also saves the content in a database, but it creates stand alone web pages which are served to the user without having to access the database. This has several advantages
- The web site is faster because the web server just has to load a file from the file system and does not have to access the database and generate dynamic pages.
- The web site can handle more load, because the server needs very little CPU when serving pages compared to dynamic generation. This is important for high volume sites.
- The site is much more secure because it serves static content rather than dynamically generated pages. Problems like "SQL injection" do not exist, because there is no SQL.
The first version was created in 1994 to support my then new web site.
The data was hold in a database system on an Atari ST. It was then transfered to a PC where
a lot of Visual Basic code created HTML pages which were then uploaded via FTP to a Unix web server.
In 1995 the data was moved to an MS Access Database and a user interface was created to manage the
content. Code then created flat HTML pages and uploaded them to the live server. Various
improvement were made over the years, including replacing VBA code with XSLT as the templating language.
Finally in 2005 the system was ported to a web application using asp.net with C#. The database was move to SQL Server.
The following technologies and concepts are used:
138 tables in SQL Server
569 Stored Procedures
Over 21000 hand written lines of C# code in assemblies
My own specialized data access layer
N-tier and n-layer design
My own security framework using standard cryptography
Linq To XML
ASP.NET web applications
SOAP Web services
Windows Forms Applications
Custom XML Serialization
SQL Fulltext Search Engine
Custom search term parser
Common Table Expressions
500+ unit tests
Advanced user state management framework
Custom Code Generation tools
MVC 4 with Razor
Less - The dynamic stylesheet language
Public/Private Key Crypto
Managed Extensibility Framework
Design patterns used:
The following technologies were used in the past, but have been retired.
Linq to SQL
ADO.NET Typed Datasets