cerrar-sesion editar-perfil marker video calendario monitor periodico fax rss twitter facebook google-plus linkedin alarma circulo-derecha abajo derecha izquierda mover-vertical candado usuario email lupa exito mapa email2 telefono etiqueta

400390103. Realización de gráficos: Rápido y eficiente

Escrito por Redacción en Secciones
no hay comentarios Haz tu comentario
Imagen de logotipo de facebook Imagen de logotipo de Twitter Imagen de Logotipo de Google+ Imagen de logotipo de Linkedin

Como director jefe de proyectos en SmarterTools (www.smartertools.com), una de mis funciones es evaluar de manera constante nuestra integración con las nuevas tecnologías y los componentes de terceros para mantener en la vanguardia de la tecnología y el diseño nuestras aplicaciones distribuibles ASP.NET 1.1 y 2.0. Hace poco, tuve la oportunidad de volver a evaluar el uso que hacíamos de nuestros componentes para la realización de gráficos, y así ver si teníamos la solución adecuada para nuestras aplicaciones y de buscar oportunidades para hacer que nuestros productos fueran mejores, más rápidos y más ágiles.

Los requisitos que nosotros tenemos para nuestro software son distintos a los de otras empresas. A diferencia de la mayor parte del desarrollo del software, que empieza teniendo en mente las necesidades de empresas pequeñas y de clientes individuales, nuestro software se diseña desde el principio con un enfoque hacia los entornos de gran tensión (como empresas de alojamiento y proveedores de servicios de Internet), y después se ajustan para dar una buena solución a las empresas más pequeñas. Favorecemos este enfoque porque hace que el producto final sea inherentemente más estable y escalable.

El problema

Hoy en día, la mayoría del software comercial basado en Windows viene en una de estas dos opciones – aplicaciones instalables de Windows y servicios alojados. Nuestro software difiere en que nuestras interfaces están totalmente basadas en web, pero la aplicación web se instala en los servidores de los clientes, en lugar de estar alojados en nuestro servicio. Diseñar de esta forma nuestro software nos ha aportado varias ventajas fundamentales, tales como un mantenimiento fácil y una gestión remota para los administradores.

También nos ha traído algunos inconvenientes. Uno de ellos es que los distribuidores de componentes normalmente se dirigen a una de las dos opciones de desarrollo (servicios de Windows o aplicaciones web alojadas, por ejemplo), y muy pocos dan soporte al modelo híbrido que hace que nuestros productos se hagan populares tan rápidamente.

Hace varios años, durante el desarrollo inicial de SmarterStats (nuestro paquete para el análisis del tráfico de sitios web), estuvimos evaluando a muchos distribuidores. En esos momentos, la mayoría de los componentes populares para la elaboración de gráficos sólo daban soporte al modelo de licencia por sitio web o por servidor.

Algunos estaban dispuestos a ceder y operar en base a un canon por instalación, pero incluso eso no daba respuesta a nuestras necesidades porque incrementaba el coste de nuestros productos en hasta 100 dólares o incluso más. Debido a nuestro compromiso de ofrecer una estructura en la que se valora el precio y un modelo de distribución del producto gratis, los cánones representan un enorme impedimento.

La dirección de nuestra empresa tiene la intención de mantener una versión gratis de todos nuestros productos, y estamos convencidos de que cargar un canon no sólo afectaría a la distribución del producto sino que afectaría de forma negativa a nuestras tasas de compra para empresas pequeñas y el sector de alojamientos, en donde el entorno es muy competitivo y los márgenes bastante pequeños.

Una vez más, la necesidad de dar soporte a entornos de muy gran escala nos lleva a otra dificultad – los requisitos de prestaciones de los componentes que utilizamos. Nuestro software (especialmente SmarterStats, véase la figura 1) ha de ser capaz de generar hasta varios cientos de miles de gráficos al día (requisito de los entornos para empresas de alojamiento más grandes).

Estos gráficos tienen también que ser generados en la interfaz de la web además de mediante informes automatizados de correo electrónico que funcionan en un hilo de fondo. No hace falta decir que muy rápidamente surgieron cuestiones relativas a las prestaciones.

