viernes, 28 de diciembre de 2012

WSDualHttpBinding - Ejemplo sobre como usar WCF Dúplex (cliente)

Hoy nos disponemos a crear un cliente "Dúplex" para el servicio que creamos la semana pasada. El objetivo es suscribirnos al servicio de notificaciones al lanzar la aplicación, de este modo el servidor guardará nuestra referencia

CallBack

que usará cuando se produzca un evento que nos afecta para enviarnos las novedades. En resumen tenemos que seguir los siguientes pasos en este orden:

  • Crear un servicio alojado en cliente que implemente el contrato

    CallBack

    que tenemos en AreaTicShared para que el servidor pueda enviarnos las novedades cuando considere oportuno.

  • Crear un cliente

    WCF

    para podernos suscribir a las novedades al cual asociaremos nuestro

    CallBack

    .

Veamos como hacerlo:

En primer lugar para situarnos estamos trabajando en la solución AreaTicClient, es importante incluir la referencia del proyecto AreaTicShared que creamos la semana pasada. Para crear el servicio

CallBack

hemos de implementar la interfaz "AreaTicShared.Duplex.IServerNotificationsCallBack".
namespace AreaTicClient.Duplex
{
    public class ServiceNotificationsCallBack:IServerNotificationsCallBack
    {
        public void RecibeNotificaciones(List<Notification> pListaNotificaciones)
        {
            //Gestionar la lista que nos devuelve el servidor, mostrando la información por pantalla o haciendo lo que nos apetezca con la notificación. 
        }
    }
}
A continuación veremos como crear el cliente

WCF Duplex

, este bloque de código se encarga de crear un cliente que apunte al servicio Dúplex que definimos la semana pasada en servidor y lo asocia al

CallBack

que hemos definido en el paso anterior. Hemos de ubicar este código en algún punto que se ejecute cada vez que se arranque la aplicación cliente.
  ServiceNotificationsCallBack CallBack = new ServiceNotificationsCallBack();

  WSDualHttpBinding binding = new WSDualHttpBinding();

  binding.ClientBaseAddress = new Uri("http://IPCliente:2100/CallBack");
  
  DuplexChannelFactory<IServerNotifications> cf = new   DuplexChannelFactory<IServerNotifications>(CallBack, binding, new EndpointAddress("http://URLServidor:2100"));

  IServerNotifications wcfClient = cf.CreateChannel();

  wcfClient.SubscripcionListaNovedades(MiIDdeCliente);
En la propiedad

ClientBaseAddress

del binding hemos de asignar la dirección de respuesta del CallBack. Tanto el ejemplo servidor como cliente usa el puerto 2100 para comunicar pero podríamos usar cualquier otro, simplemente hemos de asegurarnos que la comunicación HTTP está habilitada entre las máquinas por ese puerto.

Nota: Asumo que cada cliente tendrá una dirección IP diferente, en caso que la aplicación cliente esté corriendo en algún TS o Citrix y se pueda dar el caso que varios clientes ejecuten simultáneamente la aplicación cliente compartiendo IP tendríamos que hacer que la URL del callback sea única para cada cliente... Se podría concatenar algún tipo de GUID o identificador único a la URL cliente para evitar este problema.

Con esto ya tendríamos la base de la comunicación Duplex que podríais adaptar cada uno a vuestro escenario. Espero os sirva no dudéis en comentar dudas o cualquier anotación que se os ocurra sobre el tema!! Recordar como siempre que podéis seguir

areaTIC

en las redes sociales o RSS, esperamos tu participación!


martes, 25 de diciembre de 2012

SQL Server: Uso de directivas y condiciones para saber si hay tablas sin índice cluster

En el artículo "SQL Server: Cómo saber si hay tablas sin índice cluster en una base de datos" de la semana pasada (17 de diciembre) os indicaba la forma de localizar las tablas sin

índice cluster

mediante una consulta... en este artículo os explicaré la forma de hacerlo mediante el uso de

directivas

y

condiciones

, funcionalidad incorporada a partir de

SQL Server 2008

