Proposed Technical Architecture
UI – Silverlight 4 – The point of the exercise is to learn Silverlight 4 so this is the only option.
Services – WCF RIA Services – These have been specifically designed with Silverlight in mind and reduce the development time so currently appear to be the best option.
Database – SQL Server – This will be the choice for the initial build but the solution as a whole will be designed to support other options if possible.
Data Access – Entity Framework – Supports SQL Server and unlike Linq to SQL other database support is available so has been selected for flexibility.
Caching – Enterprise Library 5.0 – Reduce round trips to the database where possible by caching display data where possible. There may be other areas of the library that are of use, this will be investigated in more detail in a later post.
This is only the first cut for technologies and each will be examined in more detail as the 4Blogging project progresses.
This is the initial set of requirements for individual posts.
Text Editing – Rich editing of posts supporting font face, size color, bold etc.
Image – Embedding of local and hosted images.
Code Blocks – Ability to add formatted code blocks with copy to clipboard functionality.
Comments – Post comments threaded and organised like conversations. Plugin support for external comment hosting such as Disqus.
Provided in an easy to use familiar format similar to HTML rich text boxes or MS Word.
Hosting single multiple blogs – Site should be able to manage either a single blog or multiple blogs and default to a different home page according to needs.
Security – Site should manage single/multiple users per blog as well as overall administration of site. Self registration for site users including automated email account validation.
Tag Cloud – Auto generated based on blog content, needs to support per blog and per site.
Categories – Posts should support categories.
Series – Ability to create a series of blog posts with each post displaying navigation to all other posts in the series.
Social Networking – Plugin framework to support social networks such as Facebook, Twitter, StumbleUpon etc.
External Image Hosting Part 2 – To reduce bandwidth costs, plugin framework to support third party image hosting such as Flickr.
Navigation Bookmarking – Utilise the new Silverlight 4 navigation to enable bookmarking of pages.
Syndication – Plugin framework to support RSS, Atom feeds etc.
Ad Support – Plugin framework to support Google/Amazon ads to generate revenue.
Statistics – Logging of visitors locations, time spent on pages etc.
This is the first draft of requirements all of which are currently subject to change and will need to be investigated in more detail.
All code written for the 4Blogging engine will be written in compliance with existing standards. I have a fairly standard set of tools to this end listed below:
StyleCop http://stylecop.codeplex.com/ Ensures consistent look and feel of code layout
GhostDoc http://submain.com/products/ghostdoc.aspx Excellent auto-commenting tool
Code Analysis out the box and ready to go in Visual Studio 2010
I will add details of further tools as I need and test them.
For anyone wishing to follow the project and/or download source code/compiled binaries the CodePlex site has now been created. There are currently no downloads available as I am still in the planning phase but as soon as code starts to emerge it will be published. All code written will be open source and can be freely distributed, the CodePlex project can be found:
As a first time user of CodePlex I am impressed with the ease and speed of setup and TFS support which will hopefully help my development run smoothly.