Blog de Francisco Velázquez

otro blog personal

Archive for June 2009

HttpWebRequest Timeout in HTTP Get

leave a comment »

En estos últimos días he tenido un problema bastante curioso. Era una aplicación multi-hilo (50 hilos simultáneos de ejecución) que realizaba peticiones HTTP Get a distintos servidores. El problema es que se presentaban bastante timeouts en las peticiones HTTP y sin embargo el servidor estaba en un correcto funcionamiento.

El código era algo como esto:

public static string Get2(string uri)
{
    string responseData = string.Empty;
    WebRequest request = WebRequest.Create(uri) as HttpWebRequest;
    request.Method = "GET";
    request.Timeout = 35000;
    using(HttpWebResponse response = (HttpWebResponse)request.GetResponse() as HttpWebResponse)
    {
        using(Stream dataStream = response.GetResponseStream ())
        {
            using(StreamReader reader = new StreamReader (dataStream))
            {
                responseData = reader.ReadToEnd();
            }
        }
    }
    return responseData;
}

Tras buscar, encontré bastantes links y este bastante interesante.

El problema era que .NET sólo permite 2 conexiones HTTP a cada sitio, tal y como establece el el protocolo HTTP1.1. Para aumentar este número, lo único que hace falta es incluir esta configuración en el app.config o web.config.

<connectionManagement>
<addaddress="*"maxconnection="40"/>
</connectionManagement>
Advertisements

Written by fravelgue

June 30, 2009 at 1:17 pm

Consejos para evitar bloqueos e interbloqueos

leave a comment »

Interesante post con unas conclusiones que merecen tenerse en cuenta:

  • Nunca bloquees por un objeto que no sea estático:

Eso solo serviría para proteger los miembros de esa instancia concreta, y rara vez es esto lo que deseamos con un lock.

  • Nunca hagas un lock sobre un objeto publico:

Como se explico previamente, el lock sobre el objeto publico significa que otra parte de la aplicación puede hacer un lock sobre el mismo objeto y ocasionar un interbloqueo.

  • Sobre todo, la mas importante de todas… Nunca hagas un lock sobre un System.RuntimeType o System.Type:

Ya sabéis, si leísteis la parte teórica, que estos tipos son Marshal-by-bleed, lo que significa que se comparten entre dominios de aplicación diferentes. El riesgo de interbloqueo es enorme, y no puedo pensar en un solo escenario en que tenga sentido hacer ese bloqueo.

Written by fravelgue

June 30, 2009 at 11:53 am

Posted in development

Tagged with , ,

Firefox plugin para Desarrollo

leave a comment »

Para desarrollo web.

Firebug.
Web Developer.
Yslow.
Page Speed.

Para desarrollo web móvil.

UserAgent Switcher.
wmlbrowser.
xHtml Mobile Profile.

Para HTTP.

Live Http Headers.
Tamper Data.

Written by fravelgue

June 4, 2009 at 12:42 pm

W3C Device API

leave a comment »

La w3c comienza el desarrollo de un borrador, Device API, para definir una serie de APIs que se ejecutarían en el cliente y permitirían acceder a determinada funcionalidad del dispositivo, como el calendario, los contactos, la cámara (esperemos que también la localización) y así como definir un marco de seguridad.

Muy en la línea y un paso atrás que la iniciativa Bondi, esperemos que de un lado u otro al final los desarrolladores podemos acceder a esta funcionalidad desde el navegador. Si no aparece una solución pronto, veremos como se imponen las funciones de algún navegador específico, como el de iphone o Android.

Written by fravelgue

June 2, 2009 at 10:05 pm

Posted in mobile web

Tagged with , , ,

Estadísticas de admob html vs xhtml MP

leave a comment »

Merece la pena comentar las estadísticas de admob, en las cuales (además de en multitud de sitios) se sobresalta  que el iphone supera con creces a los demás competidores.

april-2009-metrics-smartphone-share

Sin embargo, en mi opinión esas gráficas son relativamente parciales. Es muy normal que desde otros dispositivos (e incluso el iphone) se accedan a páginas específicas para móviles (ya sean wml o xhtml mp) que ofrecen unos tiempos de respuesta muchos más rápidos. Además de esto se está desechando el tráfico que procede de determinadas aplicaciones o widgets que es bastante usado en determinados terminales ya que se hace un uso más eficiente de la conexión.

Written by fravelgue

June 1, 2009 at 9:07 pm

Posted in mobile

Tagged with , , ,

Push email con Funambol

leave a comment »

Con las herramientas cliente/servidor de Funambol, podemos tener email push y sincronización en cualquier dispositivo móvil. Además poseen una aplicación web, myFunambol, para no tener que realizar la instalación de servidor.

Además en el siguiente blog (en el que también explican como usar el navegador de la blackberry sin BIS), recomiendan el siguiente plugin que integra el correo en la blackberry. Parece una mejor solución que usar Shangmail con sus servidores alojados en China.

Written by fravelgue

June 1, 2009 at 8:56 pm