2009-07-20 16 views
6

Cualquiera que haya trabajado con Subsonic3 y Entity Framework aquí, ¿quién me puede decir los pros y los contras? Esta es la primera vez que intento probar esto. Subsonic es fácil de configurar, así como Entity Framework. No estoy seguro de si Entity Framework funciona con otras bases de datos ya que SubSonic sí le gusta MySql PGsql, etc. ...? He leído esta publicación (http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic) que es lo suficientemente convincente como para elegir Entity Framework sobre SubSonic. Pero quería una segunda apertura.Subssonic 3 VS Entity Framework

+2

Los puntos de referencia de Tim no son pruebas de perfía típicas: SubSonic no tarda tanto en cargarse. http://blog.wekeroad.com/subsonic/subsonic-scaling/ –

Respuesta

17

¡Bien, estos dos son bestias bastante diferentes!

Subsonic 3 es una gran herramienta para mapear simple y fácilmente una estructura de base de datos bastante 1: 1 a clases de objetos, donde cada clase será una representación exacta de la tabla en la base de datos subyacente (como es el caso de Linq- to-SQL también).

Entity Framework por otro lado se dirige a escenarios mucho más complejos, donde su dominio o modelo de objeto (sus clases) no necesariamente mapeará 1: 1 a las tablas de la base de datos. Es por eso que EF tiene una trilogía de archivos XML, uno que describe el nivel conceptual (sus objetos de dominio), uno el nivel de almacenamiento (el diseño de la base de datos) y el mapeo entre esos dos.

IMHO, Subsonic 3 y Linq-to-SQL son perfectos para proyectos rápidos, pequeños y medianos, donde su base de datos es lo suficientemente flexible como para cambiar si es necesario y donde tiene una asignación bastante simple de sus objetos a tablas . EF realmente brilla en aplicaciones empresariales a gran escala, donde el nivel de su base de datos puede ser inamovible, y no puede cambiarlo, o su aplicación debe "sobrevivir" incluso si la base de datos de Underyling cambia.

Bestias completamente diferentes: audiencias totalmente diferentes, en mi opinión.

Marc

PS: Me pregunto si Tim estaba realmente utilizando subsónico 3 en esta comparación, y qué es exactamente lo que estaba haciendo. Mi intuición hubiera sido que EF sería la sobrecarga "más grande" y por lo tanto podría ser un poco menos eficiente (pero más flexible, y en escenarios empresariales, eso vale su peso en oro, incluso cuando se sacrifica algo de rendimiento)

+0

Gracias por la excelente respuesta. – Shuaib

+0

Además de su PS, el artículo dice "Subsonic 2.1 (resultados similares producidos con 3.0)". Como tú, hubiera pensado que SubSonic, más liviano, habría sido más rápido. Y sé que estoy regalando un poco de rendimiento usando SS versus codificación básica, pero la flexibilidad definitivamente vale la pena. – kevinw

3

En caso de que esto ayude, en mis puntos de referencia utilicé Subsonic 2.1 (como se indica) y comparé capas de acceso a datos en un escenario de carga moderada (metodología según lo indicado). Proporcioné el código, por lo que mi prueba se puede replicar fácilmente.

Si somete el sistema a carga, reproduciendo las condiciones en una aplicación web mientras está en uso, EF demuestra ofrecer un rendimiento mucho mejor. Las pruebas de carga de la aplicación web completa lo confirman. En pruebas más complejas, las capacidades de optimización de EF, como la carga diferida, pueden ofrecer aún mayores ventajas de rendimiento que las de Subsonic.

Si compara operaciones de acceso a datos individuales, p. en una prueba de unidad simple, Subsonic parece ser más rápido. En particular, Subsonic se inicializó más rápidamente.

Recomendaría Fluent NHibernate o Entity Framework si el rendimiento es una consideración clave.