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

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

    Підписка

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

    Підписка

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

      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 $
      Придбати
      Акція
      Базовий
      • Усі відеокурси на 6 місяців
      • Тестування з 16 курсів
      • Перевірка 10 домашніх завдань
      • Консультація з тренером 60 хв
      72.00 $
      89.99 $
      Придбати
      Акція
      Notification success
      Ми використовуємо cookie-файли, щоб зробити взаємодію з нашими веб-сайтами та послугами простою та значущою.