.net webkit c++-cli pinvoke chromium

.net - ¿Alguna razón para preferir CefSharp a CefGlue(o viceversa)?



webkit c++-cli (3)

En el ámbito de proporcionar una implementación decente de Chromium Embedded Framework (CEF) para .Net, las dos opciones principales parecen ser CefSharp y CefGlue. Difieren en el enfoque (CefGlue usa P / Invoke para llamar al código no administrado de CEF, CefSharp usa un contenedor de C ++ / CLI de modo mixto alrededor de las bibliotecas de CEF).

¿Hay alguna razón por la que un ensamblaje en modo mixto es mejor que las llamadas P / Invoke? En igualdad de condiciones, parece que CefGlue (la lib de P / Invoke) proporciona un envoltorio "más delgado" alrededor del proyecto CEF, lo que significa que probablemente sea más rápido responder a las actualizaciones en la biblioteca ascendente.

¿Hay alguien con experiencia en ambas bibliotecas que pueda compartir cuáles serían los factores diferenciadores?


En cierto sentido, son más o menos lo mismo y cualquiera que sea el que elija debería poder salirse con la suya en 2014. Tuvimos esta pregunta hace algún tiempo y aquí tenemos lo que hemos encontrado:

CefSharp

Ventajas:

  1. WinForms es un proyecto muy viejo y maduro. Si va a utilizar WinForms, probablemente sea el camino a seguir;
  2. Tiene un paquete NuGet, por lo que es fácil de usar y actualizar;
  3. Admite la versión más nueva de WPF (.NET 4+);

Desventajas:

  1. Como @Uwe Keim había mencionado, recientemente comenzaron a admitir WPF, por lo que no es tan maduro como Xillium.CefGlue;
  2. La comunidad no es tan receptiva a tus necesidades;
  3. Sin soporte Mono.

CefGlue

Ventajas:

  1. Es .NET 2.0 amigable. Tu código podrá ejecutarse en él. (Esto fue crítico para nosotros)
  2. Una comunidad muy receptiva que te ayudaría a conseguir lo que necesitas hecho / arreglado;
  3. Soporte más maduro para WPF;
  4. Soporte mono.

Desventajas:

  1. No hay paquete NuGet por lo que sé, necesitarías agregar bibliotecas y actualizarlas tú mismo

Es 2018. Las fortunas del proyecto han cambiado bastante. CefSharp está vivo y bien con actualizaciones casi diarias en el depósito github. Los problemas se están resolviendo, actualmente solo 57 problemas abiertos y 1787 cerrados. CefGlue no parece estar bien. Las listas de correo están moribundas, no ha habido actualizaciones recientes. Hay dos bifurcaciones en github que resolvieron problemas más allá de la última versión de CefGlue lanzada.

Los fundamentos no han cambiado. CefSharp toma una dependencia del código C ++ / CLI, originalmente una manera fácil de hacer funcionar la interoperabilidad .NET-a-C ++. Pero eso solo puede funcionar en una máquina con Windows y en un proyecto que se dirige a la versión de escritorio completa de .NET Framework.

Pero no Mono, no .NETCore (relevante para las aplicaciones de Xamarin y UWP) o cualquier biblioteca o proyecto que se supone que es portátil para otro sistema operativo. C ++ / CLI no es una opción en tal escenario y pinvoke debe ser la alternativa. Entonces CefGlue.


Para completar la respuesta de Artem, CefSharp solo proporciona una integración básica de JavaScript con C #, mientras que CefGlue ofrece una solución de integración muy completa al exponer todos los enlaces de JavaScript que ofrece CEF.

En cuanto al paquete Nugets, acabo de crear los paquetes nuget de CEFGlue para .Net 4.5 que apunta a 3.2272.2035 versión CEF: Unofficial.CefGlue.WPF y Unofficial.CefGlue.WindowsForm .