.

La mejor forma de verlo será con un ejemplo utilizando la base de datos AdventureWorks, los pasos a realizar serían los siguientes:
  1. Lo primero que haremos es lanzar la consulta que comentaba en el artículo del 17 de diciembre para comprobar si hay en la base de datos AdventureWorks tablas sin índice cluster definido, aparecen cuatro: DatabaseLog, ProductProductPhoto, Sales_Summary y SSIS Configurations.

    -- Buscar tablas sin índice cluster en base de datos
    SELECT OBJECT_NAME(OBJECT_ID) as TableName
    FROM SYS.INDEXES
    WHERE INDEX_ID = 0
    AND OBJECTPROPERTY(OBJECT_ID,'IsUserTable') = 1
    ORDER BY TableName
    

  2. Vamos a " Administración\Administración de

    directivas

    ", pulsamos botón derecho sobre

    "Condiciones"

    y seleccionamos la opción "Nueva condición..."


  3. Generamos una

    condición

    (conCheckClusteredIndex) con las siguientes características:

    Nombre de la condición: conCheckClusteredIndex
    Faceta: Table (tabla)
    Campo: @HasClusterdIndex (tiene índice cluster)
    Operador: =
    Valor: True
    

  4. Generamos otra

    condición

    (conDatabaseName) que nos servirá para aplicar la directiva sobre una base de datos concreta, para ello informamos en la siguiente pantalla:

    Nombre de la condición: conDatabaseName
    Faceta: Database (base de datos)
    Campo: @Name (nombre de la base de datos)
    Operador: =
    Valor: 'AdventureWorks'
    

  5. A continuación creamos la

    directiva

    (dirCheckClusteredIndex). Pulsamos botón derecho sobre

    "Directivas"

    y seleccionamos la opción "Nueva directiva". Introducimos en la pantalla que aparece los siguientes datos:
    Nombre de la directiva: dirCheckClusteredIndex
    Condición comprobación (Check condition): conCheckClusteredIndex
    Para destinos (Against targets): Every Table in conDatabaseName Database
    Modo de evaluación (Evaluation Mode): A demanda (On Demand)
    

  6. Seleccionamos la

    directiva

    que acabamos de crear y pulsamos botón derecho del ratón sobre ella y seleccionamos la opción "Evaluar", nos aparece la siguiente pantalla donde se muestra que ha fallado la directiva para las 4 mismas tablas que se han comentado en el punto 1.


Ahora que hemos comprobado que la

directiva

funciona podríamos cambiar el modo de evaluación a "On Schedule" y crear un trabajo para que la compruebe periódicamente. Si queréis ver el uso del modo de evaluación "On Schedule" podéis leer el artículo Control proactivo del espacio disponible en BDs SQL Server 2008 donde encontraréis más detalles de todo el proceso (creación de la programación, trabajo, alerta, envío al operador...).

Lo normal sería que ahora os preguntarais ¿y mediante el uso de

directivas

y

políticas

puedo evitar que se creen tablas sin

índice cluster

? Porque hay un modo de evaluación de

directivas

que es "On Change: Prevent" (Al cambiar - Prevenir)... La respuesta es no ya que este modo de evaluación no es aplicable a la

faceta

"Tabla" (que hemos seleccionado en el paso 3), si fuera aplicable podría ser posible pero no es el caso. Sobre los distintos modos de evaluación y aplicabilidad a las distintas

facetas

hablaremos en otro artículo, tiene contenido y complejidad suficiente para ello.

Espero que el artículo os haya sido interesante, dentro de

areaTIC

puedes encontrar otros artículos, no dudes en consultar nuestro archivo; también puedes seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...)


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

sábado, 22 de diciembre de 2012

WSDualHttpBinding - Ejemplo sobre como usar WCF Dúplex (servidor)

En el artículo de hoy veremos un ejemplo paso a paso sobre como usar

WCF Dúplex

. ¿Qué nos permite

WCF Dúplex

