2011-07-18 17 views
20

He visto artículos sobre estos dos marcos similares, pero la mayoría tienen dos años aproximadamente. Supongo que ambos proyectos son mucho más maduros ahora que hace dos años, y la situación es más compleja.CCI vs. Mono.Cecil: ventajas y desventajas

Por lo tanto, dado el estado actual de cada una de las bibliotecas, esperaba que alguien pudiera dar una explicación detallada de las ventajas y desventajas de cada una de ellas, y que debería preferirse en este momento.

+0

No estoy seguro de por qué hay 2 solicitudes cercanas. La pregunta es perfectamente válida. – leppie

+0

¿Por qué los votos para "no constructivo"?La pregunta sí solicita hechos y el estado actual del proyecto, no "cuál te gusta más". Por favor, no seas delecionista de SO;) – viraptor

+2

También tengo curiosidad por esta pregunta. Una buena respuesta detallada que compare los dos sería muy apreciada, así que voy a establecer una recompensa aquí. :-) – Noldorin

Respuesta

12

CCI

Pros:

  • le puede dar un control más preciso sobre su rendimiento
  • La última versión es un poco más maduro

Contras:

  • El modelo de objetos es más complicado (y confuso si usted es nuevo en reflexiones IL/de bajo nivel, como soy)

Cecil (en referencia a the newer git-hub version)

Pros:

  • tiene un modelo de objetos más simple por lo que será más fácil de empezar a trabajar en

Contras:

  • La última versión es menos maduro, por lo que tiene un menor número de ejemplos de código disponibles
  • El API es un trabajo en progreso
  • Usted no va a tener tanto control sobre el nombre de almacenamiento en caché (por perf)

Qué me quedaría con

couting las ventajas/desventajas, seguro que parece que me quedaría con CCI sobre Cecil. Pero no lo haría.

Cecil es de reciente creación, tiene un diseño de API fácil, tiene una autoría activa (bueno, lo hizo hace 7,5 meses, and still seems to now), y no tuvo problemas para solucionar cualquier problema que he encontrado.

CCI era bastante doloroso código contra - se toma el diseño basado en la interfaz de demasiado. El código es difícil de depurar. Algunas cosas parecen completas a primera vista, pero no lo son, o no manejan más de un caso de uso único. The NameTable stuff me hizo girar la cabeza (más de lo que ya era).

+0

No puedo recordarlo del todo, pero también creo que CCI tiene mejor soporte para la generación de código de alto nivel. Además, el soporte fue bueno/rápido para Cecil :) –

+0

¿Puede proporcionar alguna evidencia directa de algunos de estos comentarios? Además, tengo curiosidad por el rendimiento. Mi sospecha es que Cecil ha tenido mucho más trabajo en realidad. Parece ser más utilizado en proyectos de código abierto también. ¿Alguna idea? – Noldorin

+0

@Noldorin: Esta es mi experiencia anecdótica al probar ambos hace 7 meses y medio. Conseguí una solución de semi-trabajo en CCI, y la abandoné por Cecil. Sí, probablemente haya mucho más trabajo puesto Cecil desde entonces. Recuerdo que mis peores problemas fueron con: detectar * todos * tipos dependientes, determinar tipos de base y hacer generación de código. Mi proyecto consistía en reflejar un tipo de gráfico y las versiones de los tipos depuradas genéticamente, utilizando listas en lugar de matrices, tipos anulables, etc. CCI proporcionó un recorrido de patrón de visitante automático (¿pero incompleto?). No creo que Cecil lo haya hecho. –

1

Cecil - porque para mí, el apoyo de la comunidad es mejor que el CCI. Siempre encontré las respuestas en las listas de correo/sitios más rápido para cecil.

Cuestiones relacionadas