Hola a todos,
Estoy comenzando un desarrollo en ASP.NET 5 y tengo que crear un buscador de hoteles similar a este: http://es.venere.com/de448718/espana/hoteles-en-cordoba/. ¿Alguien puede recomendarme alguna librería que pueda utilizar?
De momento las APIs que he encontrado con documentación son las siguientes:
- API de Expedia: http://www.programmableweb.com/api/expedia
- API de Booking: https://www.bookingsync.com/en/documentation/api
Pero me parecen bastante complejas de utilizar, saben si existe alguna API mucho más sencilla,
Muchas gracias de antemano por la ayuda y un saludo,
Hola,
Para un buscador de hoteles como el que enlazas, lo interesante no es tanto «qué librería» sino cómo planteas la búsqueda, porque ese tipo de buscadores necesitan búsqueda por facetas: filtrar a la vez por precio, ubicación, valoración, servicios (piscina, wifi...), y que los resultados se actualicen combinando todos esos filtros.
Si el volumen de datos es moderado (unos cuantos miles de hoteles, no millones), no necesitas nada especial: con Entity Framework y LINQ construyes la consulta filtrada dinámicamente según qué filtros active el usuario:
var query = db.Hoteles.AsQueryable();
if (precioMax.HasValue)
query = query.Where(h => h.Precio <= precioMax.Value);
if (!string.IsNullOrEmpty(ciudad))
query = query.Where(h => h.Ciudad == ciudad);
if (conPiscina)
query = query.Where(h => h.TienePiscina);
var resultados = query.OrderBy(h => h.Precio).ToList();
La idea clave es ir encadenando .Where() solo para los filtros que el usuario haya activado (por eso el if antes de cada uno), en vez de construir una única consulta gigante con todos los parámetros siempre presentes.
Si más adelante el volumen crece mucho (decenas de miles de hoteles, búsqueda de texto libre tipo «hotel con vistas al mar en Cordoba», autocompletado instantáneo), ahí sí empieza a compensar meter un motor de búsqueda dedicado como Elasticsearch (con el cliente NEST/Elastic.Clients.Elasticsearch para .NET), que está pensado específicamente para búsqueda por facetas y texto libre a gran escala, algo que EF+LINQ empieza a hacer torpemente cuando la base de datos crece mucho.
Para empezar tu proyecto, yo iría directo con EF+LINQ, es muchísimo más simple de montar y probablemente cubra tus necesidades durante bastante tiempo.
David Carrero
