Nivel básico

Patrones de Diseño


A lo largo de las próximas semanas intentaré, dentro de mis posibilidades, realizar un acercamiento a uno de los conceptos que todo ingeniero de software que se precie debe saber manejar con soltura: los patrones de diseño.

Un patrón de diseño no es más que una “receta” que trata de proporcionar una solución genérica a un problema concreto que se repite con frecuencia durante el desarrollo de software.

Para que un patrón de diseño sea considerado como tal debe cumplir una serie de requisitos, como el haber demostrado su efectividad a la hora de resolver el problema que afirma solventar y ser adaptable a cualquier entorno y tecnología, es decir, ser lo suficientemente genérico para asegurar su reutilización.

Por tanto, un patrón de diseño es un artefacto, por definición, abstracto. Sé que existe multitud de documentación al respecto, pero muchas de las explicaciones que se ofrecen se componen de un montón de terminología que, si bien es perfectamente familiar para un ingeniero experimentado, resulta terriblemente difícil de digerir para un recién iniciado en el mundo de la arquitectura y el diseño. Dicen que Einstein dijo en una ocasión que “no entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela”. Pues bien, abuela, esta serie de artículos va por ti.

(más…)

WCF (III): Creación de un cliente de un webservice


Ahora que ya hemos creado nuestro primer servicio, es el momento de consumirlo. Al igual que hicimos en ejemplos anteriores, comenzaremos creando un nuevo proyecto, por ejemplo de consola.

Es importante tener a mano la dirección del servicio, ya que nos hará falta para referenciarlo. Si estamos desarrollando el cliente en el mismo equipo en el que desarrollamos el webservice, bastará con copiar la dirección del WCF Test Client que Visual Studio creará por nosotros y que vimos en el artículo anterior.

Seleccionaremos la sección References del proyecto y haremos click derecho sobre ella, seleccionando la opción Add Service Reference… para añadir una referencia de servicio.

En el campo Address (dirección), insertaremos el valor que copiamos previamente. El hecho de que la dirección termine en mex indica que se trata el servicio de metadatos creado por defecto, que proporcionará la información sobre el resto de endpoints del servicio web. Más adelante profundizaremos en el concepto de endpoint y aprenderemos qué son, cómo configurarlos y cómo acceder a ellos.

(más…)

WCF (II) : Creación de un servicio web simple


Comprendidos los principios sobre los que se basa Windows Communication Foundation, es momento de crear un pequeño servicio básico que maneje una lista interna de clientes. No haremos uso de bases de datos, puesto que el objetivo principal de este artículo es centrarnos en la comunicación. El último artículo dedicado a Entity Framework desarrolla, precisamente, un ejemplo más específico del uso de Entity Framework para desarrollar un servicio web RESTful mediante WCF.

Como vimos en el artículo anterior, a grandes rasgos un servicio WCF se compondrá de cuatro elementos:

  • Contrato de datos: estructura de datos que será intercambiada por el servicio.
  • Contrato de servicio: interfaz que expondrá los métodos que pueden ser invocados por el cliente.
  • Implementación del servicio: codificación del contrato de servicio, incorporará la lógica interna del servicio.
  • Configuración: fichero XML con información sobre dirección, nombre o protocolo.

Comenzaremos creando el servicio para pasar, a continuación, por el primero de estos elementos: el contrato de datos.

Creación del servicio

Para comenzar la codificación de nuestro servicio, crearemos un nuevo proyecto WCF, específicamente del tipo WCF Service Library, que generará una biblioteca DLL que contendrá la funcionalidad del servicio.

(más…)

WCF (I): Introducción a Windows Communication Foundation


La plataforma .NET sufrió su gran transformación a partir de sus versiones 3.0/3.5, momento en el que surgen oficialmente las ahora conocidas como Foundations, orientadas a especializar secciones completas del framework. Windows Communication Foundation, originalmente conocida por el nombre de Indigo, es la parte encargada, como su propio nombre indica, de las comunicaciones y mensajería, aunque su principal uso son los servicios web.

