Порівнюємо браузерні двигуни - Блог ITVDN
ITVDN: курси програмування
Відеокурси з
програмування
УКР
  • РУС
  • УКР

    Вибери свою IT спеціальність

    Підписка
    УКР
    • РУС
    • УКР
    Arrow
    27 марта состоится вебинар «Подготовка к собеседованию по PHP» Подробности и регистрация
    Arrow

    Порівнюємо браузерні двигуни

    advertisement advertisement

    Введение

    В данной статье сравнивается четыре самых популярных браузерных движка для WinForms, а именно WebBrowser, Gecko, Awesomium и OpenWebKitSharp.

    Исходники для работы:

     Браузеры


     

    Небольшие сравнительные характеристики

    WebBrowser

    • Стандартный браузерный движок .NET фреймворка.
    • Ядро – MSHTML + Active-X, включающий в себя COM IWebBrowser2 MSHTML IWebBrowser2.
    • Может использоваться для Winforms и WPF.

    Gecko

    • Сторонний браузерный движок.
    • Ядро – XULRunner, используемый в браузере Firefox.
    • Имеет только поддержку Winforms.

    Awesomium WebControl

    • Сторонний браузерный движок с настраиваемым внешним ядром.
    • Ядро - .NET, WebKit.
    • Поддерживается Mono, WPF и Winforms.

    OpenWebKitSharp

    • Сторонний браузерный движок.
    • Ядро – WebKit, используемый в браузерах Safari и Chromium (Chrome).
    • Имеет только поддержку Winforms.
     

    WebBrowser

    Gecko

    Awesomium

    OpenWebKitSharp

    Лицензия

    Бесплатная

    Бесплатная. Open-source: MPL 1.1/GPL 2.0/LGPL 2.1

    Бесплатная, если Ваш проект имеет прибыть в $100 тис. (можно купить за $2900)

    Бесплатная

    Платформы

    Winforms, WPF

    Winforms

    Winforms, WPF, Unity, Mono, SDL

    Winforms

    Тип процессора

    Любой

    ?

    X86

    ?

    Скорость загрузки страницы

    Низкая

    Средняя

    Высокая

    Высокая

    Требуемые размеры библиотеки DLL

    0MB

    22.4MB

    40.5MB

    64.6MB

    Остановка GUI при загрузке страницы

    Нет

    Нет

    Да

    Да

    Минимальная требуемая версия .NET

    .NET 2.0 или более ранняя

    .NET 2.0 или более ранняя

    .NET 4.0

    ?

    Объект, метод, свойство модели

    -

    WebBrowser-identical

    Не WebBrowser-identical

    WebBrowser-identical, но многие методы и свойства не работают

    Использование контента DOM – set HTML

    Да

    Да

    Да

    Только с помощью JS

    Использование контента DOM – get HTML

    Да

    Да

    Да, но не работают с отключенным JS

    Только с помощью JS

    DOM – GetElementById

    Да

    Да

    Только с помощью JS

    ?

    DOM – GetElementsByClassName

    Только с помощью JS

    Да

    Только с помощью JS

    ?

    DOM – GetElementsByTagName

    Да

    Да

    Только с помощью JS

    ?

    Встраивание JavaScript

    Да

    Да

    Да

    Да

    Отключение JavaScript

    Нет

    Да

    Да

    ?

    Настройка прокси-сервера

    Нет

    Да

    Да

    ?

    Встроенный визуальный редактор HTML

    Да

    ?

    Нет

    Нет

    Проверка HTML синтаксиса

    Нет

    ?

    Да

    Да

    Встроенный менеджер загрузок

    ?

    ?

    ?

    Да

    Использование WebBrowser

    Встроенный визуальный редактор HTML

    webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue
        (webBrowser1.Document.DomDocument, "On", null);

    Программная вставка HTML элемента 

    // appends:

    //

    //  

    //    src="http://dj9okeyxktdvd.cloudfront.net/App_Themes/CodeProject/Img/logo250x135.gif" />

    //          

    var mylink = webBrowser1.Document.CreateElement("a");

    mylink.Id = "mylink";

    mylink.SetAttribute("href""http://codeproject.com/");

    var myimg = webBrowser1.Document.CreateElement("img");

    myimg.Id = "myimg";

    myimg.SetAttribute("src",

    "http://dj9okeyxktdvd.cloudfront.net/App_Themes/CodeProject/Img/logo250x135.gif");

    mylink.AppendChild(myimg);

    webBrowser1.Document.Body.AppendChild(mylink);

    Выбор DOM элемента – GetElementById 

    var id = "mylink";

    var el = webBrowser1.Document.GetElementById(id);

    if (el != null) {

        MessageBox.Show("Element with id=\"" + id + "\" has innerHTML: " + el.InnerHtml);

    }

    else {

        MessageBox.Show("Element with id=\"" + id + "\" not found.");

    }

    Выбор DOM элемента – GetElementsByTagName

    var tag = "img";

    var elz = webBrowser1.Document.GetElementsByTagName(tag);

    if (elz.Count > 0) {

        MessageBox.Show(elz.Count + " elements with tag <" + tag + "> found.");

    }

    else {

        MessageBox.Show("No elements with tag <" + tag + "> found.");

    }

    Использование контента DOM – set HTML 

    webBrowser1.DocumentText = "<html><head><script>alert('check!');

    script>head><body>lorembody>html>";

    Встраивание JavaScript 

    var head = webBrowser1.Document.GetElementsByTagName("head")[0];

    var scriptEl = webBrowser1.Document.CreateElement("script");

    scriptEl.SetAttribute("text""function sayHello() { alert('hello') }");

    head.AppendChild(scriptEl);

    webBrowser1.Document.InvokeScript("sayHello");

    Использование Gecko 

    Использование контента DOM – set HTML

    geckoWebBrowser1.Document.DocumentElement.InnerHtml =

    "<html><head>head><body>

    <a class=\"link\">fa>body>html>";

     Выбор DOM элемента – GetElementsByClassName

    (geckoWebBrowser1.Document.GetElementsByClassName("link")[0] as

        Skybound.Gecko.GeckoElement).InnerHtml = "tt";

    Использование Awesomium WebControl 

    Использование контента DOM – set HTML

    webControl1.HTML = "<html><head><script>alert

    ('check!');script>head><body>lorembody>html>";

    Использование контента DOM – get HTML 

    var allhtml = webControl1.ExecuteJavascriptWithResult

        ("document.documentElement.outerHTML");

    Встраивание JavaScript 

    webControl1.ExecuteJavascript

    ("document.body.innerHTML += 'Hello, World!';");

    Отключение JavaScript 

    var ws = WebCore.CreateWebSession(new WebPreferences() { Javascript = true });

    webControl1 = new Awesomium.Windows.Forms.WebControl() { WebSession = ws };

    this.Controls.Add(webControl1);

    Настройка прокси-сервера 

    var ws = WebCore.CreateWebSession(new WebPreferences()

    { ProxyConfig = "255.255.255:8080" });

    webControl1 = new Awesomium.Windows.Forms.WebControl() { WebSession = ws };

    this.Controls.Add(webControl1);

    Использование OpenWebKitSharp 

    Использование контента DOM – set HTML

    webKitBrowser1.GetScriptManager.EvaluateScript("document.body.innerHTML='';");

    Выводы

    В каждом движке есть свои + и –, с которыми можно столкнутся при разработке браузера. В любом случае, только Вам решать, какой из движков подойдет под Ваш стиль разработки.

    Источник: http://www.codeproject.com/Tips/825526/Csharp-WebBrowser-vs-Gecko-vs-Awesomium-vs-OpenWeb?PageFlow=Fluid

    КОМЕНТАРІ ТА ОБГОВОРЕННЯ
    advertisement advertisement

    Купуй передплатуз доступом до всіх курсів та сервісів

    Бібліотека сучасних IT знань у зручному форматі

    Вибирай свій варіант підписки залежно від завдань, що стоять перед тобою. Але якщо потрібно пройти повне навчання з нуля до рівня фахівця, краще вибирати Базовий або Преміум. А для того, щоб вивчити 2-3 нові технології, або повторити знання, готуючись до співбесіди, підійде Пакет Стартовий.

    Стартовий
    • Усі відеокурси на 3 місяці
    • Тестування з 10 курсів
    • Перевірка 5 домашніх завдань
    • Консультація з тренером 30 хв
    59.99 $
    Придбати
    Весняний
    • Усі відеокурси на 15 місяців
    • Тестування з 24 курсів
    • Перевірка 20 домашніх завдань
    • Консультація з тренером 120 хв
    90.00 $
    219.99 $
    Придбати
    Акція
    Преміум
    • Усі відеокурси на 12 місяців
    • Тестування з 24 курсів
    • Перевірка 20 домашніх завдань
    • Консультація з тренером 120 хв
    169.99 $
    Придбати
    Notification success