Friday, May 4, 2007

.NET User Group May Meeting - Nblogr

Ivan Porto Carrero

  • Senior developer
  • Xero
  • Creator of Nblogr

What is Nblogr?

  • Blogging Engine
  • Base library for other projects
  • My experimental project
  • Extensible
  • Showcase for technologies
  • Decided to actually go through making it a proper application because of people asking me for it.

Why another blogging engine?

  • Underestimated the work involved.
  • Used to be my experimental project / Facing fears
  • None of the blogging engines do what I want them to do at the time I started the project.
  • Exploring open source
  • Contributing to the community
  • There is no community blogging platform built on .Net
  • Base for a range of other applications that are based on blogging technology (CMS, forum, wiki, …)

Which technologies?

  • Base4 (
    • Base4 takes care of the O/R mapping
    • Base4 is a lot more than just an O/R mapper
  • Castle (
    • MVC framework a la Ruby on rails
    • Contributed to the project myself (minor patches)
  • Prototype (can be replaced)
  • .NET framework (the best framework for programming)

Base4 brush-up

  • Services layer over your database
  • Good layer of abstraction of my data
  • Objects instead of database schema.
  • Seamless setup experience
  • Supports migrations

Castle introduction

  • Castle mission statement: to provide a simple set of tools to speed up the development of common enterprise and web applications while promoting good architecture.
  • MVC framework
    • Promotes separation of concerns
    • Basic castle setup would be
      • Models => Castle provides ActiveRecord through Nhibernate
      • Views => Castle provides multiple view engines (aspx/webforms, nvelocity, brail, …) (rendering engine)
      • Controller => the director of the application. Delegates input to services. And sends the output to the views.
    • Castle provides Inversion Of Control which makes your application a lot more flexible.

Nblogr architecture

  • Views & JavaScript
  • Controllers
  • Service Layer
  • Base data object
  • ASP.NET App Svc & Logging & Output compression module
  • Base4 server/client
  • Castle facilities for Base4
  • SQL Server 2005


  • Membership provider
  • More logging
  • Output compression
  • Initialisation of mapping service
  • DataObject
    • Generalisation works well
    • Abstract service works as DAO
  • Services Layer
    • Do the actual work
    • 1 class, 1 responsibility
    • 1 method, 1 task
  • Controller
    • Common functionality in base classes
    • Receive input from request
    • Dispatch to services
    • Output results to view
  • View
    • Render results
    • A view is a representation of data

Status / Roadmap

  • Current status = Alpha
  • Roadmap
    • Multi user management
    • OpenID and CardSpace
    • Themes


No comments:

Post a Comment