Smart Client Software Factory: Registrando y Recuperando Servicios

Post original en ingles

Hola, en este post voy a intentar explicarles las diferentes formas que existen en SCSF/CAB para registrar y recuperar servicios. Empezemos 🙂

 SCSF Services


How To: Registrando Servicios

Existen dos formas de implementar la registracion de un servicio.

  • Usando el atributo [Service]

    Este atributo nos indica que nuestra clase va a ser automaticamente registrada como un servicio dentro del root WorkItem de nuestra aplicacion.

    Usage:

    public interface IMyService
    {
        
    int GetSomeData();
    }

    [Service(typeof(IMyService))]
    public class MyService : IMyService
    {
        
    public int GetSomeData()
        {
            
    return 1;
        
    }
    }

    Con el codigo anterior CAB crea una instancia de esta clase y la registra como un servicio durante el inicio de nuestra aplicacion. El parametro del constructor del atributo le esta a diciendo a CAB que key usar para registrar el servicio (para usarla en la localizacion)

  • Usando WorkItem.Services.Add<TService>()

    Ahora bien, si queremos registrar nuestro servicio de una forma mas programatica, lo que tenemos que hacer es llamar al metodo Add o al metodo AddNew de la coleccion de servicios del WorkItem en el que queremos usar el servicio. 

    Usage:

    RootWorkItem.Services.Add<MyService>(myServiceInstance);

    RootWorkItem.Services.AddNew<MyService>();
    RootWorkItem.Services.AddNew<MyService, IMyService>();

    How To: Recuperando servicios

    Ahora que ya tenemos nuestros servicios registrados, lo mas logico es que queramos recuperarlos para poder usarlos. Veamos las dos maneras que hay para realizarlo.

    • Usando el atributo [ServiceDependency]

      Este atributo (que puede ser usando tanto en propiedades como en parametros) indica que esa propiedad o parametro es una dependencia a un servicio y el cual tiene que ser «inyectado» cuando el objeto es agregado a nuestro WorkItem.

      Usage:

      private IMyService myService;

      [ServiceDependency]
      public IMyService MyService
      {
          
      set { myService = value; }
      }

      Con este codigo, CAB tiene claro que estamos teniendo una dependencia con IMyService, la cual ya fue creada y esta disponible para ser usada. Para realizar esto CAB usa Inversion of Control (IoC) / Dependency Injection (DI). Cuando el objeto (por ejemplo una View) es agregado al Workitem, la instancia que corresponda al servicio va a ser inyectada en nuestra propiedad o parametro.

    • Usando WorkItem.Services.Get<TService>()

    Por este camino la recuperacion del servicio es mas bajo demanda que usando el atributo [ServiceDependency].

    Imaginemos que tenemos un segundo servicio llamado AnotherService que implementa la interface IAnotherService a la cual decoramos con el atributo [Service].

    En nuestra View, no vamos a crear un propiedad para acceder a nuestro servicio, por lo tanto no vamos a estar usando el atributo [ServiceDependency].

    Usage: (por ejemplo en un metodo)

    public void MyMethod()
    {
        IAnotherService mySecondService 
    rootWorkItem.Services.Get<IAnotherService>();
        
        
    // …
    }

    Aclaremos que el atributo [ServiceDependency] no hace magia, sino que «behind the scenes» o en criollo por abajo, esta llamando a Services.Get.

    Espero que esta guia les sea util.

  • LitwareHR -> Ahora disponible para XP

    LitwareHR
    Hace unos dias les hable de SaaS y de LitwareHR (pueden leer este post si se lo perdieron), y como habran visto si es que bajaron la aplicacion, la misma se tenia que ejecutar en Windows 2003.


    Pero la comunidad se hizo escuchar :), y ahora tenemos un instalador de LitwareHR para poder correr LitwareHR en XP.


    En este postAriel Schapiro nos cuenta con mas detalles cuales fueron los cambios que se realizaron, y a su vez nos deja un link con una guia para hacer funcionar LitwareHR en Windows Vista.


    Espero que les sirva y que se animen a usar LitwareHR.


     


    Download LitwareHR XP

    Software as a Service (SaaS) – LitwareHR

    ¿Que es SaaS? ¿Donde puedo obtener informacion?



    «Software deployed as a hosted service and accessed over the Internet.»


    Obviamente esto es solo una definicion muy simple, la idea es que lean estos articulos y vean la aplicacion LitwareHR


    Links:



    Blogs que postean sobre SaaS:



    ¿Que es LitwareHR?


    LitwareHR



    LitwareHR is a fictitious HR application providing recruitment management software delivered as a service. But the important aspects are not what the application does but how it is implemented.
    LitwareHR is implemented as a Single Instance Multi Tenant application, which means that all LitwareHR customers (or tenants) share the same instance of the application including a single database. Showing how to be multi tenant efficient as well as allowing tenant specific customization in a single instance environment was one of the key objective of LitwareHR.


    Links:



    Les recomiendo que para entender un poco mas, vean el screencast que hizo Ariel Schapiro sobre «Datacenter Provisioning».


    Este screencast explica como instalar en un datacenter toda la estructura que se necesita para soportar a LitwareHR, interesante si quieren saber que es lo que hace el script de instalacion.


    Esten atentos, porque muy pronto habra nuevos screencast.


    Tambien para los que estan en Argentina, los inivito a concurrir al evento de SaaS que se va a realizar el 16 de Marzo.


    Les dejo el link al evento:



    Nos vemos el 16.

    Saludos!!