? Por ejemplo, tenemos implementada una solución servidor que accede a negocio/datos y por otro lado tenemos aplicaciones cliente que intercambian información con el servidor vía servicios

WCF

. Podríamos definir un servicio de notificaciones en servidor que avise los clientes interesados cuando se produzcan determinados eventos que les afectan en servidor.

Necesitaremos 3 soluciones; AreaTicServer, AreaTicClient y AreaTicShared.
  • AreaTicServer: Imaginemos que es una solución que expone diversos servicios

    WCF

    a los que acceden un número considerable de clientes y llevan a cabo acciones sobre la base de datos. Aquí implementaremos el servicio Duplex y simularemos algún evento para este ejemplo que devuelva notificaciones a los clientes que se han "suscrito".

  • AreaTicClient: Simularemos un cliente, aquí ubicaremos el código que conectará al servicio dúplex a modo de suscriptor y recibirá notificaciones cuando se produzcan eventos clave en servidor.

  • AreaTicShared: Es una biblioteca de clases que contiene clases/interfaces que se usarán en el intercambio de información entre cliente y servidor. Hemos de añadir este proyecto como referencia en ambas soluciones.

En primer lugar atacaremos el código compartido, necesitaremos crear un tipo (clase) Notification que usaremos en el intercambio.
namespace AreaTicShared.Duplex
{
    [DataContract]
    public class Notification
    {
        [DataMember]
        public int CodigoUsuario { get; set; }
        [DataMember]
        public NotificationType Tipo { get; set; }
        [DataMember]
        public string Detalle { get; set; }
    }
   
    public enum NotificationType
    {
        TipoNotificacion1,
        TipoNotificacion2
    }
}
Definiremos también en esta librería la interfaz para el

CallBack

, es importante incluir la referencia de esta dll tanto en Servidor como en Cliente ya que estas clases se usarán en ambas soluciones (hemos creado una tercera solución para evitar duplicar código).
namespace AreaTicShared.Duplex
{
    interface IServerNotificationsCallBack
    {
        [OperationContract(IsOneWay = true)]
        void RecibeNotificaciones(List<Notification> pListaNotificaciones);
    }
}
Ya hemos definido el contrato de

CallBack

, es importante fijarse en los atributos IsOneWay que son necesarios para este tipo de comunicación Dúplex. Veamos ahora como implementar el servicio dúplex, para ello como en todo servicio

WCF

necesitaremos una clase interfaz (servicecontract) y una clase que la implemente. La interfaz la definiremos en AreaTicShared porque se compartirá con la solución cliente. Es importante especificar el atributo

CallBackContract

.
namespace AreaTicShared.Duplex
{
    [ServiceContract(CallbackContract = typeof(IServerNotificationsCallBack))]
    interface IServerNotifications
    {
        [OperationContract(IsOneWay = true)]
        void SubscripcionListaNovedades(int pIdCliente);
    }
}
Crearemos ya en servidor una clase que se encargue de almacenar una lista persistente de suscripciones cliente (IdCliente,CallBackReference) a la que iremos añadiendo o quitando elementos en función de los clientes suscritos. Nos vale con un diccionario definido con el modificador static.
namespace WCFDuplexServer.Services
{
    public static class GestionCallBackClientes
    {
        public static Dictionary<int, IServerNotificationsCallBack> CallBackClientRelation = new Dictionary<int, IServerNotificationsCallBack>();
    }
}
El siguiente paso es crear un archivo ServerNotifications.cs que implemente la interfaz IServerNotifications.
namespace AreaTicServer.Services.Duplex
{
[ServiceBehavior(InstanceContextMode= InstanceContextMode.PerCall)]
public class ServerNotifications : IServerNotifications
{
  #region Miembros de IServerNotifications

   public void SubscripcionListaNotificaciones(int pIdCliente)
   {
     try
     {
      // Guardamos la referencia de callback en un lista persistente para utilizarla cuando sea necesario.

        if (!GestionCallBackClientes.CallBackClientRelation.ContainsKey(pIdCliente))
        {
          GestionCallBackClientes.CallBackClientRelation.Add(pIdCliente, OperationContext.Current.GetCallbackChannel<IServerNotificationsCallBack>());
        }
     }
     catch (Exception ex)
     {
       throw ex;
     }
  }

