Pregunta

Quiero saber su opinión sobre el uso de componentes de datos de proyectos. Que son la 'fuerza' y los puntos 'débiles' de desarrollo de aplicaciones (Win32 y Web), mediante el uso de Delphi y componentes para datos (a partir de Delphi conjunto estándar o de terceros)?

Using Firebird He trabajado mucho con IBObjects, que son un conjunto de componentes madura y funcionaba muy bien.

Pero también hay una gran cantidad de otros RDBMS (MySQL, MSSQL, DB2, Oracle, SQLite, Nexus, Paradox, Interbase, Firebird, etc.). Si usted ha desarrollado grandes proyectos, en el que se ha utilizado un lote componentes de reconocimiento de datos Por favor, conteste con el tipo de base de datos y componentes de nombre de conjunto de datos para notificaciones.

También estoy interesado en DB2 (AS400). ¿Qué componentes ha usado con éxito, o qué componentes son realmente un dolor de trabajar con?

¿Fue útil?

Solución

He encontrado que el uso de los componentes de resultados de reconocimiento de datos en una aplicación sin distinción clara entre el negocio y la lógica de interfaz de usuario.

Esto está bien para proyectos pequeños, pero a medida que crecen el código se vuelve cada vez menos mantenible.

Todos los diversos bits de código de evento (y sus interacciones) puede convertirse en una verdadera pesadilla para comprender!

Los datos para notificaciones Invariablemente, en tales casos que he zanjado componentes y han cambiado a un diseño MVC (codificado a mano).

Esto requiere una gran cantidad de esfuerzo por adelantado, pero los resultados (en mi humilde opinión) en un proyecto que es mantenible, extensible y depurable codificación.

Otros consejos

Después de haber intentado tanto el estilo de reconocimiento de datos y no de reconocimiento de datos de aplicaciones Delphi estoy de vuelta en el campo de los componentes de reconocimiento de datos en estos días. Se necesita un poco de trabajo y la disciplina de la capa correctamente el código pero aún así es más rápido que hacerlo todo a mano usando los controles no reconocimiento de datos.

A algunos de mis consejos para el uso del componente de datos para notificaciones son

  • No se limite a reescribir FishFact en una escala más grande. Poner algún pensamiento en su diseño.

  • No utilice un TDataModule, uso muchos TDataModules cada uno responsable de sólo un pequeño aspecto de sus datos de aplicaciones.

  • TDatasets pertenecen en TDataModules, mientras TDataSources pertenecen en TForms (a menos que se utiliza para las relaciones maestro / detalle).

  • Use conjuntos de datos en memoria tales como la DataSnap TClientDataSet.

  • Sus ClientDataSets no tiene que reflejar las tablas de bases de datos con exactitud. DataSnap le permite dar masajes a sus estructuras de datos en memoria para que pueda producir conjuntos de datos adaptados para fines específicos. Específicamente se pueden hacer cosas como

    • Junto a dos o más tablas en el conjunto de datos editable

    • desnormalización estructuras detalle tabla maestra, se puede simplificar el código de interfaz de usuario a veces.

    • Crea en memoria sólo los campos (como los campos calculados, pero se puede escribir en ellos también)

  • TClientDataSet tablas anidadas son útiles, pero no es la única manera de expresar las relaciones maestro detalle. A veces es mejor que hacerlo de la manera antigua con dos TClientDataSets independientes unidas a través de un TDataSource.

Tome un vistazo a las soluciones ORM.

Es un acercamiento agradable con una arquitectura de varios niveles. Ver para Delphi Win32

Datos controles conscientes son grandes, pero hay que asegurarse de obtener su código de negocio en una capa separada.

Esto no es difícil, pero hay que ser conscientes de cómo se puede hacer eso.

Un enfoque es tener sus componentes DataSet en un módulo de datos (u otro recipiente no visual).

Otro truco útil es utilizar un TClientDataSet hacer la entrada de interfaz de usuario, y usar eso como un buffer intermedio entre la interfaz de usuario y la capa de negocio. La capa de negocio a continuación, utiliza TDataSet componentes específicos de su capa de datos.

- Jeroen

de reconocimiento de datos de Delphi componentes no se dependía de que el motor de base de datos back-end que está utilizando, por lo que usar Firebird o MS SQL Server u Oracle o de otros no importa a sus componentes para datos. Sólo conocen el componente de origen de datos asignado a ellos y hacer todas sus cosas relacionada DB a través de eso.

Para mí, si algo se puede hacer con componentes de datos de una manera agradable, que los utilizará. Estos suelen ser pequeños proyectos que se deben hacer en un tiempo corto. En proyectos más grandes, puede ser totalmente descartar componentes para datos o utilizarlos en formas que no son más utilizados para la presentación de datos y no reciben la entrada del usuario. Cuando se trata de recibir la entrada del usuario, puede ser que utilice componentes que no son compatibles con datos, porque tengo más flexibilidad en el control de ellos y validar la entrada. Por supuesto componentes-ware datos pueden ser todavía útiles en tales escenarios también. Todavía se puede validar la entrada del usuario en el conjunto de datos de eventos como OnBeforePost. Además, si usted está usando un diseño de múltiples niveles, y su aplicación Cliente declara capa presentadora de datos, su validación de entrada se realiza en el nivel medio para que pueda recibir de entrada utilizando componentes de datos en la aplicación cliente, y enviarlos a la de nivel medio para la validación y procesamiento adicional.

componentes para datos son usful de un RAD y la perspectiva de prototipos, especialmente cuando estás informes de diseño o rejillas que se basan en los datos. es decir, puede improvisar en tiempo de diseño. Así que los utilizo como esa. Pero cuando llega el momento de transformarlo en el envío de código, casi siempre, cortan las conexiones, quito el SQL de las consultas, y hacer todo en el código. Es mucho más predecible y fácil de mantener de esa manera, especialmente en un entorno multi-desarrollador con el control de versiones. Cuando el SQL está incrustado en forma alguna parte, es un gran dolor para tratar de averiguar dónde está el SQL reside en realidad. Y es especialmente malo tener SQL en dos lugares, y luego tener que averiguar cuál es, en efecto.

Se puede usar UniDAC que permite muchos servidores de bases, incluyendo Firebird (que yo uso) y tiene muy buenas características.

Remobject SDK tendrá una combinación agradable de la arquitectura de n niveles y la abstracción de base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top