El elemento clear para las appSettings y los deployments.

Desde hace unos días, he estado hablando del tema de los deployments centrándome sobre todo en la herencia de los web.config de nuestras aplicaciones (funcionalidad muy interesante y a tener en cuenta en todo momento).

Hay varias formas de sobrescribir esta herencia o de configurar nuestro web.config para que nuestra aplicación trabaje de una forma u otra, y hoy vamos a ver otro mecanismo.

Este mecanismo, no viene a ser otro que el elemento clear de las appSettings.

El elemento clear, quita todas las referencias de los appSettings de nuestra aplicación, y solo nos permite trabajar con la configuración agregada por el elemento add.

Usarlo es muy fácil:

<appSettings>
<clear />
<add key=”NumberOfItems” value=”20” />
</appSettings>

Útil y fácil como tienen que ser las cosas, ahora amigos, os dejo. Pero os dejo acompañados del fabuloso Bobby Womack y su genial Across 110th Street, inmortalizada por el no menos fabuloso y genial Tarantino en los títulos de crédito de Jackie Brown.

Anuncio publicitario

Llamando a Web Services por medio del objeto XMLHttpRequest de Javascript.

De un tiempo a esta parte, estamos viendo como Ajax cada vez tiene más protagonismo en nuestras aplicaciones. Las razones son varias pero las que más peso tienen seguramente son:

  • La ganancia en usabilidad que proporciona.
  • Lo fácil que es trabajar de esta manera.

Actualmente, existen infinidad de Frameworks que nos facilitan la vida a la hora de trabajar con Ajax o mejor dicho con Javascript como Prototype, JQuery, Microsoft Ajax Library o Microsoft Ajax etc… Por lo tanto, es normal que proliferen este tipo de aplicaciones.

La mayoría del trabajo con Ajax pasa por el uso de llamadas asíncronas a un servidor, y esto, aunque los distintos Frameworks lo gestionen de una forma u otra, lo conseguimos gracias al objeto XMLHttpRequest.

Un poco de historia.

La interfaz XMLHttpRequest fue desarrollada por Microsoft y la lanzo con Internet Explorer 5. Esta versión se publicó utilizando un objeto ActiveX, por lo tanto podía ser utilizada en cualquier entorno de desarrollo con soporte de esta tecnología (prácticamente la totalidad de plataformas de desarrollo de Microsoft).

Posteriormente la interfaz se ha ofrecido de manera integrada tanto en Internet Explorer como en otros navegadores (Firefox desde la versión 1.0, Safari desde la 1.2, Opera desde la 8.0 etc.…) de manera que el acceso a ella se realiza por medio de objetos (Javascript, VBScript etc.…) proporcionados por los navegadores.

El 27 de septiembre de 2006, el World Wide Web Consortium presento el primer borrador de una especificación estándar.

El objeto XMLHttpRequest de Javascript.

Javascript, goza de un objeto que nos permite usar la interfaz XMLHttpRequest, así que los Frameworks anteriormente nombrados (y muchos otros), se basan en este objeto para hacer llamadas síncronas o asíncronas al servidor.

Ahora vamos a ir viendo como realizar peticiones con este objeto. Sigue leyendo

Ejemplo practico: Mostrando el horóscopo desde una fuente externa con HttpWebRequest, HttpWebResponse, Linq y Ajax

De un tiempo a esta parte y sobre todo desde que se empezó a hablar de la web 2.0, muchos sitios exponen su información para que se pueda explotar desde diferentes aplicaciones así que en este post vamos a ver cómo obtener información de una fuente de datos externa por medio de la clase HttpWebRequest y HttpWebResponse perteneciente a System.Net, posteriormente la trataremos con Linq To Xml y para finalizar, crearemos una interfaz rica con Ajax.

Para que podamos explotar la info de un sitio web, lo primero que vamos a necesitar es saber qué es lo que vamos a explotar. Nosotros, vamos a usar un XML que expone Terra para mostrar el horóscopo.

Lo primero que vamos a necesitar, es una entidad para ir manejando los datos, a esta entidad, le he llamado HoroscopeInfo, y tiene este aspecto: Sigue leyendo

Novedades de .net 3.5. Creación de objetos más rapida con constructores anónimos