Figura 1: SmarterStats.

Algunos paquetes de producción de gráficos generaron unos gráficos realmente atractivos, pero tardaban hasta cinco segundos por gráfico. Otros funcionaban con mucha rapidez, pero tenían un aspecto horrible o, para funcionar, necesitaban la inserción de controles en una página ASP.NET.

La evaluación

Nuestra búsqueda nos llevó a evaluar muchas herramientas de elaboración de gráficos, y la que encajó perfectamente fue Nevron Chart para .Net de Nevron LLC (www.nevron.com). Tiene sobresalientes prestaciones, gráficos profesionales, y una flexibilidad de uso y términos de la licencia que funciona bien en nuestro modelo de empresa.

No hace mucho tuvimos la oportunidad de revisar nuestra decisión de usar Nevron, debido a que se habían producido cambios en el espacio de los componentes y en el desarrollo de nuestro producto SmarterMail 4.x, recientemente lanzado al mercado (Figura 2). Iniciamos la evaluación con varias necesidades y deseos para nuestros productos.

Figura 2: SmarterMail.

Nuestras necesidades incluyen:
– Términos de licencia por grupo de desarrollo o por desarrollador sin cánones de distribución (incluso cuando la parte de sitio web del producto se aloja en servidores de los que nuestros clientes son propietarios).
– Modelo de programación flexible que permite la creación de gráficos mediante un diseñador o mediante un código de back-end, con o sin objetos HttpContext y Page.
– Un motor con altas prestaciones capaz de generar cientos de miles de gráficos al día en una máquina no especializada para esa tarea.
– Soporte para generar muchos gráficos a la vez, en hilos diferentes.
– Soporte para los tipos básicos de gráficos (gráficos de líneas, de zonas, gráficos circulares, etc.)
Aunque no son absolutamente necesarios, nuestros deseos incluían:

– Gráficos de aspecto profesional con características como el sombreado y la configuración de márgenes y que no permitan el uso de alias.
– Soporte para la personalización del aspecto del gráfico, como la leyenda, el eje, etc.
– Soporte para gráficos de 2 y 3 dimensiones en perspectiva real (y no simplemente unas líneas añadidas para “imitar” 3 dimensiones).

Los resultados

Completada la revisión y con nuestro software puesto con éxito en el mercado, Nevron Chart para .Net satisfizo todas nuestras necesidades y deseos de forma brillante.

Nevron otorga licencias por desarrollador, sin cánones para la distribución a clientes tanto en Formularios de Windows como en entornos de aplicación de web.

– Pudimos crear gráficos con facilidad con sólo poner objetos Chart en el diseñador ASP.NET, o crearlos de forma pragmática para nuestros hilos de fondo. Por ejemplo, véase el Listado número 1, que genera un gráfico en forma de embudo.
– Nevron es una de las máquinas de gráficos más rápidas del mercado, que satisface fácilmente nuestras necesidades.
– Se incluyen todos los tipos de gráficos más importantes. (Seguimos intentando pensar en maneras de usar algunas de las atractivas visualizaciones como los gráficos en forma de embudo para nuestras aplicaciones)
– La calidad de la representación es muy buena y se controla con facilidad. Es fácil sintonizar la máquina a las especificaciones que necesitamos.
– Se da soporte a auténticos diagramas en 3 dimensiones, además de algunas opciones intermedias que usan sombreado y texturas para añadir un agradable efecto de realce a los gráficos en 2 dimensiones.

// Partes de este código se obtuvieron de Nevron LLC

public string GenerateFunnelChart()

Size imageDimensions = new Size(640, 480);

string filename = Guid.NewGuid().ToString("n") + ".jpg";

string relativeFilename = "~/App_Data/Temp/" + filename;

string physicalFilename =

Server.MapPath(relativeFilename);

NLicense license = new NLicense(NEVRON_LICENSE_KEY);

NLicenseManager.Instance.SetLicense(license);

NLicenseManager.Instance.LockLicense = true;

using (NChartControl chartControl = new NChartControl())

chartControl.Settings.RenderDevice =

RenderDevice.OpenGL;

// Add a Header

NLabel header = chartControl.Labels.AddHeader

