April 2006 - Posts

SharePoint, Ineta, Culiminis
20 April 06 03:57 AM | mmonterroca | 1 comment(s)

Hace tiempo, Intellekt realizo una instalación de sharepoint portal Server en IPADE, y precisamente ahí es donde trabaja Luis Du Solier G, un MVP en SharePoint, le hicieron una entrevista para TechNet, vale la pena darle una leída y ver como se pueden resolver los constantes problemas de colaboración con un producto como SharePoint, además, Luis es director en México para CULMINIS, el cual es un grupo de apoyo para las comunidades de IT, algo similar a lo que es INETA para las comunidades de desarrollo.

 

Hablando de las comunidades de desarrollo, al parecer ya está confirmada la visita del Guille para el próximo 16 de mayo, aún está por confirmarse el lugar y horario, pero al parecer ya es un hecho, los mantendré al tanto. Como parte de la gira INETA 2006 se estarán visitando diferentes plazas, al parecer si me es posible estaré visitando puebla y Aguascalientes, una vez que tenga confirmada la fecha se las haré saber.

Arquitectura de clases I
11 April 06 03:10 AM | mmonterroca | 2 comment(s)
 

Siguiendo el excelente ejemplo que puso Rocky de su arquitectura de clases propuesta, les voy mostrar la arquitectura de clases que estoy proponiendo para un nuevo proyecto que estamos desarrollando para una empresa de prestamos monetarios $$$$$ :D

 

Al referirnos a un  ensamblado DAL (Capa de acceso a datos) tiene que ver invariablemente con acceso a datos relacionado con una arquitectura basada en capas (al menos las 3 capas básicas Presentación, Reglas de negocio y Acceso a Datos)

 

 

Las acciones a ejecutar dentro de nuestro DAL normalmente siempre son las mismas, Agregar, Eliminar y Consultar registros, entonces, al ser acciones repetitivas, por que no crear una interface y con esto, crear un "contrato" común para todas nuestras clases, en este caso, por motivos que mas adelante les contare decidí crear una clase abstracta que implemente dichas opciones comunes:

 

public abstract class Entidad

{

#region "Métodos protegidos"

protected string nombre;

protected bool estatus;

#endregion

 

#region "Propiedades virtuales"

public virtual int Id

{

get { return id; }

set { id = value; }

}

 

public virtual string Nombre

{

get { return nombre; }

set { nombre = value; }

}

 

public virtual bool Estatus

{

get { return estatus; }

set { estatus = value; }

}

#endregion

 

#region Métodos virtuales

public virtual bool Agregar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual bool Actualizar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual bool Eliminar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual System.Data.DataSet Consultar()

{

throw new Exception("The method or operation is not implemented.");

}

#endregion

}

 

La mayoría de nuestras clases tienen que ver con catálogos ¿cierto? Pues en este caso, la clase abstracta además de darnos las acciones comunes también nos provee los elementos más comunes de un catalogo:

 

  • Id
  • Nombre
  • Estatus

 

Al crear una clase abstracta tenemos la posibilidad de crear una clase parcialmente implementada, ya que como pueden ver en el ejemplo anterior, existe la propiedad Nombre que está 100% implementada, sin embargo, los métodos Agregar, Actualizar, Eliminar y Consultar no tienen implementación real (lo cual nos da una clase parcialmente implementada), entonces, si no tienen implementación por que no marcarlos como abstract en lugar de virtual, básicamente, en mi caso es cuestión de "comodidad"  ya que al marcarla como abstract me obliga a realizar la implementación completa de dichos métodos aún cuando no los necesite, es decir, si la clase que estoy implementando únicamente es de consulta, lo métodos de Agregar, Actualizar etc no los necesito y por ende lo único que harían seria lanzar una excepción, al marcarla como virtual esto no sucede, ya que el código que se ejecutara al no estar implementado será el de la clase base con lo cual me "ahorro" el tener que estar implementando lo mismo para las clases que no implementen todos los métodos. Quedara más claro cuando ya veamos el ejemplo implementado.

 

Ok, en este punto ya tenemos nuestra clase base ¿Qué falta? Pues las clases que implementaran ahora si el código especifico, diría Ernesto, la carnita :D, siguiendo el ejemplo de Rocky, creare una clase llamada Banco y otra más llamada TipoCuenta

 

 