  #endregion
 }
}
En cualquier punto de la solución servidor podríamos usar el diccionario del siguiente modo para devolver información al cliente que creamos oportuno. Por ejemplo, vamos a ver como le pasaríamos una lista de notificaciones al cliente con id 2.
public void Evento()
{
  List<Notification> notificaciones = new List<Notification>();

  notificaciones.Add(new Notification(){ CodigoUsuario = 2, Detalle = "Se ha producido un evento en servidor que podría afectarle",Tipo=NotificationType.TipoNotificacion1});

 GestionCallBackClientes.CallBackClientRelation[2].RecibeNotificaciones(notificaciones);

}
Por último veremos como configurar el binding/endpoint para nuestro servicio por código que hemos de asegurarnos que se ejecute al iniciar la aplicación o web (la alternativa es añadir la configuración en app.config/web.config del proyecto).
mHost = new ServiceHost(typeof(IServerNotifications));
mHost.AddServiceEndpoint(typeof(IServerNotifications), new WSDualHttpBinding(), "http://personalizarURL:2100");
Hasta aquí el ejemplo de hoy, la semana que viene veremos como implementar la parte dúplex en cliente que se suscribirá al servicio de notificaciones y gestionaremos el callBack en caso de que nos llegue una lista de notificaciones procedentes del servidor. Os recordamos que podéis seguir

areaTIC

en las redes sociales!


lunes, 17 de diciembre de 2012

SQL Server: Cómo saber si hay tablas sin índice cluster en una base de datos

Si habitualmente realizas trabajos de DBA sobre una base de datos SQL Server con un número de tablas considerable y no eres el único que realiza este tipo de trabajos seguro que te has preguntado alguna vez, ¿todas mis tablas tienen definido un índice cluster?

Lo primero, recordar qué es un índice cluster (o agrupado), es un índice que almacenan ordenadas las filas de una tabla de acuerdo a los valores de la clave del índice. Varias consideraciones sobre los índices cluster:
  1. Sólo puede haber como máximo un índice cluster por tabla ya que las filas de una tabla sólo pueden almacenarse ordenadas de una única forma.

  2. Normalmente y salvo excepciones todas las tablas que definamos en una base de datos deberían incluir un índice clúster.

  3. En SQL Server cuando se crea una restricción PRIMARY KEY se crea automáticamente un índice único en las columnas de ésta. De forma predeterminada, este índice es cluster pero puede cambiarse a no cluster al crear la restricción.

  4. Es habitual que las columnas sobre las que se define un índice cluster participen en cláusulas JOIN, ORDER BY o GROUP BY. En el caso de las cláusulas ORDER BY o GROUP BY puede evitar que el motor de base de datos ordene los datos ya que las filas ya se encuentran ordenadas, por tanto, el rendimiento de las consultas aumenta.

  5. La estructura que SQL Server utiliza para construir y gestionar los índices son los árboles balanceados (balanced tree, B-tree). Quizás en un próximo artículo hable sobre este tema, de momento no entraremos en más detalle.

Bien, ahora que ya hemos refrescado el concepto de índice cluster vamos al tema, la siguiente consulta nos indica las tablas sin índice cluster que hay en una base de datos:

-- Buscar tablas sin índice cluster en base de datos
SELECT OBJECT_NAME(OBJECT_ID) as TableName
FROM SYS.INDEXES
WHERE INDEX_ID = 0
AND OBJECTPROPERTY(OBJECT_ID,'IsUserTable') = 1
ORDER BY TableName

