Los servicios web son aplicaciones de software que son accedidos por medio de una URI. Existen distintos tipos de servicios web, los más conocidos son RESTful y SOAP, los cuales no son iguales y cada uno debería usarse en escenarios específicos para obtener una arquitectura más robusta acorde a lo que necesitemos. DZONE realiza una comparación entre ambos, la cual considero muy válida.
Los servicios RESTful han tenido una gran acogida por parte de los desarrolladores de aplicaciones móbiles y web, esto debido a que se pueden generar estructuras de datos muy flexibles ya que permite construirlas en notación JSON y su tamaño es mucho menor que la de los tradicionales web services que usan XML (Aunque si se requiere por medio de RESTful también los resultados pueden ser generados por XML).
ASP.NET ofrece un framework muy robusto y sencillo de implementar para crear poderosos servicios RESTFul llamado Web API. En esta ocasión vamos a crear una REST API con Web API y la implementaremos en Microsoft Azure con una cuenta de Dreamspark. El código fuente puede ser descargado desde Github; este repositorio cuenta con todo lo necesario para reproducir este demo. Es necesario que realices el post anterior para realizar este con éxito.
- Configuración del Proyecto: Al iniciar Visual Studio vamos al menú de File > New > Project. En la ventana que nos aparece seleccionamos en la parte izquierda templates > Visual C# > Web, luego en la parte derecha seleccionamos la opción ASP.NET Web Application. En la sección inferior pondremos un nombre al sitio proyecto. Una vez damos click en aceptar. Nos aparece una nueva ventana, en la cual seleccionaremos la opción Empty

- Instalación de dependencias: Es necesario que hayamos instalado las herramientas de conexión con MySQL que se explico en el post anterior. También es necesario instalar un par de componentes adicionales, los cuales los agregaremos por medio vamos instalar por medio NuGet Package. Necesitamos abrir la consola de NuGet package, para esto vamos al menú Tools > NuGet Package Manager > Packages Manager Console y este nos abrirá la consola de NuGet. A continuación ejecutaremos los siguientes comandos en la consola para instalar los paquetes necesarios:
- Install-Package Microsoft.AspNet.WebApi
- Install-Package MySql.Data.Entity.EF6
- Install-Package MySql.Data.Entity -Version 6.9.8
- Configurar enrutamiento: Es necesario crear ajustar la forma en que se resolveran las peticiones de url a nuestra API. Vamos agregar un directorio nuevo al proyecto que llamaremos App_Start, dentro de este directorio crearemos una clase llamada WebApiConfig. Luego editaremos el archivo Global.asax en el método Application_Start, allí se registrará el nuevo manejador de urls de nuestra API. En el archivo WebApiConfig se configura que las respuestas sean en formato JSON.
- Agregar modelo de datos: En este paso crearemos las clases necesarias para conectarnos a la base de datos, esto lo realizaremos con la ayuda de Entity Framework. Primero se debe agregar una carpeta que llamaremos Models, una vez creada vamos a presionar click derecho sobre la carpeta e iremos a la opción de agregar un nuevo item. Este nos abrirá una ventana modal y allí en el menú de la izquierda buscamos la opción llamada Data y luego buscaremos la opción ADO.NET Entity Model, en la sección de abajo pondremos el nombre de nuestro modelo.
- Configurar conexión a la base de datos: Una vez hemos agregado el archivo de ADO.NET Entity Framework este nos abrirá una ventana en la cual seleccionaremos la primera opción (EF Designer from database) y presionamos Next. En la nueva ventana seleccionaremos la opción de MySQL database y presionamos siguiente. En la siguiente ventana que nos aparece ingresamos los datos de conexión a nuestra base de datos en Azure (revisar el post anterior). Para saber que al final ha quedado bien configurado, debería revisar que en el archivo de configuración Web.config quede similar al del ejemplo.

- Creación de consultas a la base de datos: Dentro de la carpeta Models, adicionaremos una nueva carpeta llamada Repositories y dentro de ella agregaremos dos clases nuevas RepositoryCity.cs y RepositoryCountry.cs. Estas clases tienen las consultas hacia la base de datos.
- Creación de contratos: Los contratos son los objetos que retornaremos a los clientes del servicio. No se recomienda retornar los mismos objetos que traemos directamente de la base de datos, sino retornar los datos que son necesarios únicamente (otras developers los llaman EndPoints). Para esto creamos una carpeta llamada Contracts y dentro de ella agregamos los archivos CityContracts.cs y CountryContracts.cs.
- Agregar controladora: En esta sección agregaremos los archivos que se encargarán de procesar las peticiones que se realizan los clientes al servicio web. Para esto crearemos una carpeta llamada Controllers y agregaremos dos clases: CityController.cs y CountryController.cs.
- Creación de servicio en Azure: Una vez en este punto ya tenemos listo nuestro Web Service listo para ser puesto online. En la consola de administración de Microsoft Azure vamos a la sección Web + Mobile y seleccionamos la opción Web App. Ya debemos configurar el servicio cómo se muestra en la siguiente imagen:

- Publicación de servicio: Una vez creado el servicio en Azure, volvemos al proyecto en Visual Studio y presionamos click derecho sobre el nombre del proyecto, luego presionamos en la opción publicar. Este nos abrira una ventana y allí seleccionaremos la opción Microsoft Azure Web Apps, luego nos logueamos con nuestra de cuenta de Azure y seleccionamos el servicio que creamos en el paso anterior. Presionamos en el boton publish.

Al finalizar la publicación este abrirá una ventana de un navegador con el servicio disponible. Felicitaciones!!! ya has creado un web service disponible para ser consumido.
Nota: Si presentas problemas con la conexión hacia MySQL puedes revisar los siguientes links:
http://forums.mysql.com/read.php?174,601264,601264