jueves, 30 de octubre de 2008

NUEVO LOGO MICROSOFT .NET


Microsoft ha anunciado un nuevo logo para .Net



Ya viene C# 4.0 y Asp.NET

sábado, 18 de octubre de 2008

Microsoft Student 2 Bussiness



Microsoft encabeza una iniciativa llamada S2B Microsoft Student To Bussiness en la que busca conectar a los estudiantes con sus socios de negocios y asi brindarles una mejor oportunidad de futuro.

jueves, 16 de octubre de 2008

Recolección de Datos

Recolección de Datos
En el trabajo diario de los desarrolladores de software existe la necesidad de manejar mucha información y para cubrir esta necesidad .Net Framework provee una serie de clases especializadas para almacenar y recibir información. Este tipo de clases son conocidas como Colecciones.

Estas clases proveen soporte para manejar las pilas, colas, listas y tablas hash. La mayoría de las clases aplican las mismas interfaces, y estas interfaces pueden ser heredadas para crear nueva colección que se ajusten a las clases más especializadas y necesidades de almacenamiento de datos que se tenga.

Características de las Colecciones:
· Las Colecciones pertenecen al espacio de nombre System.Collections y las colecciones genéricas incluidas en el .NET Framework 2.0, están contenidas en System.Collections.Generic
· La mayoría de las colecciones implementan las interfaces ICollection, IEnumerable, IList, IDictionary and IDictionaryEnumerator y las colecciones genéricas implementan la interfaces genéricas correspondientes.
Las colecciones pueden ser accedidas por índices de la misma manera que se utilizan los arrays.
Lista[0]… Lista[1]…

Otras colecciones permiten que puedan ser accedidas por nombre de los elementos.
Lista[“Name”]… Lista[“Cliente”]…
Listados de Colecciones.


ArrayList

Lista Simple. AutoCrecimiento. Accedida por Indices.

SortedList

Coleccion ordenada accedida por Nombre.

Queue

Lista Fifo – Primero en Entrar Primero en Salir.

Stack

Lista Lifo. Ultimo en entrar Primero en salir.

Hashtable

Lista de tipo Name/Value que puede ser accedida por nombre e índice.
BitArray

Lista compacta de valores Boléanos.

StringCollection

Lista simple de Cadenas de Carecteres (String). Accedida por Indices.

StringDictionary

Lista de tipo Name/Value de objetos de tipo String. puede ser accedida por nombre e índice.

ListDictionary

Lista eficiente para manejar listas pequeñas de objetos.

HybridDictionary

Es una lista inteligente que utiliza ListDictionary cuando la lista es pequeña y se convierte a HashTable cuando la lista crece.

NameValueCollection

Lista de tipo Name/Value de objetos de tipo String. puede ser accedida por nombre e índice.



Utilizando La Clase ArrayList.
La clase ArrayList es sencilla de usar. Es una lista no organizada de objetos de cualquier tipo.
Esta clase soporta 2 metodos de agregar objetos a la lista. A través de Add y AddRange.
Add: Permite Agregar un solo elemento a la lista. Se puede utilizar para agregar cualquier objeto .NET a la lista.
ArrayList ListaDeObjetos = new ArrayList(); //Creo una Lista de Tipo ArrayList

Persona Francis = new Persona(); //Creo un Objeto Persona
ListaDeObjetos.Add(Francis); // Agrego el objeto persona a la lista
ListaDeObjetos.Add(1); // Agrego un Entero.
ListaDeObjetos.Add("HOLA MUNDO"); //Agrego una Cadena de Carecteres.
ListaDeObjetos.Add(true); //Agrego un Boleano.
AddRange permite agregar mas de un elemento a la lista. Solo debemos declarar un arreglos de objectos o cualquier lista que implemente la collecion ICollection.
string[] Nombres = { "Evelin Guerra", "Lina Paola", "Camilo Nuñez" }; //Array de String
ListaDeObjetos.AddRange(Nombres);

Estos métodos permiten agregar elementos a la lista, pero los agregan al final de la lista. Si necesitamos incluir un elemento en una posición determinada debemos utilizar los métodos Insert e InsertRange.

ListaDeObjetos.Insert(1, "HOLA a Todos"); // Inserta un String en la posición 1(segundo lugar de la lista).
ListaDeObjetos.InsertRange(2, Nombres); // Inserta el array de string en la posicion 2(a partir del tercer Lugar.)

ArrayList permite organizar los elementos a través de su método Sort. Este método además tiene varias sobrecargas entre las cuales esta que recibe un objecto que implemente la interfaz IComparer para organizar los elementos en base a este.
ListaDeObjetos.Sort(); //Organiza los Elementos de menor a mayor

Para organizar elementos siguiendo algún criterio solo debemos crear el objeto que herede de IComparer:



(Tomado del Libro Self-Paced Training Kit 70-536)
public class DescendingComparer : IComparer
{
CaseInsensitiveComparer _comparer = new CaseInsensitiveComparer();

public int Compare(object x, object y)
{
// Invertir la tendencia a la comparación de objetos
// Se obtiene comparación Inversa.
return _comparer.Compare(y, x);
}
}

Después de haber creado el objeto solo debemos invocar el método Sort pasando como parámetro este objeto de este tipo.
ListaDeObjetos.Sort(new DescendingComparer());


















ANEXOS
Conociendo IList, IDictionary, ICollections,
Tomado de MSDN
IList (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.ilist(VS.80).aspx
IList es un descendiente de la interfaz ICollection y es la interfaz base de todas las listas no genéricas. Las implementaciones de IList se dividen en tres categorías: sólo lectura, tamaño fijo y tamaño variable. Una interfaz IList de sólo lectura no se puede modificar. Una interfaz IList de tamaño fijo no permite agregar o eliminar elementos, pero sí modificar elementos existentes. Una interfaz IList de tamaño variable permite agregar, quitar y modificar elementos.
Representa una colección de objetos no genéricos a los que se puede obtener acceso por índice.
Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.IList.

Propiedades públicas

Nombre
Descripción
IsFixedSize
Obtiene un valor que indica si la interfaz IList tiene un tamaño fijo.
IsReadOnly
Obtiene un valor que indica si la interfaz IList es de sólo lectura.
Item
Obtiene o establece el elemento que se encuentra en el índice especificado.
Arriba
Métodos públicos

Nombre
Descripción
Add
Agrega un elemento a IList.
Clear
Quita todos los elementos de IList.
Contains
Determina si IList contiene un valor específico.
IndexOf
Determina el índice de un elemento específico de IList.
Insert
Inserta un elemento en IList, en el índice especificado.
Remove
Quita la primera aparición de un objeto específico de IList.
RemoveAt
Quita el elemento de IList en el índice especificado.



IDictionary (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.idictionary_members(VS.80).aspx
Representa una colección no genérica de pares de clave y valor.
Cada par debe tener una clave única. Las implementaciones pueden variar en si permiten que la clave sea referencia de objeto null (Nothing en Visual Basic). El valor puede ser referencia de objeto null (Nothing en Visual Basic) y no es necesario que sea único. La interfaz IDictionary permite enumerar las claves y valores incluidos, pero esto no implica un criterio de ordenación determinado.
Las implementaciones de IDictionary se dividen en tres categorías: de sólo lectura, de tamaño fijo y de tamaño variable. Un objeto IDictionary de sólo lectura no se puede modificar. En un objeto IDictionary de tamaño fijo no se pueden agregar ni quitar elementos, pero sí modificar los existentes. Un objeto IDictionary de tamaño variable permite agregar, quitar y modificar elementos.
La instrucción foreach del lenguaje C# (for each en Visual Basic) requiere el tipo de cada elemento de la colección. Como los elementos del objeto IDictionary son pares de clave y valor, el tipo del elemento no se corresponde con el tipo de la clave ni con el del valor. En su lugar, el tipo del elemento es DictionaryEntry. Por ejemplo:
Propiedades públicas

Nombre
Descripción
IsFixedSize
Obtiene un valor que indica si el objeto IDictionary tiene un tamaño fijo.
IsReadOnly
Obtiene un valor que indica si el objeto IDictionary es de sólo lectura.
Item
Obtiene o establece el elemento con la clave especificada.
Keys
Obtiene un objeto ICollection que contiene las claves del objeto IDictionary.
Values
Obtiene un objeto ICollection que contiene los valores del objeto IDictionary.
Métodos públicos

Nombre
Descripción
Add
Agrega un elemento con la clave y el valor proporcionados al objeto IDictionary.
Clear
Quita todos los elementos del objeto IDictionary.
Contains
Determina si el objeto IDictionary contiene un elemento con la clave especificada.
GetEnumerator
Devuelve un objeto IDictionaryEnumerator para el objeto IDictionary.
Remove
Quita el elemento con la clave especificada del objeto IDictionary.




ICollection (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.icollection(VS.80).aspx
Define el tamaño, los enumeradores y los métodos de sincronización para todas las colecciones no genéricas.
La interfaz ICollection es la interfaz base para las clases del espacio de nombres System.Collections.
La interfaz ICollection amplía IEnumerable; IDictionary e IList son interfaces más especializadas que amplían la interfaz ICollection. Una implementación de IDictionary es una colección de pares de clave y valor, como la clase Hashtable. Una implementación de IList es una colección de valores y el índice, como la clase ArrayList, puede obtener acceso a sus miembros.
Algunas colecciones que limitan el acceso a sus elementos, como la clase Queue y la clase Stack, implementan directamente la interfaz ICollection.
En caso de que ni la interfaz IDictionary ni la interfaz IList cumplan los requisitos de la colección requerida, la nueva clase de colección se deriva de la interfaz ICollection para una mayor flexibilidad.
Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.ICollection.
Las siguientes tablas recogen los miembros expuestos por el tipo ICollection .
Propiedades públicas

Nombre
Descripción
Count
Obtiene el número de elementos incluidos en ICollection.
IsSynchronized
Obtiene un valor que indica si el acceso a ICollection está sincronizado (es seguro para la ejecución de subprocesos).
SyncRoot
Obtiene un objeto que se puede utilizar para sincronizar el acceso a ICollection.

Métodos públicos

Nombre
Descripción
CopyTo
Copia los elementos de la interfaz ICollection en un objeto Array, a partir de un índice determinado de la clase Array.

miércoles, 1 de octubre de 2008

Proceso de compilación en .Net Framewrok

Un compilador es la pieza base a la hora de desarrollar un programa. Hay compiladores para todos los lenguajes y su función es traducir un programa escrito en un determinado lenguaje a un idioma que el computador entienda. De esta manera el compilador se convierte en un traductor, el cual es un programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto.

Compilación a código intermedio: Este tipo de compilación es la encargada de traducir desde el código fuente del programador a un lenguaje intermedio independiente de la plataforma.
Compilación JIT (Just In Time) a código nativo: En este paso, el código intermedio es traducido a código nativo específico de cada plataforma.
La función de este tipo de compiladores es traducir el código que el programador escribe en cualquiera de los lenguajes soportados por el CLR (Common Language Runtime) a un Lenguaje Intermedio estándar (LI). Este lenguaje es un lenguaje independiente de la plataforma.

Escrito el código fuente, las diferencias de implementación desaparecen en el momento en que entra en funcionamiento el CLR. Para que no haya ningún problema en la interacción de lenguajes, los distintos tipos de lenguajes tienen que seguir unas pautas establecidas en él.

Cuando un compilador genera código intermedio, también genera a su vez metadatos. Los metadatos es información que el CLR va a utilizar a en tiempo de ejecución, como puede ser, por ejemplo, la definición de tipos que hay en el código. Estos metadatos, junto con el código intermedio se almacenan en un fichero PE (Portable Executable). Una de las ventajas de este tipo de ejecutable es que al almacenar los metadatos y el código intermedio juntos, el código se describe así mismo, con lo cual ya no es necesario, por ejemplo tener IDLs (Interface Definition Language).

Todas las herramientas de desarrollo generan el mismo IL, independientemente del lenguaje en el que se instala junto con el Framework. Esta herramienta nos permite, entre otras cosas, ver cómo está formado este tipo de ficheros, ver qué código intermedio ha generado cada función escrita y muchas otras cosas interesantes. Podemos encontrar un tutorial dentro de la documentación del Framework.

La especificación de este IL es abierta, con lo cual cualquiera que lo desee puede construir su propio compilador a código intermedio compatible con el CLR.
Una vez que se ha realizado un programa y se ha compilado con los compiladores que ofrece la plataforma, el código resultante no se puede ejecutar directamente sobre la máquina, ya que lo que contienen es código intermedio. Para poder ser ejecutados, necesitan previamente pasar por un compilador JIT.
En primer lugar, aclarar lo que significa JIT. Estas siglas pertenecen a Just-In-Time, nombre que recibe este tipo de compilación debido a que se realiza en tiempo de ejecución.

Antes de que el código intermedio anteriormente generado sea ejecutado, debe ser convertido por el JIT en código nativo, esto es, código que pueda entender el computador. Este código es específico para cada arquitectura y lo que le proporciona a .NET independencia de la plataforma, con lo cual, nosotros escribimos el mismo código independientemente de la arquitectura en la que se vaya a ejecutar.

No obstante esto no es siempre necesario, ya que para cierto tipo de aplicaciones, puede resultar ineficiente y hay opciones que permiten que la compilación JIT sólo se realice una única vez cuando la aplicación es instalada en la máquina (compilación en tiempo de instalación) y el código nativo quede almacenado en el sistema, al igual que ocurre con las aplicaciones no pertenecientes a .NET. Esto se hace mediante la herramienta Ngen.exe, en línea de comandos y es el generador de imágenes nativas.

Una de las ventajas de la compilación just-in-time es que no compila todo nada más llamar al ejecutable, esto es, en vez de convertir todo el fichero PE (ver Compiladores de Lenguaje Intermedio) a código nativo, va convirtiendo el código intermedio que vaya necesitando, ahorrando así tiempo y recursos. Además, el código que ya se ha traducido, es almacenado para llamadas posteriores.

En la etapa de generación de código nativo a partir de código intermedio, también tiene lugar un proceso de verificación (siempre va a suceder a menos que el administrador del sistema indique lo contrario). La verificación comprueba el código intermedio y los metadatos para comprobar si el código puede ser considerado como “seguro” (accede únicamente a aquellas direcciones de memoria que puede acceder). No obstante, no todos los lenguajes soportan la generación de código seguro (por ejemplo C++ con los punteros). Si las políticas de sistema requieren la ejecución de código seguro, se lanzará una excepción a la hora de ejecutar dicho código.




Escrito por:
Evelin Guerra Pamplona
MSP-República Dominicana

Descargar artículo

lunes, 22 de septiembre de 2008

.NET FrameWorks Fundamentals

El .NET Framework es un componente de software basado en un nuevo entorno de ejecución manejado. El cual provee soluciones de pre codificadas – (Base Class Library – Libraría de Clase Base) para requerimientos comunes de los programas y es gestiona la ejecución de dichos programas. Proveyéndole una serie de Servicios sin importar el lenguaje en el cual se codifico el programa.

sábado, 6 de septiembre de 2008

Atributos en .NET Framework

Atributos

Los Atributos son una ponderosa herramienta para asociar el código, ya sea, Tipos, Métodos, propiedades con información declarativa, que puede ser consultada en tiempo de ejecución a través de Reflection.
Más información.

Descargue un ejemplo de codigo Aqui

viernes, 5 de septiembre de 2008

Fundamentos de gestión de proyectos

En este artículo encontrarás aspectos muy importantes que debes tener en cuenta cuando te encuentres gestionando un proyecto de software. Más información.

jueves, 4 de septiembre de 2008

Eventos en .Net Framework

Los Eventos habilitan a una clase u objeto con la capacidad de notificar otras clases u objetos cuando algo de interés ha ocurrido. La clase que produce el evento envía (o dispara) el evento el cual es llamado y publicado a todas las clases que estas suscritas o manejan estos eventos. Más información.


Código de Ejemplo de Eventos.
Para descargar un pequeno ejemplo, pulse aqui.