A continuación os detallo cómo se ha construido la consulta anterior:
  • La instrucción OBJECT_NAME de Transact SQL devuelve el nombre del objeto para los objetos de ámbito de esquema a partir de un identificador proporcionado. Podéis encontrar más información sobre esta instrucción en el siguiente enlace del MSDN (OBJECT_NAME).

  • La instrucción OBJECT_ID de Transact SQL devuelve el número de identificador de un objeto de ámbito de esquema.Podéis encontrar más información sobre esta instrucción en el siguiente enlace del MSDN (OBJECT_ID).

  • La vista SYS.INDEXES contiene una fila para cada índice cluster, para cada índice no cluster y para cada tabla que no tiene definido un índice cluster. Es recomendable utilizar esta vista en lugar de la tabla SYS.SYSINDEXES que se mantiene por compatibilidad con SQL Server 2000 pero que desaparecerá en futuras versiones de SQL Server. Podéis encontrar más información sobre este tema en el siguiente enlace del MSDN (SYS.INDEXES).

  • La columna "INDEX_ID" de la vista SYS.INDEXES contiene los valores 0 (tabla sin índice cluster), 1 (índice cluster) y > 1 (índice no cluster). Cambiando el valor de este campo se puede obtener distinta información, no sólo las tablas sin índice cluster, interesante.

  • La instrucción OBJECTPROPERTY de Transact SQL devuelve información acerca de los objetos de ámbito de esquema. Para obtener el nombre del esquema en la consulta anterior necesitaremos utilizar la propiedad "SchemaId". Podéis encontrar más información sobre esta instrucción en el siguiente enlace del MSDN (OBJECTPROPERTY).

Espero que el artículo os haya sido interesante, dentro de

areaTIC

puedes encontrar otros artículos, no dudes en consultar nuestro archivo; también puedes seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...)


LECTURAS RELACIONADAS RECOMENDADAS POR AREATIC.NET

sábado, 15 de diciembre de 2012

SQLite, ejemplo sobre cómo hallar la ruta física de una base de datos en Google Chrome

Como vimos en este artículo,

SQLite

es una técnica de almacenamiento que soportan la mayoría de navegadores actuales y se está extendiendo su uso considerablemente en varios ámbitos.

Por defecto los navegadores no incorporan un administrador para esta base de datos si no que lo hacemos todo vía

Javascript

, desde la creación del esquema a la gestión de la información. Existen herramientas, gratuitas y de pago que permiten trabajar a nivel visual con la base de datos pero por norma general esto funciona de modo que abres el administrador y tienes que apuntar al fichero de base de datos. Bien, entonces nos preguntamos ¿dónde almacena el navegador físicamente la información de la base de datos?

A continuación veremos como localizar el archivo que contiene la información de nuestra base de datos en Google

Chrome

.

En un sistema operativo Windows,

Chrome

gestiona las bases de datos a nivel de usuario. Por tanto hemos de situarnos en la siguiente carpeta:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\databases
Usaremos SQLiteManager, que es uno de muchos administradores para

SQLite

que podemos encontrar por internet. Es de pago, pero la versión gratuita permite realizar lo básico y nos servirá para este ejemplo.

Si no hemos creado ninguna base de datos es posible que no veamos la carpeta databases, en todo caso podemos crear una base de datos con el siguiente código javascript.
db = openDatabase('ejemploareatic', '1.0', 'ejemploareatic', 20 * 1024 * 1024, null);
Una vez ejecutado el script si vamos a la ruta anterior deberíamos ver un archivo databases.db que podemos abrir con SQLiteManager y realizar la siguiente consulta SQL.
SELECT * FROM Databases WHERE name =  'ejemploareatic'

Chrome

, nombra al fichero físico con el id y organiza los archivos por nombre de host que ha ejecutado el script. En mi ejemplo tengo que buscar un fichero en la carpeta databases con nombre de archivo "25" en una carpeta "http_localhost:53610" o similar (es la url desde la cual he ejecutado el script).


Hacemos botón derecho sobre el archivo "25", "Abrir con...", seleccionamos SQLiteManager y ya accederíamos a la base de datos que acabamos de crear... podríamos gestionar el esquema de la base de datos o trabajar a nivel visual con la información de las tablas. Espero os sea de utilidad. Recordar que podéis seguir

areaTIC

en la redes sociales.


martes, 11 de diciembre de 2012