Clase Banco

 

public class Banco:Entidad

{

public override bool Agregar()

{

   //aquí va el código para agregar

}

 

public override bool Actualizar()

{

  //aquí va el código para actualizar

}

 

public override bool Eliminar()

{

  //aquí va el código para eliminar

}

 

public override System.Data.DataSet Consultar()

{

return Util.ObtenerCatalogo("Bancos");

}

}

 

 

Clase Tipo de Cuenta de solo consulta, no necesitamos los metodos agregar, eliminar etc.

 

public class TipoCuenta:Entidad

{

//Esta clase solo tiene implementado el método de consultar

public override System.Data.DataSet Consultar()

{

return Util.ObtenerCatalogo("TiposCuenta");

}

}

 

Mañana le seguimos y vemos el por que de estás implementaciones, creo que nos esperan varios post :D.

Arquitectura de clases parte I
11 April 06 03:03 AM | mmonterroca | 1 comment(s)
 

Siguiendo el excelente ejemplo que puso Rocky de su arquitectura de clases propuesta, les voy mostrar la arquitectura de clases que estoy proponiendo para un nuevo proyecto que estamos desarrollando para una empresa de prestamos monetarios $$$$$ :D

 

Al referirnos a un  ensamblado DAL (Capa de acceso a datos) tiene que ver invariablemente con acceso a datos relacionado con una arquitectura basada en capas (al menos las 3 capas básicas Presentación, Reglas de negocio y Acceso a Datos)

 

 

Las acciones a ejecutar dentro de nuestro DAL normalmente siempre son las mismas, Agregar, Eliminar y Consultar registros, entonces, al ser acciones repetitivas, por que no crear una interface y con esto, crear un "contrato" común para todas nuestras clases, en este caso, por motivos que mas adelante les contare decidí crear una clase abstracta que implemente dichas opciones comunes:

 

public abstract class Entidad

{

#region "Métodos protegidos"

protected string nombre;

protected bool estatus;

#endregion

 

#region "Propiedades virtuales"

public virtual int Id

{

get { return id; }

set { id = value; }

}

 

public virtual string Nombre

{

get { return nombre; }

set { nombre = value; }

}

 

public virtual bool Estatus

{

get { return estatus; }

set { estatus = value; }

}

#endregion

 

#region Métodos virtuales

public virtual bool Agregar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual bool Actualizar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual bool Eliminar()

{

throw new Exception("The method or operation is not implemented.");

}

public virtual System.Data.DataSet Consultar()

{

throw new Exception("The method or operation is not implemented.");

}

#endregion

}

 

La mayoría de nuestras clases tienen que ver con catálogos ¿cierto? Pues en este caso, la clase abstracta además de darnos las acciones comunes también nos provee los elementos más comunes de un catalogo:

 

  • Id
  • Nombre
  • Estatus

 

Al crear una clase abstracta tenemos la posibilidad de crear una clase parcialmente implementada, ya que como pueden ver en el ejemplo anterior, existe la propiedad Nombre que está 100% implementada, sin embargo, los métodos Agregar, Actualizar, Eliminar y Consultar no tienen implementación real (lo cual nos da una clase parcialmente implementada), entonces, si no tienen implementación por que no marcarlos como abstract en lugar de virtual, básicamente, en mi caso es cuestión de "comodidad"  ya que al marcarla como abstract me obliga a realizar la implementación completa de dichos métodos aún cuando no los necesite, es decir, si la clase que estoy implementando únicamente es de consulta, lo métodos de Agregar, Actualizar etc no los necesito y por ende lo único que harían seria lanzar una excepción, al marcarla como virtual esto no sucede, ya que el código que se ejecutara al no estar implementado será el de la clase base con lo cual me "ahorro" el tener que estar implementando lo mismo para las clases que no implementen todos los métodos. Quedara más claro cuando ya veamos el ejemplo implementado.

 

Ok, en este punto ya tenemos nuestra clase base ¿Qué falta? Pues las clases que implementaran ahora si el código especifico, diría Ernesto, la carnita :D, siguiendo el ejemplo de Rocky, creare una clase llamada Banco y otra más llamada TipoCuenta

 

 

Clase Banco

 

public class Banco:Entidad

