hotrannam's corner

I enjoy building apps that people love

HTML5 Programming

leave a comment »

Advertisements

Written by Nam

January 5, 2012 at 10:48 am

Posted in HTML5

Tagged with

Here’s to the crazy one – Steve Jobs

leave a comment »

Written by Nam

October 7, 2011 at 10:24 pm

Posted in Inspiration

My presentation at BarCamp Saigon Summer 2011

leave a comment »

Written by Nam

July 25, 2011 at 2:00 pm

Posted in Node.js

Tagged with , ,

Tết

leave a comment »

Nam nhi tự hữu xung thiên chí
Hưu hướng Như Lai hành xứ hành

Thiền sư Quảng Nghiêm [1122-1190]

Written by Nam

February 3, 2011 at 9:43 pm

Posted in Inspiration

Tagged with

Multi tenancy

leave a comment »

My lightning talk about multi tenancy at ALT.NET Saigon.

Written by Nam

February 1, 2011 at 7:25 pm

Posted in Multi tenancy

Tagged with

ASP.NET MVC 3: Inversion of control

with one comment

This is the first post in the series that I am going to warm up my knowledge in ASP.NET MVC. I will pick the latest version, ASP.NET MVC 3 RTM. It is good for me to recall the old things and know the new things as well.

In the new features, I first try IoC improvements. Controller factory was extensibility point that I liked. This is where I could register external services that controllers need. It’s not only to resolve dependencies for controllers, more than that, thinking of chain of dependency. In ASP.NET MVC 3, controller factory is disappeared and the interface IDependencyResolver is introduced.

public class ServiceResolver : IDependencyResolver
{
    private IUnityContainer container;

    public ServiceResolver()
    {
        this.container = new UnityContainer();
        this.RegisterServices();
    }

    private void RegisterServices()
    {
        this.container.RegisterType<IFooService, FooService>();
    }

    public object GetService(Type serviceType)
    {
        try
        {
            return this.container.Resolve(serviceType);
        }
        catch
        {
            return null;
        }
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        try
        {
            return this.container.ResolveAll(serviceType);
        }
        catch
        {
            return new List<object>();
        }
    }
}

Once I have an instance that is implementation of this interface, I could set it as default resolver to inject dependencies into controllers.

protected void Application_Start()
{
    //...
    DependencyResolver.SetResolver(new ServiceResolver());
}

There is also an overload of static method DependencyResolver.SetResolver with parameter is Common Service Locator. It sounds cool, but I am not sure will use it.

It is trick to must have try/catch block in GetService method. Without this, ASP.NET MVC 3 will throw an error related to IControllerFactory. Oops, it is not disappeared totally.

Written by Nam

January 16, 2011 at 8:05 pm

Posted in ASP.NET MVC

Tagged with

My presentation at BarCamp Saigon 2010

with one comment

It’s my first attendance at BarCamp Saigon. It’s very impressed to meet and talk with some cool guys. I do hope there will be some events like this, especially for .NET developers community where everybody can come, learn and share. If you are interesting, please drop me a line.

Below are slides of my presentation on Ruby on Rails 3.

Written by Nam

December 14, 2010 at 10:52 pm

Posted in Ruby On Rails

Tagged with