ITIL: Herramientas comerciales

En el artículo de la semana pasada os hacía una relación de herramientas

open source

que implementan las recomendaciones de

ITIL

, en el artículo de hoy os enumero algunas de las herramientas

comerciales

que más se comentan en los círculos en los que me muevo, simplemente son unas cuantas, ni mejores ni peores. Igual que en el artículo anterior las enumero alfabéticamente y ya sabéis, cualquier aportación que hagáis al respecto será bien recibida por los lectores de este blog. Os enumero algunas:
  1. Sin duda alguna

    BMC Remedy

    es una de las herramientas más potentes y completas que existen, os podéis hacer una idea viendo en cualquier web especializada las ofertas de empleo de programadores en

    Remedy

    .


    Dispone de funcionalidades como gestión de activos, del cambio, de la cadena de suministros, de servicios, CMDB, cuadros de mando,... en la web de BMC Remedy podeis encontrar más detalles sobre el producto, descargaros una versión de evaluación de 30 días, casos de éxito, gran cantidad de documentación... muy completa, la verdad. Para acabar este breve resumen, destacar que la herramienta se ofrece tanto en propiedad como en modalidad

    SaaS

    .

  2. De origen francés

    EasyVista 2012

    es otra herramienta que implementa las recomendaciones de

    ITIL

    . Dispone de funcionalidades como gestión de activos, creación automática del inventario, gestión del servicio, gestión del cambio, gestión financiera, cuadros de mando, gestión de proyectos,.... En la web de EasyVista podéis encontrar información del producto así como solicitar una demo (previa introducción formulario de contacto), vídeos,... Destacar que

    EasyVista 2012

    se puede tener también en propiedad o contratar en modalidad

    SaaS

    .


    Curiosamente uno de las empresas implantadoras de

    EasyVista

    en España es Exevi que da la casualidad, si no ando equivocado, que es el único asociado en España de OTRS (que mencioné la semana pasada en el artículo de herramientas ITIL open source). Así que ya tenéis un único distribuidor que implanta una herramienta

    comercial

    y otra

    open source

    , en el caso que estéis interesados seguro que os puede decir ventajas y desventajas de cada una de ellas.

  3. He estado dudando mucho si incluir a

    MS System Center 2012

    en esta lista o no, de hecho, todavía sigo dudando... la verdad es que

    MS System Center 2012

    no es una herramienta creada para la implantación de procesos siguiendo las recomendaciones de

    ITIL

    sino que está pensada para ayudar a administrar entornos de TI, captura conocimientos acerca de los sistemas, las políticas, los procesos y mejores prácticas, optimizando infraestructuras, permitiendo reducir costes y mejorarando la disponibilidad y prestación de servicios. Por lógica, cumple con algunas recomendaciones de

    ITIL

    pero no está creado en torno a ello. Por tanto no entraré en más detalles, si queréis más información podéis acceder a la web de

    MS System Center 2012

    .

  4. Particularmente

    ServiceDesk Plus

    es una de las herramientas que más me gusta, dispone de numerosas funcionalidades como gestión de activos, gestión de incidencias, gestión de problemas, CMDB, portal del usuario, gestión de contratos, catálogo de servicios, gestión de cambios, creación automática de inventario, gestión de activos de software,... En la web de

    ServiceDesk Plus

    podéis encontrar información detallada sobre el producto.


    Es importante destacar que hay disponible en este enlace una versión demo online de

    ServiceDesk Plus

    donde puedes entrar como técnico o como usuario. Hay diferentes versiones disponibles según las funcionalidades que se incluyen... destacar que la versión Standard hasta 5 técnicos es gratuita (portal de usuario, gestión de SLAs,... pero no dispone de gestión de activos, incidencias, problemas, CMDB...). Además

    ServiceDesk Plus

    se puede tener en propiedad o contratar en modalidad

    SaaS

    .

  5. De origen israelí

    SysAid

    es otra herramienta que implementa las recomendaciones de

    ITIL

    , dispone de funcionalidades como portal de usuario, gestión de activos, cuadros de mando, gestión de SLAs, CMDB, gestión de cambios, gestión de problemas, integración mediante API,... En la web de

    SysAid

    podéis encontrar más información sobre el producto, versiones disponibles, documentación, tutoriales...


    En el siguiente enlace hay accesible una demo online de

    SysAid

    en la que podemos ver el funcionamiento de varios apartados: gestión de activos, gestión de incidencias, gestión de problemas, reports, CMDB,... La aplicación está disponible en diversos idiomas (inglés, francés, español, alemán, italiano, ruso, portugués,...); hay distintas versiones, entre ellas una gratuita limitada a 2 administradores, 100 activos y 100 usuarios.

