2008-10-08 7 views
18

Por el momento, nuestra aplicación utiliza el componente Trident Win32, pero queremos alejarnos de eso por varias razones, la principal de ellas es nuestro deseo de ir multiplataforma.¿Cuál es el mejor motor de renderizado HTML para incrustar en una aplicación?

Estamos viendo WebKit y Gecko, pero me gustaría obtener algunos comentarios antes de tomar una decisión. Éstos 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 utilizando 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?

Actualización:

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.

+0

¿Eres (o puedes ser) de código abierto? Si no, eso puede limitar lo que puede usar. (Creo que WebKit es LGPL? Esas restricciones no son tan malas si eres de código cerrado) – Aardvark

+0

Todavía no estamos lo suficientemente lejos para tomar esa decisión, pero ciertamente es una posibilidad. – conmulligan

+0

Esta pregunta debe fusionarse o vincularse con "¿Qué navegador incrustado para el proyecto C++?" (http://stackoverflow.com/questions/835201) Aunque esa pregunta se trata de integrar el motor del navegador web con el procesamiento desmantelado. –

Respuesta

8

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 nuevo, 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.

Ver here para más detalles.

+1

Firefox 3 fue lanzado el 17 de junio de 2008 y para entonces Chrome ya había estado en desarrollo durante 2 años si no recuerdo mal. Creo que es seguro decir que la reestructuración de Mozilla para Firefox 3 no tuvo relevancia en la decisión de Googles de irse con Webkit. –

3

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

0

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

4

Depende de sus 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 haya soporte de CSS disponible 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 ir 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.

2

Intente 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.

+0

También me apresuraría a agregar que Adobe AIR usa WebKit. – CodeMouse92

5

Soy parcial, pero si no te importa usar (LGPL-ed) Qt, ¿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 related examples.

+0

Hola Ariya, terminamos yendo con Qt; ustedes están haciendo un trabajo increíble. ver mi actualización arriba. – conmulligan

Cuestiones relacionadas