Элемент управления WPF WebBrowser на основе Internet Explorer страдает некоторыми проблемами клавиатуры и фокуса и проблемами с утечкой памяти. В качестве альтернативного решения этих проблем мы рассматриваем доступные варианты размещения Chromium вместо управления WebBrowser в нашем проекте WPF/С#, основанном на редактировании HTML. Аналогичные вопросы были здесь. Я прочитал ответы и провел собственное исследование, , но я надеюсь получить дополнительную обратную связь от людей, которые действительно использовали любой из следующих вариантов в проектах качества производства:
Это выглядит очень уместно, но мне не нравится тот факт, что проект не является открытым исходным кодом, а полный источник недоступен. Кроме того, это может быть излишним для нашего проекта, поскольку визуализация без экрана не является чем-то, от чего мы действительно зависим.
Chromium Embedded Framework (CEF) и .NET привязки для CEF
Вероятно, это лучший вариант. Проект кажется живым и активным, в настоящее время синхронизируется с Chrome v27. CEF3 использует многопроцессорную архитектуру Chrome. Также похоже, что Adobe предоставляет некоторое одобрение.
В то время как первоначальной целью было быть плагин HTML5 для IE и Firefox, он фактически также работает как автономный элемент управления ActiveX, поэтому я могу его обернуть для использования с WPF. Он предоставляет достаточный API для взаимодействия с внутренней веб-страницей (onmessage, addEventListener/removeEventListener, postMessage
).
Я знаю, что Google - прекратить Chrome Frame, но я полагаю, что источники останутся в репозитории Chromium. Не составит труда обновить его с помощью последнего кода Chromium, поскольку мы будем иметь полный контроль над этим.
Не точно Chromium-based и не использует V8-движок, поэтому на самом деле это не вариант.
Есть ли другой вариант, который я мог бы упустить?
Я был бы очень признателен, если бы кто-то поделился своим опытом с любым из вышеперечисленных вариантов реалистичного проекта WPF в сфере производства. Были ли у вас какие-либо последствия интеграции, лицензирования или развертывания? Спасибо.
[EDITED] Я также хотел бы поблагодарить artlung за то, что вы дали этому вопросу толчок, предложив щедрое предложение щедрости.