Topas CMS
My main pet project is called Topas, it is a content management system for twee.net and my other web properties.
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 data was hold in a database system on an Atari ST. It was then transfered to a PC where a lot of VB code created HTML pages which were then uploaded via FTP to a Unix server.
In 1995 the data was moved to an MS Access Datebase 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 2005.
569 Stored Procedures
Over 21000 hand written lines of C# code in assemblies
20 Projects
My own specialized data access layer
N-tier and n-layer design
My own security framework
Pure Javascript AJAX
ASP.NET Ajax
jQuery
Linq To XML
Generics
Delegates
Interfaces
Regular Expressions
ASP.NET web applications
SOAP Web services
Console Applications
Windows Forms Applications
Windows Service
Custom XML Serialization
Extension Methods
Provider Pattern
Facade Pattern
Powershell Scripts
SQL Fulltext Search Engine
Custom search term parser
Common Table Expressions
500+ unit tests
Advanced user state management framework
XSLT
Custom Code Generation tools
MVC 3 with Razor
Entity Framework
Ajax Controltoolkit
Windows Cardspace
Concepts:
Most Content Management Solutions allow the owners 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 by 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.
History:
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 VB code created HTML pages which were then uploaded via FTP to a Unix server.
In 1995 the data was moved to an MS Access Datebase 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 2005.
The following technologies and concepts are used:
138 tables in SQL Server569 Stored Procedures
Over 21000 hand written lines of C# code in assemblies
20 Projects
My own specialized data access layer
N-tier and n-layer design
My own security framework
Pure Javascript AJAX
ASP.NET Ajax
jQuery
Linq To XML
Generics
Delegates
Interfaces
Regular Expressions
ASP.NET web applications
SOAP Web services
Console Applications
Windows Forms Applications
Windows Service
Custom XML Serialization
Extension Methods
Provider Pattern
Facade Pattern
Powershell Scripts
SQL Fulltext Search Engine
Custom search term parser
Common Table Expressions
500+ unit tests
Advanced user state management framework
XSLT
Custom Code Generation tools
MVC 3 with Razor
Entity Framework
The following technologies were but are no longer used:
Linq to SQLAjax Controltoolkit
Windows Cardspace