Подтвердить что ты не робот

Каков наилучший механизм рендеринга HTML для встраивания в приложение?

В настоящее время наше приложение использует компонент Trident Win32, но мы хотим отойти от этого по нескольким причинам, главным из которых является наше желание перейти на межплатформенную платформу.

Мы смотрим на WebKit и Gecko, но я хотел бы получить некоторые отзывы, прежде чем принимать решение. Вот некоторые из наиболее важных требований:

  • Он должен быть относительно быстрым, с небольшой площадью. В идеале мы сможем урезать все, что нам не нужно, без особых усилий.

  • Достойная документация важна. Я не ожидаю, что вам придется делать что-то слишком необычное, но вы никогда не знаете.

  • Мы используем С++ и хотели бы работать с хорошо продуманной объектно-ориентированной архитектурой, если это возможно.

  • Кросс-платформа - обязательная, и хорошая производительность будет полезна в долгосрочной перспективе (мы можем портировать на мобильные платформы).

Есть ли какие-либо соображения, которые мне необходимо принять во внимание, прежде чем принимать решение? Кто-нибудь работал с WebKit или Gecko раньше? Если да, есть ли какие-либо статьи или учебные пособия, которые могут оказаться полезными?

Update:

Спасибо за ответы ребята. Мы закончили с Qt 4.5, в который входит WebKit. На самом деле мы очень довольны, на самом деле я считаю, что Qt - это, пожалуй, лучший интерфейс пользовательского интерфейса, который я когда-либо использовал; разница между кодированием с родными API Win32, и это ошеломляет. Это также очень легко узнать, единственная серьезная проблема, с которой мы столкнулись, - это привыкание к парадигме сигналов/слотов.

4b9b3361

Ответ 1

Небольшая история может помочь в вашем решении. Когда Apple рассматривала, какой движок использовать в создании Safari, они посмотрели на Gecko, но решили пойти с KHTML, разблокировать его и назвать его WebKit. Их причины для этого заключались в том, что у Гекко было много останков, оставшихся от останков Netscape, и было намного сложнее.

KHTML/WebKit был новее и, следовательно, имел меньшее наследие. Он также был более чистым, быстрым и лучше документированным.

Одной из целей Firefox 3 было очистить базу кода и упростить ее. Из того, что я слышал, они сделали это, но я не знаю, как это сравнивается с текущими итерациями WebKit. По-видимому, этого недостаточно для Google, когда они сделали Chrome, и у них есть значительная доля в Firefox.

Подробнее см. здесь.

Ответ 2

Я предвзятый, но если вы не против использования (LGPL-ed) Qt, как насчет использования QtWebKit? Разумеется, его довольно легко внедрить, кросс-платформенное, имеет приятную демонстрацию веб-браузера, а также другие связанные примеры.

Ответ 3

Это зависит от ваших потребностей. Даже Webkit может быть излишним, если вы просто хотите отображать простой старый HTML. В некоторых моих приложениях вместо этого я использую wxHTML. Это компонент из библиотеки wxWidgets (не уверен, что вы можете использовать его без wx, хотя). Он легкий, поддерживает только базовые вещи HTML (некоторая поддержка CSS может быть доступна в следующей версии) и имеет действительно красивый элемент управления wxHtmlEasyPrinting, который дает хороший предварительный просмотр печати, а также отлично печатает. Что касается кросс-платформенных, wxWidgets работает в Windows, Linux, Mac и некоторых других системах, что бы, безусловно, соответствовало вашим требованиям.

Я не рекомендую ехать по дороге Гекко. Его можно интегрировать, но сделать это гораздо сложнее, чем KHTML/Webkit - просто потому, что Gecko не был построен с учетом вложения.

Ответ 4

Думаю, я бы предложил механизм Safari/Chrome WebKit, который был получен из KHTML, механизма рендеринга Konqueror.

Ответ 5

Попробуйте выбрать Webkit, поскольку он используется многими браузерами (Konqueror, Safari и Google Chrome). Это делает Webkit более универсальным и более приспособленным к другим потребностям.

Развитие Gecko очень привязано к Firefox. Многие изменения, внесенные в Gecko, выполняются, потому что Firefox их диктует. Например, Firefox 3 решил, что он собирается заблокировать все самоподписанные сертификаты в целях безопасности. Реализация была выполнена в движке Gecko, что означает, что любое приложение, которое решает включить Gecko, добавляет к этому ограничение безопасности.

Если вы можете оставаться с Webkit, так как это главным образом механизм рендеринга для HTML-страниц. Это было разработано с целью использования в различных браузерах. В то время как Gecko - это прежде всего механизм рендеринга одного браузера, который просто предлагает API для внедрения.

Ответ 6

Мое понимание Webkit довольно хорошее и меньше, чем Gecko. Предполагалось, что у Gecko недавно была обновленная версия, что делает ее довольно сопоставимой.