El control WPF WebBrowser basado en Internet Explorer sufre algunos problemas de teclado y enfoque y problemas de pérdida de memoria . Como solución alternativa a estos problemas, estamos considerando opciones disponibles para alojar Chromium en lugar del control WebBrowser en nuestro proyecto WPF / C # basado en la edición de HTML. Preguntas similares se han hecho aquí anteriormente. Leí las respuestas e hice mi propia investigación, pero espero obtener más comentarios de personas que realmente han utilizado cualquiera de las siguientes opciones en proyectos de calidad de producción :
Parece muy apropiado, pero no me gusta el hecho de que el proyecto no sea de código abierto y que el código fuente completo no esté fácilmente disponible. Además, podría ser una exageración para nuestro proyecto, ya que el renderizado fuera de pantalla no es algo de lo que realmente dependamos.
Chromium Embedded Framework (CEF) y enlaces .NET para CEF
Esta es probablemente la mejor opción disponible actualmente. El proyecto parece estar vivo y activo, estando actualmente sincronizado con Chrome v27. CEF3 utiliza la arquitectura multiproceso de Chrome. También parece que Adobe le está dando algún respaldo .
Si bien el propósito original era ser un complemento HTML5 para IE y Firefox, en realidad también funciona como control ActiveX independiente, por lo que podría envolverlo para usarlo con WPF. Expone una API suficiente para la interacción con la página web interna ( onmessage, addEventListener/removeEventListener, postMessage
). Soy consciente de que Google debe descontinuar Chrome Frame, pero supongo que las fuentes permanecerán en el repositorio de Chromium. No debería ser difícil actualizarlo con el último código de Chromium a medida que avanzamos, y tendríamos un control total sobre esto.
No es exactamente basado en cromo y no utiliza el motor V8, por lo que no es realmente una opción.
¿Hay alguna otra opción que haya pasado por alto?
Le agradecería mucho que alguien compartiera su experiencia con cualquiera de las opciones anteriores para un proyecto WPF de calidad de producción en la vida real. ¿Tuvo alguna implicación de integración, licencia o implementación? Gracias.
[EDITADO] También me gustaría agradecer a artlung por dar un impulso a esta pregunta al proporcionar una generosa oferta de recompensa.
fuente
Tuvimos exactamente el mismo desafío hace algún tiempo. Queríamos usar la biblioteca de código abierto CEF3 que está basada en WPF y es compatible con .NET 3.5.
En primer lugar, el autor de CEF a sí mismo en la lista de unión para diferentes idiomas aquí .
En segundo lugar, seguimos adelante con el enlace de código abierto .NET CEF3 que se llama Xilium.CefGlue y tuvimos un buen éxito con él. En los casos en que algo no funciona como cabría esperar, el autor suele responder muy bien a los problemas abiertos en el rastreador de bitbucket incorporado
Hasta ahora nos ha servido bien. El autor actualiza su biblioteca para admitir las últimas versiones de CEF3 y correcciones de errores en bases regulares.
fuente
Aquí hay otro:
http://www.essentialobjects.com/Products/WebBrowser/Default.aspx
Este también se basa en el último motor de Chrome, pero es mucho más fácil de usar que el CEF. Es un único .NET dll al que simplemente puede hacer referencia y usar.
fuente
Eche un vistazo a la biblioteca DotNetBrowser desarrollada por el equipo al que pertenezco. Proporciona controles de navegador WPF y WinForms basados en Chromium, que son bastante fáciles de integrar en la aplicación .NET. Es compatible con todos los estándares web modernos, incluidos HTML5, CSS3 y JavaScript. La página renderizada se ve exactamente como en Google Chrome.
La biblioteca hereda la arquitectura multiproceso de Chromium: cada página web se procesa en un proceso de Chromium separado y la aplicación continuará funcionando incluso después de que el complemento se bloquee o se produzca cualquier otro error inesperado en la página web.
Estas son algunas otras características útiles, proporcionadas por DotNetBrowser: es posible escuchar eventos de carga, manejar la actividad de la red, configurar proxy, simular acciones del usuario, trabajar con cookies, acceder y modificar DOM, escuchar eventos DOM, llamar a JavaScript desde .NET y viceversa, use la cámara web y el micrófono en la página web, configure la comunicación basada en WebRTC y más .
Consulte la Referencia de API para más detalles.
El fragmento de código siguiente muestra cómo crear un BrowserView, incrustarlo en un formulario y cargar una URL:
Una vez que ejecute el ejemplo anterior, obtendrá el siguiente resultado:
La biblioteca es comercial. Las licencias comerciales incluyen paquetes de soporte para diferentes tamaños de equipo. También es posible comprar el código fuente de la biblioteca.
Además de su propia página, el componente está disponible como paquete NuGet y como paquete VSIX en Visual Studio Marketplace.
fuente
He usado Awesomium.NET. Aunque no me gusta el hecho de que no es de código abierto, y también el hecho de que utiliza un motor de renderizado Webkit bastante antiguo, es realmente fácil de usar. Ese es el único respaldo que puedo darle.
fuente
ACTUALIZACIÓN 2018 MAYO:
Alternativamente, puede incrustar el navegador Edge, pero solo apunta a Windows 10.
Aquí está la solución.
fuente
Tuve el mismo problema con mi lector RSS WPF, originalmente fui con Awesomium (creo que la versión 1.6) Awesomium es genial. Obtiene mucho control para el almacenamiento en caché (imágenes y contenido HTML), ejecución de JavaScript, interceptar descargas, etc. También es súper rápido. El aislamiento del proceso significa que cuando el navegador falla, no bloquea la aplicación.
Pero también es pesado, incluso la versión de lanzamiento agrega aproximadamente 10-15 mb (no recuerdo el número exacto) y, por lo tanto, una leve penalización de inicio. Entonces me di cuenta, el único problema que tenía con el control del navegador IE era que arrojaría los errores de JavaScript de vez en cuando. Pero eso se solucionó con el siguiente fragmento.
Apenas utilicé mi aplicación en XP o Vista, pero en Win 7 y superiores nunca fallaba (al menos no porque usaba el control del navegador IE)
fuente
IWebBrowser2
interfaz interna .Microsoft está lanzando el control WPF " Microsoft Edge WebView2 " que nos brindará una excelente opción gratuita para incorporar Chromium en Windows 10, Windows 8.1 o Windows 7. Está disponible a través de Nuget como paquete
Microsoft.Web.WebView2
.fuente