Estoy preparando un nuevo proyecto de Windows y me pregunto qué tipo de tecnología DAL usar. Originalmente estaba buscando algo más simple para no pasar demasiado tiempo construyéndolo. Pero también entiendo que debe ser eficiente y escalable a largo plazo.Nuevo proyecto .NET 3.5: ¿Qué tecnología DAL usar?
Planeo usar el Cliente WPF (MVVM) y el Servicio WCF en un sistema de 3 niveles.
Sólo para resumir todas las tecnologías existentes que conozco:
conjuntos de datos
PRO: Puede ser un poco anticuado, pero muy fácil de usar y dejar que la mayoría de las partes se ajusten automáticamente generado para ti Un aspecto poderoso sobre los conjuntos de datos es la facilidad de atravesar datos relacionados a través de las Relaciones. También de alguna manera está desconectado de la base de datos y podría simplificar las actualizaciones al cuidar las marcas de tiempo automáticamente. Incluye validación.
CONTRA: Bastante anticuado. Algunos los consideran como objetos comerciales/modelos reales, pero solo un espejo de las tablas de datos SQL. Pasarlos entre WCF Service/Client puede ser más difícil que los objetos de negocios creados por ellos mismos.
Enterprise Library 4.1 - Acceso a datos del bloque
PRO: El DAL está muy bien puesto en un patrón de fábrica. Se ocupa de la apertura y el cierre de la conexión automáticamente. Muy fácil de usar para la mayor parte. Admite tanto los dataSets como los SQL Sps normales para crear sus propios objetos comerciales. Como parte de un Framework en curso, puede ser mucho más eficiente usarlo en combinación con el resto de Enterprise Library para obtener un producto final eficiente.
CONTRA: ??
LINQ a SQL
PRO: Auto crea las tablas SQL en objetos de negocio. Fácil de CRUD. Teóricamente una muy buena manera de hacerlo.
CONTRA: Habiendo jugado con él cuando salió, lo encontré escamoso y a veces inestable. Ya se considera una tecnología muerta después del anuncio de Microsoft que Entity Framework 4.0 - como parte de .NET 4.0 - será el camino recomendado por Microsoft. También se esperan pocas correcciones de errores en .NET 4.0, pero ya no hay más planes de ampliación de funciones.
Entity Framework 4.0
no sé nada al respecto, pero sólo que con el tiempo reemplazar todo lo demás como en .NET 4.0. También estoy tentado de usarlo, sin embargo, dado que aún está en BETA, todavía no podría hacerlo.
Estoy muy tentado de utilizar Enterprise Library 4.1 - Bloque de acceso a datos y crear mis propios objetos comerciales. La gran Con es que tomará más tiempo crear el DAL. A menos que alguien pueda convencerme de usar DataSets a través del Bloque de acceso a datos en su lugar.
¿Cuáles son sus comentarios e ideas? Muchas gracias, Kave
Estaba pensando un poco y creo que tienes razón. Usar EntLib todavía significa mucho trabajo creando todo a mano. Cuando mencionas EF, ¿te refieres a la versión 4.0 BETA o te refieres a la versión actual 1.0? He estado probando la versión 1.0 anoche y debo decir que se ve bastante bien y hace el trabajo. Justo antes probé SubSonic, que no creaba código para mis tablas de búsqueda, que tenía el mismo nombre que uno de sus campos existentes. Esto debe haber confundido subsónico. EF 1.0 hizo el trabajo perfectamente bien y creo que iré de esta manera. ¿Qué piensas? – Houman
EF 1 no es ni de lejos tan rico en funciones como LinqToSql y LinqToSql es bastante pobre en cuanto a características. A EF 1 le falta soporte para los conceptos básicos de ORM, como el soporte adecuado de carga diferida, que LinqToSql sí admite. –
He usado EF 1.0 para algunas aplicaciones, las que tienen bases de datos más pequeñas y que no eran críticas para el rendimiento, y he estado satisfecho con ellas. El requisito básico era "introducir y sacar datos de la base de datos". Si las características, la escalabilidad y el rendimiento son una gran preocupación, definitivamente podría probar EF, pero podría querer abstraer el acceso a datos usando otra capa de software, o algo así como CSLA, para poder cambiar o actualizar las tecnologías de acceso a datos más adelante. Por supuesto, en ese punto, los beneficios de RAD podrían no estar más allí y es posible que desee considerar una pila personalizada completa. –