2011-08-19 12 views
7

Estoy heredando un montón de programas en el trabajo donde el autor original usó los componentes de datos de Microsoft Visual Studio (donde un conjunto de datos, adaptador de datos, etc.) están creando el entorno de diseño (desde la caja de herramientas o usando asistentes). Esto produce algunas clases semi-adaptadas (especializadas para los datos) y también coloca el código SQL en las clases generadas por el diseñador.¿Cuáles son los pros y los contras de usar componentes de diseñador de Visual Studio para los datos

Así no estoy acostumbrado a hacer cosas (siempre he preferido tener inequívocamente un conjunto de datos o crear mi propia clase especializada para guardar los datos y ocultar la complejidad de la capa de datos subyacente).

¿Alguien tiene alguna buena idea o enlaces sobre las ventajas y desventajas del uso de los componentes de datos de Visual Studio?

(Una nota al margen, el autor original tampoco hizo un comentario exhaustivo y escribió, para mi gusto, un código demasiado "inteligente" que no es fácil de interpretar, así que no me inclino a pensar que él sabe mejor que yo)

Supongo que otra forma de preguntar es: ¿el uso de los componentes del diseñador de datos da como resultado un código que está "siguiendo las mejores prácticas" y es mantenible, etc.? No me parece así, pero estoy buscando la opinión de expertos.

[EDIT: Se ha añadido un contexto más aclaraciones de intención]

Si estoy en lo cierto (y parece que soy) sobre el uso de componentes de diseño realmente ser el más adecuado para prototipos, etc., entonces estoy Voy a tener que tener algunas conversaciones difíciles con los desarrolladores originales y mi gerente. Así que me gustaría agregar más énfasis en "enlaces que discuten los pros y contras" parte de mi pregunta ... Estoy buscando algo sustancial que pueda usar para respaldar mis afirmaciones de que este estilo de desarrollo/código no es el más apropiado para el uso de producción ... Gracias.

Respuesta

3

En componentes visuales generales son para aplicaciones de usar y tirar, POC y aplicaciones de pico, es decir, la creación de prototipos. Esto es por un par de razones; se juntan muy rápido pero es una pesadilla completa de mantener. No estoy seguro del tamaño de su aplicación, pero si fuera yo, estaría argumentando que, en su forma actual, el costo de propiedad aumentará con el tiempo y, por lo tanto, buscaría un estilo de desarrollo más DDD. Bin la capa de datos y reemplácela con un buen ORM sólido; NHibernate (preferido) o Entity Framework 4 (más fácil de acceder). Suelta ese 'código inteligente' y comienza a usar el Kiss, Yagni, dry mantra.Podría ser difícil de conseguir que ellos vean la luz, pero una vez que empieza cuesta menos que te amo por eso;)

Si quieres leer un poco más en este aspecto en el área siguiente:

  1. Skill Matter son una instalación de entrenamiento que ejecuta sesiones abiertas y un montón de podcasts que puedes ver
  2. Un buen libro para que los desarrolladores y gerentes puedan leer es Ship IT, observa buenas prácticas de proyectos. Igual que cualquier cosa en la estantería pragmática
  3. Martin Fowlers' blog para todos cosa del DDD
  4. Ayende's blog es un gran lugar para todas las cosas NHibernate
  5. stackoverflow.com, este sitio mola
+0

gracias, es un buen consejo y cosas en las que ya creí. Por casualidad, tengo alguna referencia que pueda usar para ayudarme cuando le hago a los desarrolladores y decir, "miren muchachos, esto necesita cambiar ..." – Aerik

+0

Estoy de acuerdo con eso los componentes visuales DB no se deben usar en una aplicación "real". Sin embargo, reemplazarlos con un ORM sería mucho más complicado que reemplazar los componentes de DB visual con una clase de datos que todavía usa DataSets/DataTables de ADO.NET. La diferencia aquí es potencialmente semanas de trabajo vs. un par de horas. – MusiGenesis

+0

Todavía no es tan autoritario (en términos de pros y contras de usar componentes de diseño, mucha buena información de lo contrario, gracias) como esperaba, pero aprecio todos los comentarios y enlaces. En realidad, las respuestas en sí, siendo de esta comunidad y siendo bastante consistentes, son bastante convincentes, incluso sin citas autorizadas ... De todos modos, creo que esta es la * mejor * respuesta, así que estoy otorgando generosidad aquí. Gracias a todos por su aporte en este tema.Y deseadme suerte – Aerik

1

VS componentes de datos es un rápido desarrollo de aplicaciones. Desde este punto de vista, puede ver sus pros y contras:

pros: desarrollo rápido, no requieren mucha codificación y conocimiento. Bueno para pequeñas aplicaciones que no se cambiarán en el futuro.

contra: rompe la lógica de diseño de la aplicación de capa (agregue aquí todos los pros de dicho diseño) combinando todo en un solo archivo. Como resultado, casi imposible reemplazar el origen de datos dinámicamente. Hace más complicado el soporte de aplicaciones grandes. DI, TDD: es algo misterioso usándolo.

En realidad es una pregunta muy amplia. lo recomiendo para leer más sobre el desarrollo de aplicaciones de N-capas y Test Driven Development

Esperanza esta ayuda

+0

Gracias - Me gusta la respuesta directa de pros y contras. – Aerik

0

yo personalmente creo que está definitivamente en el correcto, PERO realmente depende de lo que ya tiene y de los planes para el futuro del producto.

He visto el código de producción que se usa tal como está usted hablando y funciona bien, y es fácil de mantener. Incluso hay una gran caída en los módulos de compañías muy grandes como Telerik que caen dentro de la misma categoría de desarrollo de la que usted está hablando.

Creo que lo que realmente es un factor importante para su empleador es: qué puede usar para hacer el trabajo de la manera más rápida y eficiente. Sin embargo, diría que, en general, las herramientas de "arrastrar y soltar" recién salidas de la caja no son muy buenas para las aplicaciones a nivel empresarial a largo plazo.

Aquí hay un artículo de Charles Petzold que puede proporcionarle más información de credenciales "expertas".

http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

0

No me incluso ir tan lejos como para decir que los componentes de diseño de base de datos son buenos para los POC o prototipos. Esos componentes se encuentran en Visual Studio principalmente como un argumento de venta para el marco, de modo que Microsoft puede decir "wow, mira lo fácil que es crear una aplicación basada en datos con .NET". Deberían haber sido eliminados hace años, en mi humilde opinión.

Sin embargo, no confunda los componentes del diseñador con ADO.NET (es decir, DataTables, DataSets, DataReader, DataAdapters etc.). Dado que la aplicación que heredó se creó en torno a los componentes del diseñador, eso significa que también se desarrolló fundamentalmente en torno a los componentes de ADO.NET. Puede (y debe) deshacerse de los componentes de diseñador, pero no necesariamente debe deshacerse de ADO.NET también.

Cuestiones relacionadas