1 / 34

SF Softwareberatung ApplicationCreator

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

osma
Download Presentation

SF Softwareberatung ApplicationCreator

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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: • Datenbankstrukur definieren • Hinweise für das Layout besonders komplexer Formulare geben • Pizza essen (oder besondere Funktionalität implementieren) • 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 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 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 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

  30. 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!

  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

More Related