2008-09-08 18 views
5

Actualmente estoy trabajando en la creación de una herramienta ORM bastante simple para servir como un marco para varios proyectos web para un cliente. La mayoría de los proyectos son internos y no requerirán cantidades masivas de concurrencia y todos irán en contra de SQL Server. He sugerido que vayan con herramientas ORM como SubSonic, NHibernate y una serie de otros proyectos de código abierto, pero por razones de mantenimiento y flexibilidad quieren crear algo personalizado. Entonces mi pregunta es esta: ¿Cuáles son algunas de las características que debo asegurarme de incluir en esta herramienta ORM? Por cierto, usaré MyGeneration para hacer las plantillas de generación de código.Buenas funciones para un ORM

+1

El cliente no debería preocuparse por qué tipo de ORM se utiliza y, en su lugar, convencerlo de que lanzará su producto/servicio al mercado más rápido cuando implemente tecnologías de código abierto/bibliotecas de terceros (jQuery, Enterprise Library, etc.). – Kane

+0

NHibernate es más fácil de mantener y más flexible que el ORM de homebrew poor-developer, uno de los consultores creados aquí para uno de nuestros proyectos. – JasonTrue

Respuesta

1

Tienes que ir al estilo nHibernate, en mi experiencia, y tenerlo para que tengas algún tipo de mapa, entre tus objetos y la base de datos. Esto permite que sus objetos tengan algunas cosas que son difíciles de representar en una base de datos pero que se representan más fácilmente en POCO.

Generation lo pone en marcha, ofreciéndole clases que cumplan con su esquema, pero si planea mantener algo o probar algo, el mapeo ahora es doloroso por placer.

Subsonic es un gran modelo, y es de código abierto, si debe ir a la generación, use sus plantillas en myGeneration para obtener una ventaja.

BTW: He hecho lo que estás haciendo, y terminé con algo muy similar a subsónico, y ahora les aconsejo a mis clientes que tomen la fuente subsónica y la bifurquen.

23

Por el amor de todo lo que es sagrado (y las mujeres y los niños), haga todo lo posible para convencerlos de no ir con una solución O/RM personalizada. ¿Por qué la gente quiere reinventar la rueda cuando ya existen llantas de código abierto perfectamente buenas?!?!

+0

Bueno, estoy totalmente de acuerdo ... soy un gran admirador tanto de SubSonic como de NHibernate, pero en este caso creo que el cliente siempre va a retroceder. –

3

IMO escribir su propio OR/M es una de las peores decisiones de diseño que pueda tomar. "mantenibilidad y flexibilidad" son razones para NO escribir su propio OR/M.

favor, lea See 25 Reasons Not To Write Your Own Object Relational Mapper, y ver si su cliente realmente quiere pagar lo que cuesta construir algo así como NHibernate ($ 7.6M) o SubSonic ($ 1,5M). Porque, como dijo Chan Chan anteriormente, terminarás con algo similar a eso.

1

Tal vez solo sea posible que necesite algunas "características" que aún no existen en las soluciones existentes. Quizás necesites algo más simple también. 1.5 $ para Subsonic es simplemente escandaloso. Quizás quiera usar POCO. Tal vez quieras usar las cosas fácilmente en un escenario de 3 niveles. Quizás no desee admitir TODOS los RDBMS en el planeta, por lo que puede codificar y optimizar el código solo para su objetivo. Quizás desee implementar un seguimiento de objetos más inteligente. Tal vez algunas decisiones de diseño tomadas por los orms existentes te vuelvan loco ...

Yo mismo estoy usando un orm personalizado desarrollado por mí mismo y yo, y estoy satisfecho de haberlo hecho. No hay un dragón escondido debajo de la alfombra, ningún escenario sorpresa. Mi orm hace exactamente lo que quiero que haga, nada menos, nada más.

5

Si el cliente no está interesado en OSS debido a (real o imaginario) percepciones sobre el apoyo, ¿ha considerado cualquiera de los ORM de terceros de alta calidad comercial como LightSpeed que viene con un buen diseñador de interfaz gráfica de usuario herramienta

LightSpeed ORM http://www.mindscape.co.nz/images/chrome/screendump.jpg

Mindscape (la empresa que vende LightSpeed) es una empresa de Nueva Zelanda con sede cerca de donde vivo, me he encontrado con algunos de los desarrolladores de allí, y sé que son famosos por tener la atención al cliente increíble. Y te dan el código fuente cuando compras el software, por lo que puedes modificarlo como quieras.

Probablemente no desee tener que hacer su propio ORM a menos que tenga que y que su cliente esté dispuesto a entregarle una cantidad estúpida de efectivo para que lo haga.

0

Nadie lo ha mencionado todavía; pero vaya con LLBLGen. Puede personalizar la plantilla como desee y, obviamente, también puede escribir su propio código personalizado en las clases generadas. Cómpralo. Nunca mirarás hacia atrás, y estarás diciendo "¡Gracias, sedoso!" cuando funciona consistentemente bien. (No lo escribí, pero me encanta). Si no funciona para usted, también puede decir "¡Maldito seas!". Pero eso es poco probable, sin embargo, lo ofrezco como una opción.

Lo único malo que noté sobre LLBLGen ha sido el soporte para cambiar entre bases de datos/servidores sobre la marcha. No es compatible con una característica que me gustaría; es decir, la capacidad de detectar que una entidad determinada que recuperó no "existe" en una nueva base de datos a la que ha cambiado. Pero este es un caso raro.

Sugiero LLBLGen, porque estaba en el proceso de escribir mi propio OR/M cuando lo encontré. Nunca miró hacia atrás.

2

Hay un montón de publicaciones de Davy Brion (un comisionado de NHibernate) que, por alguna razón, también se ven obligados a escribir un ORM personalizado para un cliente.

Algunas de las cosas que cubre son: Clases

  • de mapeo para las Tablas
  • fuera de la funcionalidad de la caja de CRUD
  • Entidades hidratantes
  • Sesión nivel de caché
  • Ejecutora personalizada Consultas

Definitivamente vale la pena ng out, si DEBE seguir este camino: Build Your Own Data Access Layer Series

0

Su trabajo como consultor (parece que es lo que es) es aprovechar su experiencia en implementar para sus clientes una solución que se adapte a sus deseos con un costo mínimo y inversión de tiempo

Si quieren construir y vender un OR/M. El ir a la ciudad haciendo uno. Si quieren algo más, usa uno que ya exista para hacer el trabajo.

Si insisten en gastar dinero, compre uno existente (no mencionaré ninguno, pero existen algunos buenos que no son gratuitos).

1
  • caché de segundo nivel

    Le permite mantener las instancias de entidades en memoria

    • -sucia comprobar

      Permite actualizaciones de los cambios en un objeto sin cargarlo automática.

    • Potente lenguaje de consulta

    • Potente cascada de operación

    • Potente principal estrategia clave generador de

      marco ORM recogida mejor estrategia generador de clave primaria de acuerdo a apuntar la base de datos

    • Apoyo a elementos compuestos

    • Apoyo a eventos

      OnSave, onUpdate y así sucesivamente

    • buena documentación y libros de referencia

    • Apoyo a estado conversacional

Saludos,

0

Intenta usar Devart LinqConnect: todas las funciones de LINQ to SQL y un amplio soporte de los servidores de bases de datos más populares: Oracle, MySQL, Postgre, SQL Server y SQLite. Increíble herramienta de modelado visual, herramienta de monitoreo avanzada, soporte de alta calidad, como resultado, lo he aprendido solo en tres semanas durante la ejecución de mi proyecto.

Cuestiones relacionadas