{

public override bool Agregar()

{

   //aquí va el código para agregar

}

 

public override bool Actualizar()

{

  //aquí va el código para actualizar

}

 

public override bool Eliminar()

{

  //aquí va el código para eliminar

}

 

public override System.Data.DataSet Consultar()

{

return Util.ObtenerCatalogo("Bancos");

}

}

 

 

Clase Tipo de Cuenta de solo consulta, no necesitamos los metodos agregar, eliminar etc.

 

public class TipoCuenta:Entidad

{

//Esta clase solo tiene implementado el método de consultar

public override System.Data.DataSet Consultar()

{

return Util.ObtenerCatalogo("TiposCuenta");

}

}

 

Mañana le seguimos y vemos el por que de estás implementaciones, creo que nos esperan varios post :D.

PodCast de SuperNeurona
11 April 06 01:33 AM | mmonterroca | with no comments

Super!

Raul Guerrero saco un podcast completamente en español, la verdad le quedo excelente y pinta con tener muy buen contenido!

En este, su primer podcast, hace un resumen del DevDay que se realizo aqui en la cd de México, gracias por los comentarios que me tocan :D, tambien habla sobre la reunión pasada que tuvimos de la comunidad .Net tambien de la cd de México.

Buen trabajo Raul, espero que sea el primero de muchos!

Reunión Comunidad .Net D.F. Marzo
06 April 06 10:26 PM | mmonterroca | with no comments

El pasado 31 de marzo fue la primera reunión del año, si ya sé, un poco tarde pero como dice el refran, mas vale tarde que nunca, tuvimos muy buena asistencia y el nivel de las platicas estuvo muy bien, por mi parte di una platica de introducción a las nuevas caractetisticas de Asp.Net 2.0, pero, Octavio Tellis y Raul Guerrero se encargaron de hacer un resumen más profundo.

Si alguien está interesado en asistir a las reuiones de la comunidad, mandame un correo electronico a mmonterroca@neo-mx.com para ingresarlos a la base de datos para el envio de las invitaciónes, actualmente se planea que sean en Intersoftware, ubicados en el WTC el ultimo viernes de cada mes, esperamos contar con tu asistencia!

 

Referencias de presentaciones DevDays 2006
06 April 06 10:23 PM | mmonterroca | with no comments

Como les habia comentado, les los links de referencias en las presentaciones que dimos de los devdays, los links de la presentación de la platica de seguridad está un post abajo

 

Alta Productividad Construyendo Software de Calidad

http://www.microsoft.com/practices

WINFX

http://msdn.microsoft.com/windowsvista/
http://www.microsoft.com/expression

Windows Workflow Foundation

http://msdn.microsoft.com/workflow
http://www.WindowsWorkflow.net
http://www.WindowsWorkflow.net/Forums
http://msdn.microsoft.com/virtuallabs/windowsworkflow/

Introducción a Windows Communication Foundation

http://msdn.microsoft.com/virtuallabs/wcf

PROSOFT

http://www.kuali.com.mx/
http://www.software.net.mx
http://www.software.net.mx/desarrolladores/jornadas/temario.htm


Recursos para Desarrolladores

http://www.mslatam.com/latam/msdn/comunidad/dce2005/
http://msdn.microsoft.com/vstudio/express/
http://channel9.msdn.com/

Comunidades en México

DF (506) - 
http://groups.msn.com/Comunidad-NET-mx

Guadalajara (218) - http://groups.msn.com/Guadalajara-NET

Monterrey (783) - http://groups.msn.com/ComunidadNETMonterrey

Línea Yahoo (1524) - http://mx.groups.yahoo.com/group/grupovb/

Tijuana – (734) - http://groups.msn.com/Tijuana-NET

Aguascalientes – (365) - http://groups.msn.com/Comunidad-NetAguascalientes

Mérida – (116) - http://groups.msn.com/Aluxes-net

Toluca (10) - http://groups.msn.com/TolucaNET

Mexicali – ( 500) - http://groups.msn.com/Mexicali-NET

Cd. Juárez – (57) - http://groups.msn.com/Comunidad-NETdeJuarez

Puebla (209) - http://groups.msn.com/ComunidaddedesarrolladoresPuebla-NET

Zacatecas – (392) - http://groups.msn.com/barreteros-net