JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo configurar un proxy para acceder a servicios Web

A ver, cuestión peliaguda... En progrmación COM tradicional lo que se solía utilizar a la hora de conectar con un recurso Web mediante HTTP, fuera éste una página o un servicio Web, se solía emplear la biblioteca WinHTTP o bien la clase que a tal efecto proporcionaban las bibliotecas MSXML. En ambos casos si la conectividad se obtenía a través de un Proxy era necesario configurarlo usando una utilidad externa de línea de comandos, lo cual era un verdadero problema en distribuciones grandes o que debíamos hacer manualmente. No digamos si la aplicaci´no era en un servidor Web al que sólo teníamos acceso mediante FTP. Con .NET la vida es mucho más fácil, como ya es sabido. Así, por ejemplo, cuando vamos a consumir un servicio Web desde una aplicación .NET, al añadir una referencia Web se crea una clase que nos abstrae de la complejidad de llamar a los métodos remotos y gestionar las comunicaciones HTTP. Esta clase hereda de SoapHttpClientProtocol, que a su vez hereda de HttpWebClientPro... [Más]

Cómo averiguar desde qué método se ha llamado al método actual

En algunas ocasiones puede resultar interesante averiguar desde qué otro método o métodos se ha llamado a la función actual. las utilidades pueden ser varias, por ejemplo: Un método genérico que se use para llamar a procedimientos almacenados en una base de datos, cuyo nombre (el de los procedimientos) sea idéntico al procedimiento desde el que se llama. Puede acelerar mucho el desarrolo. Un método que queremos que sea llamado exclusivamente desde otro procedimiento concreto. Una función que deba ser llamada en exclusiva desde el constructor de una clase o desde Main(). Experimentar con esto, que es interesante, hombre... ;-) En fin, el caso es que con la plataforma .NET casi cualquier cosa es posible y encima de una forma relativamente sencilla. En este caso debemos usar la clase StackTrace del espacio de nombres System.Diagnostics. Ésta nos permite navegar por la pila de llamadas de la aplicaicón obteniendo información sobre los diferentes métodos que se encuentren en ella.... [Más]

Aquí estoy una semana más tarde...

Esta semana pasada ha sido de locura, por lo que no me ha sido posible escribir nada en el Blog :-( Me consta que ha habido muchas visitas así que mis disculpas a esa gente.... Esta semana con el famoso puente aquí en España me imagino que será parecida (aunque no por trabajo sino por todo lo contrario), aunque procuraré publicar algunas cosas que tengo en la recámara. De hecho el mes de diciembre entero es complicado entre unas cosas y otras (mucho viaje de trabajo y mucho día festivo), pero bueno, espero llegar al menos al nivel de publicaciones de noviembre :-) Saludos a todos.

Iteradores en C# 2.0

Pensemos por un momento cómo podemos construir en C# 1.0 o 1.1, una clase contenedora de datos que se pueda utilizar con la construcción foreach para iterar por los elementos que contiene... Para empezar la clase debe implementar la interface IEnumerable. Esto tampoco supone mucho trabajo ya que, al fin y al cabo, sólo se debe implementar un método, GetEnumerator(). Ahí se empieza complicar la cosa un poco ya que este método devolverá un objeto que implementa la interfaz IEnumerator y que nosotros debemos definir también. La implementación de esta clase es algo más compleja y además debe mantener una referencia al objeto enumerable original. Ya de por sí, como podemos comprobar, se trata de algo bastante tedioso. Pero es que además de eso en algunos casos es algo muy complicado de hacer. Por ejemplo, si queremos implementar una clase enumerable que contenga los nodos de una jerarquía (un árbol de carpetas, por ejemplo) y que, enumerándolo con foreach, nos devuelva por el orden correc... [Más]

El próximo día 2 (jueves) imparto formación gratuita

Dentro de la iniciativa Desarrolla con MSDN de Microsoft Ibérica, el próximo día 2 de diciembre de 2004, jueves, en Santiago de Compostela, impartiré formación sobre desarrollo de aplicaciones Web con ASP.NET. El curso es gratuito. Durará toda la mañana y nos hará falta el tiempo, así que por favor sed puntuales (9:00 en punto) los que os apunteis ;-) En esta sesión exploraremos el entorno de desarrollo de ASP.NET y los conceptos más importantes para construir aplicaciones web escalables y robustas. Los conceptos aprendidos nos permitirán desarrollar el frontal web principal y el cliente móvil de la aplicación de ejemplo MSDN Video. La agenda aproximada es la siguiente: Modelo de ASP.NET e IIS Web Forms Controles de usuario Mobile Web Controls Sesión y caché Configuración e instalación Seguridad Para anotarse sólo hay que hacerlo a través de este enlace, usando el icono que hay en el lateral. En él encontrareis más información, la ubicación exacta y un plano de cómo... [Más]

Cualificadores globales para espacios de nombres en C# 2.0