Hasta el momento, el servicio de mensajería entre aplicaciones se realizaba mediante los protocolos COM, DCOM o MSQM, que obligaba a los programadores a ceñirse no sólo a una forma de programación concreta, sino que también estaba atada a la plataforma y al lenguaje de programación. Los servicios web surgen con el propósito de cambiar esta filosofía, permitiendo hacer la comunicación independiente de lenguaje de programación y plataforma gracias a la creación de estándares de comunicación. No importará si un servicio está codificado en Java o .NET, ni si corre en una plataforma Windows o Linux: lo importante será que respeten los estándares del protocolo sobre el cual está construido, del mismo modo que ocurre con los servidores web.

Tipos de servicios web

A día de hoy existe una gran variedad de protocolos sobre los que los servicios web pueden operar, pero son dos los protocolos estrella que la práctica totalidad de los servicios web utilizan hoy día:

  • SOAP: Simple Object Access Protocol. Creado en 1998, se sirve de mensajes XML para el intercambio de mensajes. Puede operar sobre cualquier protocolo de transporte, aunque lo más común es que lo haga sobre HTTP o HTTPS. Es el protocolo más común en servicios web de carácter privado.
  • REST: REpresentational State Transfer. Concepto surgido en el año 2000, hace uso del protocolo HTTP para el envío de mensajes, y puede utilizar lenguajes como XML o JSON.

(más…)

Permitir conexiones locales a IIS y SQL Server en Windows 7


A la hora de desarrollar una aplicación .NET / ASP.NET con persistencia de datos, será necesario establecer una conexión con un servidor de base de datos. Generalmente, .NET suele hacer uso del binomio ASP.NET/SQL Server, para lo cual suelen darse, dejando a un lado los entornos de pruebas, integración y producción, dos escenarios típicos:

  • Utilizar una base de datos local en la que “cacharrear” y otra base de datos de desarrollo común a todos los desarrolladores de la aplicación.
  • Utilizar directamente una base de datos de desarrollo sin hacer uso de una base de datos local.

El segundo escenario típicamente suele consistir en un servidor SQL Server en red local, que bien puede ser dedicado (preferiblemente) o directamente (aunque sea mala práctica) el equipo de un compañero concreto.

Sin embargo, el acceso al equipo de un equipo en red local, políticas de red aparte, no es automático, sino que requiere permitir que tanto el servidor web (IIS 7 en nuestro caso) como el servidor de base de datos (ejemplificaremos con SQL Server 2012) permita el acceso a conexiones remotas y no sólo locales. Veremos a continuación cómo lograr este objetivo. (más…)

Crear un diálogo personalizado en Android


Ya hemos visto como crear un diálogo de confirmación de forma “express” a través de un AlertDialog.Builder. Sin embargo, muchas veces necesitaremos que el usuario, además de confirmar una acción, realice una selección rápida de un dato concreto a través de un diálogo. Los ejemplos más típicos suelen ser la selección de una fecha, de un nombre, un número o un color.

En el siguiente ejemplo aprenderemos cómo crear un nuevo diálogo personalizado que permitirá al usuario generar un color a partir de los tres componentes RGB y enviarselo a la actividad que lo solicita. Cuando finalicemos, nuestro diálogo tendrá un aspecto similar al siguiente:

ColorPickerDialog

(más…)

Diálogos modales en Android (AlertDialog)


Una de las desventajas de las interfaces táctiles es que en ocasiones pulsamos por error elementos que no deseamos. Por ello es conveniente realizar diálogos de confirmación en aquellas operaciones que tengan un carácter sensible, como por ejemplo la eliminación de un registro de la base de datos o la ejecución de una transacción financiera.

Para crear diálogos modales haremos uso de la clases android.app.AlertDialog y android.app.AlertDialog.Builder. El proceso a realizar será el siguiente:

  • Crear un método que genere el diálogo. En él construiremos paso a paso los elementos que queremos mostrar y utilizar, como mensajes, botones y acciones a realizar.
  • Llamar al método show() para mostrar el diálogo.

Imaginemos que en nuestra Activity deseamos realizar una conexión a un dispositivo Bluetooth, y el método destinado a ello recibe el nombre de conectarDispositivo(). Este método recibirá una cadena de texto que indicará la dirección del dispositivo, que se utilizará para obtener una referencia del dispositivo en sí. Olvidémonos del funcionamiento interno de la función y centrémonos en el hecho de que se trata de un método de nuestra Activity y que necesita parámetros para su ejecución:

(más…)