Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Alberich Nefzger Geändert vor über 10 Jahren
1
SF Softwareberatung ApplicationCreator Demo für die.NET User's Group KA
2
Agenda Definition des Problems Was muss alles getan werden? Der ApplicationCreator Abgrenzung der einzelnen Assemblies Beispiel-Code Snippets 2 Statements + Strukturdefinition reichen Ergebnisse Datenbank, Rumpfanwendung, Stammdaten- und Suchformulare, Migration von Altdaten Gelernte Lektionen Ausblick
3
Definition des Problems Immer noch viel zu viel manueller Aufwand für die Erstellung neuer datenbankgestützter Anwendungen Trotz Assistenten und Designern Noch mehr Aufwand, um best practices zu realisieren
4
Was muss alles getan werden? (I) Auf dem Datenbankserver: Datenbankstrukturen planen Tabellen anlegen Gültigkeitsregeln festlegen Stored Procedures schreiben Rollen definieren Zugriffsrechte implementieren Versionierung regeln
5
Was muss alles getan werden? (II) In der Anwendung: Code zum Zugriff auf Stored Procedures schreiben Formulare entwerfen Weit mehr als Steuerelemente ziehen und Datenbindung definieren! Master-Detail-Detail… Suchmasken erstellen Menüs und das ganze Drumrum
6
Was muss alles getan werden? (III) Für Auswertungen: Stored Procedures schreiben… Dialoge für Selektionsmöglichkeiten erstellen Berichte entwerfen Das alles zum Leben erwecken
7
Das ist doof, fehlerträchtig und langweilig! Wie wäre es mit: 1. Datenbankstrukur definieren 2. Hinweise für das Layout besonders komplexer Formulare geben 3. Pizza essen (oder besondere Funktionalität implementieren) 4. Fertig!
8
Der ApplicationCreator Eigentlich ein Satz von derzeit 5 Assemblies Realisieren derzeit Windows- Datenverwaltungs-Anwendungen Erweiterbar Andere DBs als SQL Server Andere Oberflächen als Windows (Web) Spezielle Feld- und Tabellentypen
9
SFSoftwareberatung.Configuration Ähnlich Microsoft CMAB Noch einfacher zu benutzen Dafür fehlen noch ein paar Features Kann beliebige primitive oder serialisierbare Datentypen speichern An beliebige Orte Datenbank implementiert Unterscheidung zwischen Maschinen- und Benutzer-Optionen
10
SFSoftwareberatung.WinForms.StandardForms Windows XP-Designs ShortcutGenerator vergibt eindeutige Tastaturshortcuts Splash-Screens Info-Dialoge
11
SFSoftwareberatung.WinForms.Controls Alle möglichen Controls Navigation Verweis-Felder Panel mit Farbverlauf bei XP-Designs RepeatButton FullSelectLabel DBNumericUpDown (unterstützt DBNull und XP-Designs) DB-taugliche RadioGroup u. a.
12
SFSoftwareberatung.ApplicationCreator Oberflächen-unabhängige Anwendungsautomatik Anwendungsdefinition Datenbank Masken Datenzugriff Versionierung der Datenbankstruktur Migration von Alt-Datenbeständen Rollen Migration von Altdaten
13
SFSoftwareberatung.ApplicationCreator.WinForms Windows-basierte Nutzung des ApplicationCreator ApplicationMainForm ControlCreators FindDialog MasterFormEditor Controls DataMigrationDialog
14
Highlight: Die Anwendung myApplicationCompleter = New ApplicationCompleter( GetApplicationDescription(), New SqlServer.SqlFactory(New AppConfigConnectionStringGetter), New ActiveDirectoryRoleMembershipChecker, Me, True) myApplicationCompleter.InitializeApplication()
15
Highlight: Die Datenbankstruktur papier =.Tables.Add("Papier") With papier.Fields.Add(New FieldTypes.StringField("Bezeichnung", False, 1, 50)).CreateIndex(True, True).SetRowdescribing().Fields.Add(New FieldTypes.BooleanField("IstLogoVorgedruckt", False, False)).FriendlyName = "enthält vorgedrucktes Logo" With.AddEditView.Permissions.Grant(Leitung, Operations.Full).Grant(Benutzer, Operations.SelectFromAllTables) End With
16
Highlight: Master-Detail-Detail… schreibauftrag.AddMasterForm() formHint = New Hints.MasterFormLayoutHint(schreibauftrag.MasterForm) schreibauftrag.MasterForm.Hints.Add(formHint) ' Variante "Alles auf einmal sichtbar" 1: With formHint.MainPlace.AddVerticalSplitter With.LeftPane.AddHorizontalSplitter.TopPane.AddForm(schreibauftrag.MasterForm).BottomPane.AddForm("Berechtigte Gruppen", _ schreibauftrag.MasterForm.DetailForms.Add(nutzung.ReferenceField(schreibauftrag))) End With With.RightPane.AddHorizontalSplitter.TopPane.AddForm("Dokumente des Schreibauftrags", schreibauftrag.MasterForm.DetailForms.Add(refDokumentSchreibauftrag)).BottomPane.AddForm("Elemente des oben angezeigten Dokuments", schreibauftrag.MasterForm.DetailForms(refDokumentSchreibauftrag).DetailForms.Add(refElementDokument)) End With
17
Ergebnis 1: Die Datenbank
18
Highlights der Datenbank Vollautomatisch erzeugt Abgesetztes T-SQL ist schön formatiert All Inclusive: SQL Server-Rollen Tabellen mitsamt Gültigkeitsregeln, soweit abbildbar mit referentieller Integrität Sichten (für Suchformulare) Prozeduren (für jeglichen anderen Zugriff) Zugriffsrechte für die Rollen Niemals auf die Tabellen selbst
19
Ergebnis 2: Die Rumpfanwendung MDI-Formular Menüs automatisch erzeugt und gefüllt Von der Anwendung ergänzbar Einschließlich Tastaturshortcuts
20
Ergebnis 3: Stammdatenformulare
21
Highlights der Stammdatenformulare Vollautomatisch erzeugt Anbringen von Hints für besondere Wünsche möglich Hints für Layout von Master-Detail-Formularen Kacheln, Tabs Unterschiedliche Controls je nach Feldtyp ComboBox, RadioGroup, ReferenceBox, FileName, Folder, … Erweiterbar Unterschiedliche Formulare je nach Tabellentyp Gruppenmitgliedschaften Tabellen mit definierter Datensatzreihenfolge
22
Highlights der Stammdatenformulare Komfortable Features Auto-Resizing, Position und Größe merken Tastaturshortcuts Gültigkeitsprüfungen mit freundlichen Fehlermeldungen Klicken auf Label markiert gesamten Feldinhalt Sprung zu anderen Formularen bei Referenzfeldern Suchmasken immer verfügbar
23
Ergebnis 4: Suchformulare
24
Highlights der Suchformulare Vollautomatisch erzeugt Keine SQL Injection Attacks möglich Spezielle Definition der suchbaren und anzuzeigenden Felder möglich Standardmäßig werden nicht mehr als 100 Treffer angezeigt Auch via Code supereinfach aufzurufen Auto-Resizing, Position und Größe merken Tastaturshortcuts
25
Ergebnis 5: Migration von Altdaten
26
Highlights der Migration Gut geeignet, um Daten von alten Programmversionen zu übernehmen Auch wenn die Datenbankstrukturen nicht identisch sind Transaktionssicher Allgemeine Basisklasse Spezielle Ableitung für MDB-Dateien realisiert
27
Gelernte Lektionen Es ist viel Arbeit und manchmal hart, aber es geht und ist sehr spannend! DataBinding ist gut, aber nicht trivial Am meisten Zeit kosten Detailprobleme Schließlich soll das ganze stabil, komfortabel, schnell und sicher sein
28
Gelernte Lektionen: Data Binding Eigene Controls wegen DBNull Können von vorhandenen erben Implementieren Schnittstelle mit Wert- Property vom Typ Object Erzeugen Event Name muss EigenschaftsnameChanged sein! Typ muss EventHandler sein Nur auslösen, wenn der Inhalt auf etwas wirklich Anderes gesetzt wird! Absolut kritisch, damit Data Binding korrekt funktioniert
29
Gelernte Lektionen: Data Binding und Gültigkeitsprüfungen Beim Validieren im Fehlerfall keine Exceptions auslösen! Data Binding kommt komplett durcheinander Entgegen der MSDN-Dokumentation! Lieber RowError und Konsorten setzen und hinterher prüfen Ansonsten droht Verzweiflung
30
Gelernte Lektionen: Data Binding und ComboBoxen Geht alles, aber DBNull berücksichtigen ( die native ComboBox ist nicht direkt verwendbar) Bei Refresh der Daten vorher gesetzten Wert merken, hinterher wieder setzen Dabei keine Changed-Events auslösen!
31
Ausblick: Was noch kommen soll (I) In der Datenbank Rekursive Strukturen für Hierarchien Vertikale Zugriffsrechte Personen haben nur Rechte auf bestimmte Datensätze einer Tabelle Ohne Hintertüren! Vollautomatische Versionsaktualisierung In der Rumpfanwendung Symbolleisten Schnellzugriff auf die häufig benutzen Befehle selbstlernend
32
Ausblick: Was noch kommen soll (II) Formulare Weitere automatisch erzeugte Formulartypen für bestimmte Tabellentypen Hierarchie-Tabellen Hier leichtere Erweiterbarkeit Endlosformulare mit Steuerelementen (kein Grid) Verfeinerte Layoutmöglichkeiten Automatisch erzeugte Extras/Optionen-Dialoge Reporting ebenfalls weitgehend automatisch
33
Ausblick: Was noch kommen soll (III) Features Ausgabe nach Excel einfach, mächtig, gut formatiert, mit Formeln für Summen usw. Evtl. ApplicationCreator.WebForms ASP.NET Stammdatenverwaltung basierend auf der selben Anwendungs- definition wie das Windows-Pendant Grenzen nur durch die Phantasie
34
Kontakt Stefan Falk Softwareberatung stefan.falk@ct-systeme.com
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.