Esta aquí la relación de distintas herramientas pero seguro que en algún momento os habéis (o deberíais haber) preguntado, ¿y qué dice

Gartner

sobre esto? Bien, en el siguiente enlace encontramos el

cuadrante mágico de Gartner para herramientas de gestión de servicios IT

. Si observáis el cuadrante con detalle:

  • Aparecen algunas de las herramientas que he mencionado como

    BMC Remedy

    o

    EasyVista

    .
  • No aparecen otras que he comentado como

    MS System Center 2012

    o

    SysAid

    .
  • Aparecen otras que no he comentado como

    Cherwell Service Management

    ,

    HP Service Manager

    ,...
  • y por supuesto y muy importante los criterios de inclusión o exclusión de herramientas en el cuadrante.

Si estáis pensando seriamente en adquirir una herramienta comercial de este tipo os recomiendo que miréis con calma y atención el estudio de

Gartner

. Y hasta aquí el artículo de este martes, espero que os sea útil. Como siempre recordaros que dentro de

areaTIC

puedes encontrar otros artículos, no dudes en consultar nuestro archivo; también puedes seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...)


sábado, 8 de diciembre de 2012

Error durante la serialización o deserialización mediante JavaScriptSerializer de JSON. La longitud de la cadena supera el valor establecido en la propiedad maxJsonLength

Estamos realizando una llamada a un servicio web con

ASP.NET

que se encarga de devolver cierta información con codificación

Json

y recibimos el siguiente error:

