renderizar renderizado que programacion principales para navegadores motores c++ qt webkit gecko rendering-engine

c++ - que - ¿Cuál es el mejor motor de renderizado de HTML para incrustar en una aplicación?



que es renderizar en programacion (6)

Creo que sugeriría el motor WebKit de Safari / Chrome, que se derivó de KHTML, el motor de renderizado de Konqueror.

Por el momento, nuestra aplicación utiliza el componente Trident Win32, pero queremos alejarnos de eso por algunas razones, la principal de ellas es nuestro deseo de ir multiplataforma.

Estamos viendo WebKit y Gecko , pero me gustaría obtener algunos comentarios antes de tomar una decisión. Estos son algunos de los requisitos más importantes:

  1. Debe ser relativamente rápido, con una huella pequeña. Idealmente, podríamos recortar todo lo que no necesitamos sin demasiado esfuerzo.

  2. La documentación decente es importante. No anticipo la necesidad de hacer algo demasiado inusual con él, pero nunca se sabe.

  3. Estamos usando C ++, y nos gustaría trabajar con una arquitectura orientada a objetos bien diseñada, si es posible.

  4. La multiplataforma es imprescindible, y un buen rendimiento sería útil a largo plazo (es posible que terminemos migrando a plataformas móviles).

¿Hay alguna consideración que deba tener en cuenta antes de tomar una decisión? ¿Alguien ha trabajado anteriormente con WebKit o Gecko? Si es así, ¿hay algún artículo o tutorial que pueda serle útil?

Actualizar:

Gracias por las respuestas chicos. Terminamos yendo con Qt 4.5, que incluye WebKit. Estamos muy contentos con él hasta ahora, de hecho creo que Qt es probablemente el mejor marco de interfaz de usuario que he usado en mi vida; la diferencia entre codificar con las API Win32 nativas y esto es asombroso. También es muy fácil de aprender, el único problema importante que tuvimos fue acostumbrarnos al paradigma de señales / ranuras.


Depende de tus necesidades. Incluso Webkit puede ser excesivo si solo quieres mostrar HTML simple. En algunas de mis aplicaciones, uso wxHTML en su lugar. Es un componente de la biblioteca wxWidgets (no estoy seguro si puedes usarlo sin wx). Es liviano, admite solo material HTML básico (es posible que esté disponible algún soporte de CSS en la próxima versión), y tiene un control wxHtmlEasyPrinting realmente agradable que brinda una buena vista previa de impresión y también se imprime muy bien. En cuanto a la plataforma cruzada, wxWidgets funciona en Windows, Linux, Mac y algunos otros sistemas, por lo que seguramente se ajustaría a sus requisitos.

No recomiendo bajar por la carretera de Gecko. Es posible integrarlo, pero es mucho más difícil de hacer que KHTML / Webkit, simplemente porque Gecko no se creó teniendo en cuenta la incrustación.


Según tengo entendido, Webkit es bastante bueno y más pequeño que Gecko. Se supone que Gecko tuvo una renovación recientemente, lo que la hace bastante comparable, sin embargo.


Un poco de historia puede ayudar en su decisión. Cuando Apple estaba considerando qué motor utilizar para hacer Safari, miraron a Gecko, pero decidieron ir con KHTML, lo bifurcaron y lo llamaron WebKit. Sus razones para hacer esto eran que Gecko tenía toneladas de restos de legado que aún quedaban de Netscape y era mucho más complicado.

KHTML / WebKit era más reciente y, por lo tanto, tenía menos legado. También fue más limpio, más rápido y mejor documentado.

Uno de los objetivos de Firefox 3 era limpiar la base de código y simplificarla. Por lo que he escuchado, hicieron esto, pero no sé cómo se compara con las iteraciones actuales de WebKit. Al parecer, no fue suficiente para Google cuando hicieron Chrome, y tienen un interés importante en Firefox.

Mira aquí para más detalles.


Intenta optar por Webkit ya que es utilizado por muchos navegadores diferentes (Konqueror, Safari y Google Chrome). Esto hace que Webkit sea más versátil y más adaptable a otras necesidades.

El desarrollo de Gecko está muy relacionado con Firefox. Se realizaron muchas modificaciones en Gecko porque Firefox las dicta. Por ejemplo, Firefox 3 decidió que iba a bloquear todos los certificados autofirmados por motivos de seguridad. La implementación se ha realizado en el motor de Gecko, lo que significa que cualquier aplicación que decida integrar Gecko tiene esta restricción de seguridad añadida.

Si puede permanecer con Webkit, ya que es principalmente un motor de representación para páginas HTML. Eso ha sido desarrollado con la intención de ser utilizado entre diferentes navegadores web. Mientras que Gecko es principalmente el motor de renderizado de un solo navegador que simplemente ofrece una API para incrustación.


Soy parcial, pero si no te importa usar QT (LGPL-ed), ¿qué hay de usar QtWebKit ? Es bastante fácil de integrar, multiplataforma por supuesto, tiene una buena demostración de navegador web y también otros ejemplos relacionados .