("Sample Funnel Chart");

header.TextStyle.FontStyle =

new NFontStyle("Verdana", 20, FontStyle.Italic);

// Add a legend

NLegend legend = chartControl.Legends(0);

legend.SetPredefinedLegendStyle

(PredefinedLegendStyle.BottomRight);

// Setup chart

NFunnelChart chart = new NFunnelChart();

chart.LightModel.SetPredefinedLightModel

(PredefinedLightModel.SoftFrontal);

chart.Projection.SetPredefinedProjection

(PredefinedProjection.Orthogonal);

chart.Projection.Elevation = 4;

chartControl.Charts.Clear();

chartControl.Charts.Add(chart);

// Add a new Funnel Series to chart

NFunnelSeries funnel =

(NFunnelSeries)chart.Series.Add(SeriesType.Funnel);

funnel.BorderStyle.Color = Color.LemonChiffon;

funnel.Legend.DisplayOnLegend = legend;

funnel.Legend.Mode = SeriesLegendMode.DataPoints;

funnel.DataLabelStyle.Format = "";

funnel.Values.Add(20.0);

funnel.Values.Add(10.0);

funnel.Values.Add(15.0);

funnel.Values.Add(7.0);

funnel.Values.Add(28.0);

funnel.Labels.Add("Awareness");

funnel.Labels.Add("First Hear");

funnel.Labels.Add("Further Learn");

funnel.Labels.Add("Liking");

funnel.Labels.Add("Decision");

funnel.FillStyles(0) =

new NColorFillStyle(Color.FromArgb(169, 121, 11));

funnel.FillStyles(1) =

new NColorFillStyle(Color.FromArgb(157, 157, 92));

funnel.FillStyles(2) =

new NColorFillStyle(Color.FromArgb(98, 152, 92));

funnel.FillStyles(3) =

new NColorFillStyle(Color.FromArgb(111, 134, 181));

funnel.FillStyles(4) =

new NColorFillStyle(Color.FromArgb(179, 63, 92));

chartControl.ImageExporter.SaveToFile(physicalFilename,

new NSize(imageDimensions),

NResolution.ScreenResolution,

new NJpegImageFormat());

return physicalFilename;


Listado número 1

Fuentes de Nevron me informan también de que pronto van a sacar un componente de medición. Si utilizan unas cláusulas de licencia similares a las que tienen en la actualidad, contribuirán a llenar otro vacío más en el desarrollo del software.

Aunque los puntos negativos son escasos, merece la pena mencionar dos.

En los últimos tres años, el modelo de objeto de Nevron ha experimentado un cambio sustancial, y a veces nos encontrábamos actualizando y mejorando sólo para encontrar que había varios cambios nuevos. Dicho esto, cada cambio ha supuesto una mejora y esa tendencia parece haberse estabilizado a lo largo del año pasado. Ello es debido, con toda probabilidad, a problemas de crecimiento, ya que el producto se ha ido adoptado de forma cada vez más amplia en el mercado.

Otro posible punto negativo es que la participación en el foro de usuarios es bastante escasa. Esto podría deberse a la capacidad de respuesta del personal de Nevron, ya que a veces es más fácil preguntarlos directamente y obtener respuestas que participar en el foro. Han sido siempre de lo más servicial en las comunicaciones que hemos mantenido con ellos. Aún así, una base activa de comunicación para usuarios es un recurso valioso para desarrolladores y es señal de crecimiento fuerte.

Conclusión

Los Gráficos de Nevron para .Net siguen dando respuesta a nuestras necesidades. El proceso de evaluación me brindó la oportunidad de hablar con Nevron sobre algunas cuestiones nuevas que tienen en proyecto.

Prestaciones como el nuevo componente de medición y las próximas mejoras a los Gráficos de Nevron para .Net nos resultan de interés y justifican nuestra confianza en el compromiso de Nevron por mejorar y seguir avanzando en sus productos.

Esperamos con impaciencia ver cómo estos nuevos cambios nos pueden ayudar a mejorar aún más SmarterMail y SmarterStats.

Etiquetas

Noticias relacionadas

Comentarios

No hay comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Debes haber iniciado sesión para comentar una noticia.