Ivan Porto Carrero
- Senior developer
- Creator of Nblogr
What is Nblogr?
- Blogging Engine
- Base library for other projects
- My experimental project
- 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, …)
- Base4 (http://www.base4.net)
- Base4 takes care of the O/R mapping
- Base4 is a lot more than just an O/R mapper
- Castle (http://www.castleproject.org)
- 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)
- Services layer over your database
- Good layer of abstraction of my data
- Objects instead of database schema.
- Seamless setup experience
- Supports migrations
- 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.
- 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
- Generalisation works well
- Abstract service works as DAO
- Services Layer
- Do the actual work
- 1 class, 1 responsibility
- 1 method, 1 task
- Common functionality in base classes
- Receive input from request
- Dispatch to services
- Output results to view
- Render results
- A view is a representation of data
Status / Roadmap
- Current status = Alpha
- Multi user management
- OpenID and CardSpace