Respuesta Json del servicio
{"Message":"Error durante la serialización o deserialización mediante JavaScriptSerializer de JSON. La longitud de la cadena supera el valor establecido en la propiedad maxJsonLength.","StackTrace":"   en System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)\r\n   en System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)\r\n   en System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   en System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

La solución a este problema es aumentar el valor por defecto del límite de elementos

json

que acepta el serializador que se usa en

.NET

. Para ello simplemente hemos de añadir el siguiente tag al archivo .config de nuestra aplicación.
  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="5000000"/>
      </webServices>
    </scripting>
  </system.web.extensions>
Hasta aquí el post de hoy, recordar que podéis seguir

areaTIC

en la redes sociales!


martes, 4 de diciembre de 2012

ITIL: Herramientas open source

Si estamos pensando en la implantación de procesos siguiendo las recomendaciones de

ITIL

en nuestra organización una de las primeras preguntas que nos haremos es ¿existen en el mercado

herramientas

que me ayuden? La respuesta es sí, por supuesto... ¿

open source

o comerciales? Ambas, cada una con sus pros y sus contras... no entraremos en este artículo a decantarnos por unas u otras ni a entrar en detalle de ninguna de ellas, simplemente, como cualquier interesado en implantar

ITIL

en su organización estoy mirando distintas alternativas y aquí os enumero las

open source

más interesantes que he encontrado y que he visto que destacaban distintos usuarios de blogs y foros.

Os hago una enumeración (por orden alfabético) y una breve descripción de cada una de ellas, son todas las que están pero por supuesto no están todas las que son... cualquier aportación será bien recibida por los seguidores de este blog.
  1. CMDBuild

    es una

    herramienta open source

    que implementa las recomendaciones de

    ITIL

    y que se distribuye bajo licencia GPL (GPU Public License). Nos permite gestionar el inventario, relacionar elementos del mismo, almacenar documentos (contratos, notas, manuales,...), programar tareas de mantenimiento para los operadores, multidioma,...

    En la web cmdbuild.org podéis encontrar más información sobre

    CMDBuild

    : capturas de pantalla, videos de demostración (en italiano),... pero no dispone de una demo on line. En la siguiente URL podéis descargaros la última versión y ver los requisitos necesarios en cuanto a hardware y software. La empresa Tecnoteca que mantiene el proyecto

    CMDBuild

    ofrece también soporte comercial.

  2. GLPI

    es otra

    herramienta open source

    de inventario de activos TI (servidores, PCs, impresoras, software,...) con funcionalidades de gestión de los mismos (problemas, incidencias, proveedores, presupuestos contratos...). Podéis encontrar más información en la web de GLPI; también podéis acceder a una versión demo on line. La aplicación es multidioma pero la demo está en inglés... eso dice en la web pero si pruebas con los usuarios admin_es y normal_es podrás acceder en español.


    Es integrable con OCS Inventory (

    herramienta open source

    de creación automática de inventarios de hardware, escaneo de red y distribución de paquetes de software). Podéis acceder a una demo on line a través del siguiente enlace.


  3. GMF

    es una

    herramienta open source

    que implementa las recomendaciones de

    ITIL

    y que se distribuye bajo licencia GPL (GPU Public License). Incluye módulos de gestión de incidencias, gestión de inventario, gestión del cambio...

    En la web genos.org podéis encontrar más información sobre

    GMF

    , también hay una demo on line disponible en el siguiente enlace donde podréis ver la herramienta según distintos perfiles; importante destacar que para ver la demo on line necesitaréis que vuestro navegador sea IE o Firefox, no funciona con Chrome u otros.


  4. iTOP

    es otra

    herramienta open source

    que implementa las recomendaciones de

    ITIL

    . Nos permite gestión del inventario, gestión de incidencias, gestión del cambio, gestión del servicio (SLAs, contratos con clientes y proveedores,...), importación de datos a partir de ficheros CSV, cuadros de mando...

    En la web de iTop podéis encontrar más información, también hay una demo on line disponible en el siguiente enlace donde podréis ver la herramienta según distintos perfiles: administrador, operador y portal de usuario.


  5. OneCMDB

    es una

    herramienta

    orientada a implementar

    ITIL

    en pequeña y mediana empresa. Nos permite realizar la gestión de activos así como sus relaciones. Dispone de una API que lo proporciona flexibilidad, creación automática de mapas de red, mecanismos de importación de datos, importación/exportación desde NAGIOS...

    En la web onecmdb.org podéis encontrar más información sobre

    OneCMDB

    : capturas de pantalla y un acceso a una demo on line... aunque si intentáis acceder veréis que no es posible.

  6. OTRS

    es una

    herramienta open source

    que incluye Help Desk, una solución para la gestión de servicios de IT compatible con

    ITIL

    , aplicación para iPhone. Por otro lado el grupo OTRS ofrece consultoría global, desarrollos a medida y servicios de soporte. En la web de OTRS podéis encontrar más información, también hay una demo on line disponible en el siguiente enlace donde podréis ver la herramienta según el perfil que acceda, realmente interesante. Destacar, según comentan en su web, que se integra fácilmente con

    SAP

    .


  7. Spiceworks

    es una

    herramienta open source

    de gestión, monitorización y resolución de problemas, creación automática de mapas de red, helpdesk (gestión de incidencias), inventario automático de hardware y software (gestión de licencias...), gestión de compras TI,... Puedes acceder a la web de SpiceWorks para descargarla, ¿una pega? Tiene publicidad incrustada.


Y hasta aquí el artículo de este martes, espero que os sea útil pero... el próximo martes... llega el turno de las herramientas comerciales que implementan

ITIL

, no os lo perdáis. Como siempre recordaros que dentro de

areaTIC

puedes encontrar otros artículos, no dudes en consultar nuestro archivo; también puedes seguirnos por RSS o las principales redes sociales (twitter, facebook, linkedin...)