Frage

Ich möchte Ihre Meinung über die Verwendung von datensensitiven Komponenten in Projekten kennen. Welches sind die ‚Stärke‘ und ‚schwach‘ Punkte von Anwendungen (win32 und Web), unter Verwendung von Delphi und datensensitiven Komponenten (von Delphi Standard-Suite oder von Drittanbietern) zu entwickeln?

Mit Firebird Ich habe arbeitete viel mit IBObjects, die eine ausgereifte Suite von Komponenten und funktionierte sehr gut.

Aber es gibt auch viele andere RDBMS (MySQL, MSSQL, DB2, Oracle, SQLite, Nexus, Paradox, Interbase, Firebird, etc.). Wenn Sie große Projekte entwickelt haben, auf denen Sie viele Daten-aware verwendet haben Komponenten Bitte antworten Sie mit dem Datenbanktyp und datensensitiven Komponenten Suite Name.

Ich interessiere mich auch auf DB2 (AS400). Welche Komponenten haben Sie mit Erfolg verwendet werden, oder welche Komponenten sind wirklich ein Schmerz zu arbeiten?

War es hilfreich?

Lösung

Ich habe festgestellt, dass mit der datensensitiven Komponenten führen zu einer Anwendung ohne klare Unterscheidung zwischen Geschäfts- und UI-Logik.

Das ist gut für kleine Projekte, sondern wie sie größer werden der Code immer weniger wartbar.

Alle verschiedenen Bits von Ereigniscode (und deren Wechselwirkungen) kann ein echter Alptraum werden verstehen!

Unweigerlich in solchen Fällen habe ich ditched datensensitiven Komponenten und zu einer (Hand-kodiert) MVC-Design umgestellt.

Dies erfordert eine Menge Upfront-Codierungsaufwand aber Ergebnisse (IMHO) in einem Projekt, das wartbare, erweiterbare und debug ist.

Andere Tipps

Nachdem versucht, sowohl die Daten-aware und nicht datensensitiven Stil von Delphi-Anwendungen ich in diesen Tagen wieder in den datensensitiven Komponente Lager bin. Es dauert ein wenig Arbeit und Disziplin, um den Code korrekt Schicht, aber es ist immer noch schneller, als alles von Hand zu tun mit nicht datensensitiven Steuerelement.

Ein paar meiner Tipps für die datensensitiven Komponente Nutzung sind

  • Sie nicht nur umschreiben FishFact in einem größeren Maßstab. Ein paar Gedanken in Ihr Design.

  • Verwenden Sie keine TDataModule verwenden, verwenden Sie viele TDataModules jeweils für nur einen kleinen Aspekt Ihrer Anwendungen Daten.

  • TDatasets gehören auf TDataModules, während TDataSources auf TForms gehören (es sei denn, für Master / Detail-Beziehungen verwendet wird).

  • Mit In-Memory-Datensatz wie der DataSnap TClientDataSet.

  • Ihre ClientDataSets müssen Sie Ihre Datenbank-Tabellen nicht genau widerspiegeln. DataSnap ermöglicht es Ihnen, Ihre Datenstrukturen im Speicher massieren, so dass Sie für einen bestimmten Zweck zugeschnitten Datensätze produzieren kann. Insbesondere können Sie Dinge wie

    • Anschließen von zwei oder mehreren Tabellen in die eine bearbeitbare Datenmenge

    • Denormalisierung Master-Detail-Tabellenstrukturen können manchmal Ihre UI-Code vereinfachen.

    • Erstellen Sie im Speicher nur Felder (wie berechnete Felder, aber Sie können sie auch schreiben)

  • TClientDataSet verschachtelte Tabellen sind nützlich, aber nicht die einzige Möglichkeit, Master-Detail-Beziehungen zum Ausdruck bringen. Manchmal ist es besser, es auf die alte Weise mit zwei unabhängigen TClientDataSets durch einen TDataSource verbunden zu tun.

Hier finden Sie aktuelle ORM Lösungen.

Es ist ein schöner Ansatz mit Multi-Tier-Architektur. Siehe ORM für DELPHI win32

Datensensitive Steuerelemente sind groß, aber Sie müssen sicherstellen, dass Sie bekommen Ihr Unternehmen Code in einer separaten Ebene.

Das ist nicht schwer, aber Sie müssen sich bewusst sein, wie Sie das tun können.

Ein Ansatz ist Ihre DataSet-Komponenten in einem Datenmodul haben (oder andere nicht sichtbare Container).

Ein weiterer praktischer Trick ist, einen TClientDataSet zu verwenden, um den UI-Eintrag zu tun, und verwendet, die als Zwischenpuffer zwischen der Benutzeroberfläche und der Business-Schicht. Die Business-Schicht verwendet dann TDataSet Komponenten speziell auf Ihre Datenschicht.

- jeroen

Delphi datensensitiven Komponenten werden nicht auf dem Back-End-Datenbank-Engine abhing Sie verwenden, so mit Firebird oder MS SQL Server oder Oracle oder andere spielt keine Rolle, um Ihre Daten-aware Komponenten. Sie kennen nur die Datenquelle Komponente, die ihnen zugewiesen und tun alle ihre DB verwandten Themen über das.

Für mich, wenn es kann etwas mit datensensitiven Komponenten in einer schönen Weise durchgeführt werden, werde ich sie nutzen. Dies sind in der Regel kleine Projekte, die in kurzer Zeit durchgeführt werden sollten. Bei größeren Projekten kann ich ausschließen datensensitiven Komponenten vollständig oder in Formulare verwenden, die lediglich für die Datendarstellung verwendet werden und keine Benutzereingabe empfangen. Wenn es um Benutzereingaben zu empfangen kommt, könnte ich nicht datensensitiven Komponenten verwenden, weil ich mehr Flexibilität haben sie bei der Kontrolle und die Eingabe bestätigen. Natürlich Daten-ware-Komponenten können auch in solchen Szenarien noch nützlich sein. Sie können immer noch eine Benutzereingabe in dataSet Ereignisse wie OnBeforePost validieren. Auch wenn Sie ein Multi-Tier-Design verwenden, und Ihre Client-Anwendung stellt Daten Präsentator Schicht, Ihre Eingabevalidierung wird in der mittleren Ebene durchgeführt, so dass Sie Eingabe mit datensensitiven Komponenten in der Client-Anwendung empfangen können, und sende sie an den Middle-Tier für die Validierung und Weiterverarbeitung.

Datensensitive Komponenten sind usful von einem RAD und Prototyping-Perspektive, vor allem, wenn Sie entwerfen Berichte oder Gitter, die basierend auf Daten. das heißt Sie können zur Entwurfszeit basteln. Also habe ich sie so verwenden. Aber wenn es darum geht, sie zu verwandeln in Versand Code, habe ich fast immer Sever die Verbindungen, entfernen Sie die SQL aus den Abfragen, und alles in Code tun. Es ist viel besser vorhersagbar und wartbar auf diese Weise, vor allem in einer Multi-Entwicklungsumgebung mit Versionskontrolle. Wenn die SQL in Form irgendwo eingebettet ist, ist es ein großer Schmerz, um zu versuchen, herauszufinden, wo eigentlich die SQL befindet. Und es ist besonders schlimm SQL an zwei Stellen haben, und dann Abbildung müssen Sie heraus, welche wirksam ist.

Sie können mit UniDAC die vielen Datenbankserver unterstützt, einschließlich Firebird (das ich verwenden) und hat sehr nette Features.

In Verbindung mit Remobject SDK wird eine schöne Kombination von n-Tier-Architektur haben und Datenbank-Abstraktion.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top