Cuando hacemos referencia a una clase o un tipo desde nuestro código podemos emplear una ruta completa de espacios de nombres para llegar hasta él. Por ejemplo, si escribimos System.Console.ReadLine(); se busca la clase Console dentro del espacio de nombres System que está en la raíz de todos los espacios de nombres (es decir, System se encuentra en la parte más alta de la jerarquía de espacios nombres junto a otros como Cryptography, etc... y los que nosotros mismos definamos o agreguemos a un proyecto). ¿Qué pasa sin embargo si escribimos esa misma línea dentro de una clase que está contenida dentro de un espacio de nombres llamado también System?, por ejemplo: namespace MiEmpresa.MiBiblioteca{    namespace System    {        class MiClase        {            System.Console.ReadLine();        }    }} El resultado será que la búsqueda de la clase Console comienza en el espacio de nombres actual y sólo cuando se recorra y no aparezca (porque pudiera aparecer si la hemos definido n... [Más]

Tipos genéricos en .NET 2.0

Una de las grandes novedades de la versión 2.0 de la plataforma .NET son sin duda los tipos genéricos. Esta nueva característica de los lenguajes Visual Basic .NET y C# y sus correspondientes compiladores, permite escribir código genérico que, a la hora de compilarse se transforma en código específico para un tipo de datos. Ello permite crear código de métodos, estructuras, clases e incluso interfaces sin preocuparnos por los tipos de datos que vamos a utilizar a la hora de la verdad. Hasta la fecha cuando queríamos escribir código genérico que pudiese trabajar indistintamente con dos o más tipos de datos no nos quedaba más remedio que utilizar el tipo 'object' que es la raíz de todas las clases. Con los nuevos Generics de .NET 2.0 ya no es necesario, y nuestro código puede disfrutar de la robustez de tipos concretos sin tener que comprometerse por adelantado con ninguno. ... [Más]

Métodos anónimos en C# 2.0

Siguiendo la estela marcada ayer, los próximos días me dedicaré, sin prisa pero sin pausa, a comentar algunas novedades interesantes que trae la plataforma .NET 2.0, C# 2.0 y Visual Studio .NET 2005. Hoy le toca el turno a los métodos anónimos. Éstos están pensados para simplificar la definición de manejadores de eventos cuando las tareas a realizar son simples. Imaginemos que queremos asociar una única línea de código (o dos) como acción a realizar cuando se produzca un evento. Por ejemplo, que cuando se pulse un botón se muestre un mensaje de saludo. Lo que debíamos hacer hasta ahora era declarar una función del tipo adecuado y asociarla con un nuevo delegado al evento. Por ejemplo: private void button1_Click(object sender, System.EventArgs e){    MessageBox.Show("Hola");} button1.Click += new System.EventHandler(button1_Click); Esto hace que al pulsar el botón se vea el saludo "Hola". Sin embargo es un poco engorroso para tan poca acción tener que crear una función como es... [Más]

Visual Studio 2005 reemplaza "Code-Behind" por "Code-Beside" en ASP.NET

Cuando creamos una página ASP.NET con Visual Studio 1.x lo que obtenemos es un archivo '.aspx' con el HTML y etiquetas básicas de servidor para enlazar datos y para directivas de páginas, y por otro lado un archivo '.cs' o '.vb' que contiene una clase que implementa el código de la página en cuestión. A este modelo de programación se le conoce como "Code-Behind" que se podría traducir como "Código por detrás". El símil es bastante bueno ya que un usuario llama a la página ASPX pero en realidad se ejecuta por detrás y de forma transparente el código de la clase "Code-Behind". En la clase code-behind, además, se incluyen las declaraciones de los distintos controles de la página y se asignan también los manejadores de sus eventos entre otras cosas. De hecho la página final hereda de la clase code-behind, que en última instancia hereda de la clase Page. En ASP.NET 2.0 y Visual Studio 2005 esto ha cambiado. Ahora el término nuevo a conocer es "Code-Beside" que podría traducirse como "códig... [Más]

Actualización de TabletPC a Service Pack 2

Ayer intenté actualizar mi nuevo TabletPC con el Service Pack 2 de Windows XP. Dificil misión. Como es sabido, Microsoft iba a sacar al mercado como producto independiente una nueva versión del sistema operativo Windows XP para TabletPC. Al final decidieron fusionarlo con el SP2 para Windows XP. Por lo tanto si instalamos el SP2, aparte de aumentar mucho la seguridad del sistema, si tenemos un TabletPC obtendremos también la nueva versión del sistema operativo: TabletPC 2005. Entre las mejoras de la versión 2005 están un panel de entrada de datos muy mejorado respecto al anterior, mejor y más potente integración con Office, mejoras en la conversión de escritura a texto, más capacidades para desarrollo de aplicaciones, etc... Puedes ver la lista completa aquí. El caso es que al intentar instalar el SP2 en castellano sobre mi TabletPC en castellano no había manera: el instalador porfiaba en decir que los idiomas del SP2 y el sistema no coincidían. Nada que hacer. Llamé al soporte té... [Más]