SF Softwareberatung ApplicationCreator Demo für die.NET User's Group KA.
-
Upload
alberich-nefzger -
Category
Documents
-
view
107 -
download
0
Transcript of SF Softwareberatung ApplicationCreator Demo für die.NET User's Group KA.
SF Softwareberatung ApplicationCreator
Demo für die .NET User's Group KA
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
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
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
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
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
Das ist doof, fehlerträchtig und langweilig!
Wie wäre es mit:1. Datenbankstrukur definieren2. Hinweise für das Layout besonders
komplexer Formulare geben3. Pizza essen (oder besondere
Funktionalität implementieren)4. Fertig!
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
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
SFSoftwareberatung.WinForms.StandardForms
Windows XP-Designs ShortcutGenerator vergibt
eindeutige Tastaturshortcuts Splash-Screens Info-Dialoge
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.
SFSoftwareberatung.ApplicationCreator
Oberflächen-unabhängige Anwendungsautomatik Anwendungsdefinition
Datenbank Masken
Datenzugriff Versionierung der Datenbankstruktur Migration von Alt-Datenbeständen Rollen Migration von Altdaten
SFSoftwareberatung.ApplicationCreator.WinForms
Windows-basierte Nutzung des ApplicationCreator ApplicationMainForm ControlCreators FindDialog MasterFormEditor Controls DataMigrationDialog
Highlight: Die Anwendung
myApplicationCompleter = New ApplicationCompleter(GetApplicationDescription(),New SqlServer.SqlFactory(New AppConfigConnectionStringGetter),New ActiveDirectoryRoleMembershipChecker,Me, True)
myApplicationCompleter.InitializeApplication()
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 WithEnd With
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 WithWith .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 WithEnd With
Ergebnis 1: Die Datenbank
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
Ergebnis 2: Die Rumpfanwendung
MDI-Formular Menüs automatisch erzeugt und
gefüllt Von der Anwendung ergänzbar Einschließlich Tastaturshortcuts
Ergebnis 3: Stammdatenformulare
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
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
Ergebnis 4: Suchformulare
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
Ergebnis 5: Migration von Altdaten
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
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
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
Gelernte Lektionen: Data Bindingund 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
Gelernte Lektionen: Data Bindingund 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!
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
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
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
Kontakt
Stefan Falk Softwareberatung [email protected]