Concepts:
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.
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 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 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 using standard cryptography
Pure Javascript AJAX
jQuery
jQuery UI
Linq To XML
Generics
Delegates
Interfaces
Threading
Regular Expressions
ASP.NET web applications
Console Applications
Windows Forms Applications
Windows Service
Custom XML Serialization
Extension Methods
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 4 with Razor
Entity Framework
Less - The dynamic stylesheet language
Public/Private Key Crypto
Managed Extensibility Framework
SignalR
TypeScript
Design patterns used:
Provider PatternFacade Pattern
Factory Pattern
Singleton Pattern
The following technologies were used in the past, but have been retired.
Linq to SQLAjax Controltoolkit
Windows Cardspace
ASP.NET Ajax
ADO.NET Typed Datasets
SOAP Web services