Los servicios del modelo de objetos de Team Foundation Server

La arquitectura de Team Foundation esta orientada a servicios, no en el sentido que utiliza servicios Web, sino en el sentido amplio de arquitectura orientada a servicios. Los diferentes componentes de Team System ofrecen servicios a través de interfaces bien conocidas para cada uno de los servicios.


Como consecuencia cuando queremos utilizar uno de estos servicios, sea cual sea, el patrón siempre es el mismo.


Primero debemos autenticarnos en el servidor de Team Foundation Server. Y luego debemos obtener el servicio que necesitamos, generalmente llamando al método GetService de la clase Team Foundation server, pasándole el tipo de servicio que queremos obtener. Si bien esta no es una tarea muy compleja, como podéis observar aquí , si implica conocer cual es el servicio adecuado para la tarea que queremos realizar.


El propósito de este post es dar a conocer cuales son los diferentes servicios que expone Team Foundation Server a través de su modelo de objetos, para que tipo de trabajos se puede utilizar cada uno y ofrecer una recopilación de ejemplos de terceros del uso de cada uno de estos servicios:


El servicio de registro (IRegistracion), permite a la herramientas que se integran en la infraestructura de Team Foundation Server, registrar que artefactos utilizan, como se establecen relaciones entre ellos y que base de datos utilizan para almacenar su información. También permite obtener esa información.


The IRegistration Service Type


El servicio de clasificación (ICommonStructureService), permite enumerar los proyectos, trabaja con propiedades de los mismos, trabajar con las ramificaciones de los proyectos (branch) y enumerar areas e iteraciones.


Enumerate TFS Areas using ICommonStructureService


Listing the team projects on a server


El servicio de enlaces (ILinking) permite que las diferentes herramientas integradas en Team Foundation Server, puedan establecer relaciones entre sus artefactos. Además proporciona la infraestructura necesaria para poder acceder a artefactos mediante URIs. No he encontrado ejemplos de este servicio, más allá de los que aparecen en el SDK y en esta ppt, en la parte que habla de «artifact and links».


El servicio de eventos (IEventService) permite subscribirse a eventos que ocurren en TFS y tambien registrar nuestros propios eventos. Os remito a un post anterior en el que hay extensa información y recursos sobre este servicio.


El servicios de grupos y seguridad (IGroupSecurityService) y el servicio de autorización (IAuthorizationService) , nos permiten trabajar con los grupos, usuario y permisos.


How to list the users/groups the server knows about?


Programmatically Assign Security Descriptors for the Iterations and Area


El servicio de estado del servidor (IServerStatusService), que solo presenta dos métodos, nos permite obtener informacion sobre en que estado se encuentra el servidor de Team Foundation Server y la versión de los contratos de servicio del mismo.


El servicio de plantillas de proceso (IProcessTemplates), nos permite realizar operaciones sobre las plantillas de proceso, listar las que tenemos, asi como importar y exportar plantillas de proceso desde nuestro programas.


Listing the process templates on a TFS server


Installing Process Templates


El servicio de elementos de trabajo (WorkItemStore) permite realizar todas la operaciones relativas a work items que se nos ocurran. Crearlos, eliminarlos, cambiar su estado, sus campos etc…


Programmatically adding new Work Items to a Team System Project


Web Forms for Submitting Issues to Team Foundation Server


El servicio de control de fuentes (VersionControlServer) nos permite realizar todas la operaciones relativas a gestión de fuentes.


Enumerar contenido en el gestor de fuentes de Team Foundation


Working with the Version Control Object Model


Espero que os animéis a entrar en el mundo de la extensibilidad de Team Foundation Server!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *