miércoles, 31 de octubre de 2007

Sistema de Archivos: Unidades de Disco

La clase DriveInfo nos brinda los elementos necesarios para poder acceder a la información de las unidades disponibles en nuestro sistema. esto incluye no solo los discos rigidos, sino las unidades de red que tengamos mapeadas, unidades extraibles, etc.-

Esta clase posee un único metodo estático (GetDrives()) el cual devuelve la lista de todas las unidades de nuestro sistema.

Las instancias de esta clase cuentan con las siguientes propiedades:
- AvailableFreeSpace: Retorna el espacio disponible de una unidad (en bytes). Puede diferir del valor retornado por TotalFreeSpace, dependiendo de las cuotas de discos.
- DriveFormat: Retorna el formato de la unidad tal como FAT32 o NTFS.
- DriveType: Retorna una enumeración (ver el ejemplo) para el tipo de la unidad (Fijo, Optico, Red, etc.)
- IsReady: Retorna el estado de la unidad. Especifica si la unidad esta lista para ser accedida (por ejemplo no es posible acceder a mi unidad de CD mientras escucho mi CD de musica)
- Name: El nombre de la unidad.
- RootDirectory: Retorna un objeto DirectoryInfo que representa el directorio raiz de la unidad.
- TotalFreeSpace: Retorna el total de espacio libre en la unidad (en bytes).
- TotalSize: Retorna el tamaño total de la unidad.
- VolumeLabel: Retorna o escribe una etiqueta para unidades que no sean de solo lectura (CD/DVD).

Veamos un ejemplo utilizando algunos de estos conceptos:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Exam70536.FileSystemTest
{
class Program
{
private const string HARD_DRIVES = "Unidades de Discos duros";
private const string NETWORK_DRIVES = "Unidades de Red";
private const string OPTICAL_DRIVES = "Unidades de CD/DVD";
private const string REMOVABLE_DRIVES = "Unidades Extraibles";
private const string LINE = "--------------------------------------------";

static void Main(string[] args)
{
ViewSystemDrives();
Console.ReadKey();
}

private static void ViewSystemDrives()
{
DriveInfo[] drives = DriveInfo.GetDrives();
List<DriveInfo> hardDrives = null;
List<DriveInfo> opticalDrives = null;
List<DriveInfo> netDrives = null;
List<DriveInfo> remDrives = null;

try
{
hardDrives = new List<DriveInfo>();
opticalDrives = new List<DriveInfo>();
netDrives = new List<DriveInfo>();
remDrives = new List<DriveInfo>();

foreach (DriveInfo drive in drives)
{
switch (drive.DriveType)
{
case DriveType.CDRom:
if (drive.IsReady)
opticalDrives.Add(drive);
break;
case DriveType.Fixed:
hardDrives.Add(drive);
break;
case DriveType.Network:
netDrives.Add(drive);
break;
case DriveType.NoRootDirectory:
break;
case DriveType.Ram:
break;
case DriveType.Removable:
remDrives.Add(drive);
break;
case DriveType.Unknown:
break;
default:
break;
}
}

Console.WriteLine(HARD_DRIVES);
Console.WriteLine(LINE);
foreach (DriveInfo hDrive in hardDrives)
{
Console.WriteLine("{0} Tamaño:{1}GB Espacio disponible:{2}GB",
hDrive.Name,
hDrive.TotalSize / 1024 / 1024 / 1024,
hDrive.AvailableFreeSpace / 1024 / 1024 / 1024);
}

Console.WriteLine();
Console.WriteLine(OPTICAL_DRIVES);
Console.WriteLine(LINE);
foreach (DriveInfo oDrive in opticalDrives)
{
Console.WriteLine("{0}", oDrive.Name);
}

Console.WriteLine();
Console.WriteLine(REMOVABLE_DRIVES);
Console.WriteLine(LINE);
foreach (DriveInfo rDrive in remDrives)
{
Console.WriteLine("{0}", rDrive.Name);
}

Console.WriteLine();
Console.WriteLine(NETWORK_DRIVES);
Console.WriteLine(LINE);
foreach (DriveInfo nDrive in netDrives)
{
Console.WriteLine("{0}", nDrive.Name);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

miércoles, 29 de agosto de 2007

ASP.NET AJAX Extensions: Introduccion

AJAX es un término genérico para definir una colección de tecnologías y procesos que podemos utilizar en nuestras aplicaciones web. ASP.NET AJAX es la implementación comenzada por Microsoft y que luego pasó a ser mantenida por una comunidad e incluye varios beneficios para los desarrolladores.

Muchos desarrolladores hemos encontrado un poco complicado crear aplicaciones con AJAX debido a la complejidad relacionada con JavaScript para implementar funcionalidad AJAX.

ASP.NET AJAX combina una extensa librería de código con una coleccion de componentes del lado del servidor que hacen la vida de los desarrolladores mucho mas simple y pueden ser utilizadas en nuestras aplicaciones AJAX-enabled. Algunos de los beneficios principales de la utilización de esta tecnología harán que nuestras aplicaciones web sean:

- Más dinámicas.
- Con mejores tiempos de respuesta.
- Más fáciles de utilizar.
- Más interesantes desde el punto de vista de usuario.
- Compatibles con la gran mayoria de los browsers.

Funcionalidad del lado del Cliente:
Del lado del cliente, ASP.NET AJAX provee un conjunto de archivos con código JavaScript conocidos como AJAX Library lista para ser agregada a nuestras aplicaciones web. Estos archivos. Estos archivos usan extensiones del lenguaje JavaScript para hacer posible que el código sea parecido a C#, incluyendo el uso de estructuras de Programación Orientada a Objetos (POO) . Esto nos permite a los desarrolles agregar codigo JavaScript a nuestras aplicaciones web de una forma mucho mas fácil. Además, esta librería trabaja con todos los browsers actuales liberando al desarrollador de la tediosa tarea de escribir código específico para cada browser.

Funcionalidad del lado del Servidor:
Para los desarrolladores ASP.NET 2.0 está disponible una serie de controles de servidor conocido como AJAX extensions, estos controles del lado del servidor permiten escribir muy pocas o ninguna linea de código JavaScript. Todos los controles de servidor generan el código JavaScript necesario. Algunos de estos controles conocidos como extenders afectan la funcionalidad o comportamiento de otros controles en vez de proveer su propia interfaz de usuario. De esta forma, podemos utilizar por ejemplo un text box extender para agregar la funcionalidad a un text box de nuestra aplicación para por ejemplo agregar la funcionalidad de autocompletar.

Framework Extensible:
ASP.NET AJAX nos permite extender o ampliar la funcionalidad existente, tanto de código del lado del cliento como de codigo del lado del servidor. Hay disponibles clases bases y archivos JavaScript de los cuales se pueden heredar y agregar funcionalidad. También se puede descargar el AJAX Control Toolkit con el cual tendremos disponibles muchos componentes listos para utilizar (extenders).
El AJAX Control Toolkit incluye una plantilla para simplificar la creación de componentes del lado del cliente.

Hasta aqui una breve introduccion. En proximas entradas ire profundizando en conceptos relaciondos.