Son varias las mejores que incluye c# 3 frente a las versiones anteriores, y seguramente la mayor es la inclusión de LINQ pero no vamos a hablar en este momento de LINQ, si no de los constructores anónimos.

Bien es verdad que estos constructores anónimos (aunque más que hablar de constructores anónimos deberíamos hablar de tipos anónimos ya que todo esto es mucho más extenso como veremos más adelante).

¿De que hablamos cuando hablamos de constructores anónimos?

Pues bien, veamos un ejemplo práctico de todo esto y seguro que lo entendemos mejor. Supongamos que tenemos una entidad sencillita llamada Empleado y esta tiene varios miembros, varias propiedades para acceder a esos miembros y un constructor. La clase sería algo parecido a esto: Sigue leyendo

¿Que es Linq?

Linq, es el acrónimo de Language Integrated Query, y es una funcionalidad incluida en .net 3.5, que nos va a permitir realizar consultas masivas semejantes a las de Sql por medio de c# 3 y visual basic 9, y nos va a permitir manejar colecciones de datos provenientes de datasets, xml u objetos de una forma cómoda y simple.

Enlaces relacionados

Carga dinámica de User Controls

Supón que tienes que hacer una web cuya interfaz la configure un usuario. Esta web no es otra cosa que una composición de UserControls y estos los vas a tener que ir cargando en función de un fichero de configuración. ¿Cómo hacerlo?

Cargando UserControls dinámicamente.

ASP.NET nos permite cargar UserControls en la página dinámicamente y para ello nos proporciona el método LoadControl.

A este método le podemos pasar el path del control o el tipo de control y un array de parámetros, aunque si os soy sincero siempre que he intentado hacer un LoadControl en función del tipo, por algo que no entiendo nunca me ha funcionado (aunque si compila e instancia el control).

Una vez hecho esto lo que nos queda es añadirlo a la colección de controles, y el código necesario para realizar esto sería el siguiente :

UserControl control = (UserControl)Page.LoadControl(string.Format("~/UserControls/{0}.ascx", controlName));
Page.Controls.Add(control);

Enlaces relacionados

Pues tan simple como esto, aunque si tienes algo que decir y/o preguntar, no dudes en hacerlo.

User Controls, que son y para que se usan

¿Qué son?

Los User Controls son partes de una Web o un WinForm que vamos a poder reutilizar a lo largo de una aplicación.

Su comportamiento es “parecido” al de una página (en una aplicación Web) o un WinForm (en una aplicación WindowsForm) solo que es una unidad “menor”, además una Web y un WinForm pueden contener uno o varios User Controls pero un User Control nunca contendrá una Web o un WinForm.

¿Para qué se usan?

Generalmente se usan para encapsular una funcionalidad relativa a la interfaz de usuario que se va a ir repitiendo a lo largo de una aplicación.

Supongamos que tenemos una aplicación web y tenemos que implementar un buscador. Este buscador tendrá que estar en la home y también en la página de resultados y en las páginas de detalle. Esto debería ser un User Control.

Enlaces relacionados

El patron de diseño Lazy Loading

El Lazy Loading es un patron de diseño util y simple que se basa en ir cargando los distintos componentes de una clase cuando los vamos usando.

Por ejemplo, supongamos que tenemos una clase que nos gestiona una lista e links, y esta tiene este aspecto:

public class Links
{
#region members
private string _title;
private int _quantity;
private
LinkCollection _linkList;
#endregion
#region properties
public string Title
{
get { return _title; }
set { _title = value; }
}
public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}
public LinkCollection LinkList
{
get { return _linkList; }
set { _linkList = value; }
}
#endregion
}

Si implementamos el lazy loading, el valor de la colección de links inicialmente sería nulo, y en el momento a que usamos la propiedad con la que lo exponemos, sería cuando cargamos la susodicha colección.
Esta implementación, tendría este aspecto:

public LinkCollection LinkList
{
get
{
if(_linkList == null)
{
_linkList = new LinkList();
}
return _linkList;
}
set { _linkList = value; }
}

Como veis es un patron simple, util y facil de implementar y con el ganareis un poquito en el performace de vuestras aplicaciones.

Enlaces relacionados

Otros patrones de diseño en A deshoras

Si os surge alguna duda, no dudeis en dejar comentarios que respondere gratamente.