Produktionsarchitektur im Detail
Sie haben bereits eine kleine Wisej.NET-App gebaut – jetzt lernen Sie, eine Anwendung so zu strukturieren, dass ein Team sie über Jahre warten und weiterentwickeln kann. Dieser Kurs führt Sie von einem Projekt in Trainingsgröße zu einer produktionsreifen Architektur mit sauberen Grenzen zwischen UI, Domäne, Services, Daten und Infrastruktur und einer klaren Trennung zwischen serverseitigen Komponenten und clientseitigen Widgets. Zwölf Module behandeln Projektstruktur und Anwendungslebenszyklus, responsive und wiederverwendbare UI-Komposition, Data Binding und sichere Speicher-Pipelines, modale und transaktionale Workflows, Hintergrundaufgaben und Echtzeit-Updates, Dependency Injection und testbare Muster, JavaScript-Interop, Theming und Lokalisierung sowie Sicherheitsgrenzen – und schließen mit Deployment, Diagnose, Load Balancing und der Auslieferung eines Abschlussprojekts. Der Kurs richtet sich an Entwickler, die bereits Wisej.NET-Apps ausliefern und die Muster kennenlernen möchten, mit denen diese auch unter realen Bedingungen sauber bleiben.
Von der kleinen Trainings-App zu einer wartbaren Wisej.NET-Struktur für die Produktion – serverseitige Komponenten, clientseitige Widgets und saubere Projektgrenzen.
- Niveau: Intermediate
- Dauer: 12 Stunden
- Module: 12
Lehrplan
Modul 1: Wisej.NET-Architektur und Projektstruktur für die Produktion
Modul 1 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum Refactoring für den Produktivbetrieb an, bestehen Sie den Wissenstest und überführen Sie anschließend im praktischen Lab die TicketOps Console in eine produktivreife Struktur.
- LektüreLektionsleitfaden · 12 Min.
Wie Wisej.NET serverseitige .NET-Controls auf browserseitige Widgets abbildet – und warum Ihre Controls dadurch schlank bleiben können.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung der Produktivarchitektur: wann sich eine Abgrenzung lohnt, wie Sie Services ohne statischen Zustand anbinden, und ein durchgearbeitetes Refactoring von TicketOps.
- VideolektionTicketOps in eine Produktivstruktur überführen · 8 Min.
Sehen Sie zu, wie eine Junior-Ticket-App zu einer produktivreifen Lösung wird – serverseitige Komponenten, die auf Widgets abgebildet werden, schlanke Event-Handler und Logik hinter ITicketService. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Refaktorieren Sie TicketOps, indem Sie der Schnittstelle und dem Geschäftsbetrieb getrennte Verantwortlichkeiten zuweisen. Das Ziel ist eine Struktur, in der ein anderer Entwickler eine Regel finden, ihre Implementierung ändern und das Ergebnis überprüfen kann, ohne die Schaltflächenhandler durchsuchen zu müssen.
Der überfüllte Handler vermischt Datenbankabfragen, Validierung, Workflow-Entscheidungen und Bildschirmaktualisierungen. Diese Verantwortlichkeiten ändern sich aus unterschiedlichen Gründen. Wenn man sie also zusammenhält, ist es schwieriger, selbst eine kleine Korrektur zu isolieren und zu überprüfen.
Erstellen Sie Ordner, die die beabsichtigten Verantwortlichkeiten benennen, und entscheiden Sie dann anhand dieser Namen, wo der Code hingehört. Der Vorteil ergibt sich aus konsistenten Grenzen und nicht aus dem Verschieben desselben eng gekoppelten Handlers in eine Datei mit einem anderen Namen.
Definieren Sie die Ticket-Service-Schnittstelle rund um die Vorgänge, die der Bildschirm tatsächlich benötigt. Das Formular kann dann von einem stabilen Vertrag abhängen, während Tests oder spätere Speicherimplementierungen verschiedene Möglichkeiten zur Erfüllung bieten.
Implementieren Sie zunächst einen Fake-Ticket-Service und verschieben Sie die Workflow-Entscheidungen dorthin. Dadurch können Sie die Interaktion des Bildschirms mit dem Vertrag überprüfen, bevor Sie den echten Datenzugriff und seine zusätzlichen Fehlerfälle einführen.
Der Handler delegiert nun den Vorgang, zeigt sein Ergebnis an und behandelt Fehler. Lesen Sie es als Beschreibung der Aktion des Benutzers. Die Geschäftsregeln sollten im Dienst verständlich sein und nicht zwischen Kontrollaktualisierungen verborgen bleiben.
Lokal ausführen und sowohl das gefüllte Raster als auch den Aktualisierungsstatus überprüfen. Die beiden Ergebnisse sollten übereinstimmen: Der Dienst hat die Daten bereitgestellt und die Schnittstelle teilt dem Benutzer nun mit, dass die Aktualisierung abgeschlossen ist.
Geben Sie dem Benutzer eine verständliche Fehlermeldung und behalten Sie gleichzeitig die tatsächliche Ausnahme im Protokoll bei. Dies trennt die Erklärung, die zum Weiterarbeiten erforderlich ist, von den Diagnosedetails, die Entwickler zur Untersuchung der Ursache benötigen.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 1 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Refactoring zur Produktionsarchitektur · 40 Min.
Ziel: Refaktorisieren Sie die Junior-App TicketOps in eine produktivreife Solution-Struktur: Ordner für Views, Controls, Services, Domain, Data, Infrastructure, Resources und Diagnostics; ein ITicketService mit einer Fake-Implementierung TicketService; schlanke Event-Handler, die den Service aufrufen; und eine kurze Architekturnotiz, die erklärt, wohin neuer Code gehört.
Modul 2: Start, Konfiguration, Session-Zustand und Anwendungslebensdauer
Modul 2 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum SessionContext an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab einen sessionbezogenen SessionContext und eine Diagnoseseite.
- LektüreLektionsleitfaden · 12 Min.
Anwendungs-, Session-, Benutzer-, Browser-Tab- und Request-Zustand – und warum eine Session eher einer Instanz einer Desktop-App gleicht als einem Benutzerkonto.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung des Session-Zustands: ein sessionbezogener Kontext ohne statische Felder, die Start- und Konfigurations-Pipeline und die Falle der statischen Felder.
- VideolektionEinen SessionContext und eine Diagnoseseite erstellen · 8 Min.
Sehen Sie zu, wie benutzerbezogener Zustand aus statischen Feldern in einen sessionbezogenen SessionContext wandert – mit einer Diagnoseseite, die globale Einstellungen von sessionbezogenen Werten trennt. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Entscheiden Sie, wie die Wisej.NET-Anwendung startet und wohin ihr Status gehört, bevor Sie weitere Workflows hinzufügen. Konfigurations- und Lebensdaueroptionen bestimmen, ob auf dem Bildschirm jedes Benutzers die richtigen Daten angezeigt werden, wenn sich Sitzungen und Registerkarten ändern.
Eine Sitzung stellt eine laufende Interaktion dar, nicht nur die Identität einer Person. Aktualisierungen, erneute Verbindungen und mehrere Registerkarten bedeuten, dass ein Benutzer mehrere Kontexte haben kann, sodass ausgewählte Datensätze nicht automatisch als benutzerweiter Status gespeichert werden sollten.
Unterscheiden Sie für jeden Wert zwischen Anwendungsweite, Sitzungs-, Benutzer- und Registerkartenbesitz. Fragen Sie, wer eine Veränderung beobachten sollte und wann sie verschwinden sollte; Diese Antworten bestimmen die Lebensdauer zuverlässiger als die Bequemlichkeit eines globalen Feldes.
Überprüfen Sie Default.json im Rahmen der Bereitstellung, einschließlich Thema, Zeitüberschreitung, Client-Sitzungslimits, Validierung und Kultur. Diese Einstellungen beeinflussen das Laufzeitverhalten und erfordern daher bewusste Werte und eine Überprüfung zusammen mit dem Anwendungscode.
Gewöhnliche statische Felder werden sitzungsübergreifend gemeinsam genutzt, obwohl Wisej.NET sitzungsbezogenen Zugriff über die Anwendung bietet. Schließen Sie nicht daraus, dass Ihr eigenes statisches Feld „Ausgewähltes Ticket“ die gleiche Isolation erhält; Es kann den Wert einer anderen Sitzung offenlegen.
Fügen Sie sitzungseigene Werte in einen Sitzungskontext oder den von Wisej.NET bereitgestellten Sitzungsspeicher ein. Jede Sitzung verfügt dann über eine eigene Instanz, wodurch die beabsichtigte Isolation im Design sichtbar gemacht wird, anstatt sich auf Namenskonventionen zu verlassen.
Definieren Sie den Sitzungskontext mit einer Sitzungskennung, einem aktuellen Benutzer und einem ausgewählten Ticket. Durch die Gruppierung dieser zusammengehörigen Werte wird deutlich, welchen Kontext ein Formular oder ein Dienst verwendet, wenn es einen Vorgang abwickelt.
Übergeben Sie den Kontext an Formulare und Dienste, die ihn benötigen. Der Ticketauswahlhandler schreibt in diesen Kontext, sodass seine Abhängigkeit sichtbar ist und die Auswahl zur aktuellen Sitzung gehört und nicht zu einer gemeinsam genutzten globalen Variablen.
Wählen Sie in der laufenden Anwendung ein Ticket aus und lesen Sie den sitzungsspezifischen Status. Bestätigen Sie, dass die angezeigte Auswahl aus dem aktuellen Kontext stammt. Dies ist das sichtbare Ergebnis der zuvor getroffenen Eigentumsentscheidung.
Wenden Sie im gesamten TicketOps weiterhin die gleiche Disziplin an: gestaltbare Bildschirme, verständliche Namen, Servicegrenzen und sichtbare Fehler. Eine klare Zustandsverantwortung ergänzt diese Praktiken, indem sie die Überprüfung des Verhaltens über mehrere Sitzungen hinweg erleichtert.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 2 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – SessionContext und Audit statischer Zustände · 40 Min.
Ziel: Ein sessionbezogener SessionContext für die TicketOps Console: mit Session-Lebensdauer registriert, in Forms und Services injiziert, zeigt Session-ID / Benutzer / Mandant / Theme / Client-Profil an, dazu eine Diagnoseseite, die globale Anwendungseinstellungen von sessionbezogenen Werten trennt – und eine Prüfung statischer Zustände, angewendet auf die bestehende App.
Modul 3: Responsive Layouts, Client-Profile und wiederverwendbare UI-Komposition
Modul 3 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum responsiven Arbeitsbereich an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab einen responsiven Ticket-Arbeitsbereich mit Client-Profilen.
- LektüreLektionsleitfaden · 12 Min.
Layout-Engines nach Absicht wählen – Dock/Anchor für Desktop-Panels, Table für Formularraster, Flow für umbrechende Inhalte, Flex für proportionale Bereiche.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung responsiver UI: Layout-Engines verschachteln, auf Wechsel des Client-Profils reagieren und wiederverwendbare UserControls für den Ticket-Arbeitsbereich bauen.
- VideolektionEinen responsiven Ticket-Arbeitsbereich erstellen · 8 Min.
Sehen Sie zu, wie sich ein Ticket-Arbeitsbereich mit Layout-Engines, Client-Profilen und wiederverwendbaren UserControls an die Profile Desktop, Tablet und Smartphone anpasst. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Passen Sie den Ticket-Arbeitsbereich an Desktop, Tablet und Telefon an, indem Sie die Aufgabe in jeder Größe beibehalten. Das Layout sollte die Art und Weise ändern, wie Informationen angeordnet sind, ohne dass Benutzer den Datensatz oder die Aktion verlieren, an der sie gerade arbeiten.
Beginnen Sie mit dem, was die Bediener vergleichen, lesen und gemeinsam bearbeiten müssen. Überlappende Paneele sind nicht nur unordentlich; Sie können die Nachricht oder Aufzeichnung verbergen, die einer Aktion ihre Bedeutung verleiht.
Wählen Sie Behälter entsprechend ihrer Aufgabe aus: Randbefestigung, tabellarische Ausrichtung, fließende Gegenstände oder flexible Verteilung. Die Anpassung des Layoutmechanismus an die beabsichtigte Beziehung ist zuverlässiger als die manuelle Positionierung jedes Steuerelements für jede Breite.
Packen Sie wiederholte Schnittstellenabschnitte in UserControls, die im Designer verwendbar bleiben. Eine gemeinsame Suchleiste verleiht mehreren Bildschirmen ein einheitliches, wartbares Layout und Verhalten, während der Arbeitsbereich diese Teile zu einer größeren Aufgabe zusammenfasst.
Verwenden Sie ClientProfiles.json, um die Profile zu beschreiben, die serverseitige Eigenschaftsänderungen steuern. Bei einem Profil handelt es sich um eine bewusste Anpassungsregel. Sorgen Sie daher dafür, dass seine Wirkung verständlich ist, anstatt Breitenprüfungen auf nicht verwandte Ereignishandler zu verteilen.
Wenden Sie das aktive Profil in einem Handler an: Verstecken Sie die Navigation, verschieben Sie die Aktivität in eine Registerkarte und stellen Sie bei Bedarf eine Zurück-Aktion bereit. Durch die Zentralisierung dieser koordinierten Änderungen ist jeder Layoutmodus leichter zu verstehen und zu überprüfen.
Testen Sie den gleichen Workflow bei jeder Breite. Der Desktop zeigt den vollständigen Kontext an, das Tablet verschiebt Aktivitäten in einen Tab und das Telefon konzentriert sich auf eine Aufgabe. Überprüfen Sie, ob Benutzer weiterhin die Informationen und Aktionen erreichen können, die sie benötigen.
Stellen Sie den Arbeitsbereich, Profile, Profilnotizen und die wiederverwendbare Suchleiste zusammen bereit. Erklären Sie, was jedes Profil ändert und warum, damit der nächste Entwickler den Arbeitsablauf beibehalten kann, wenn er ein weiteres Bedienfeld oder einen weiteren Bildschirm hinzufügt.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 3 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Responsiver Ticket-Arbeitsbereich · 40 Min.
Ziel: Ein responsives TicketWorkspace-UserControl für die TicketOps Console: auf dem Desktop alle Panels gleichzeitig, auf dem Tablet das Aktivitäten-Panel in einen Tab eingeklappt und auf dem Smartphone eine einzelne aufgabenorientierte Ansicht mit Zurück-Button – gesteuert über ClientProfiles.json / ResponsiveProfileChanged, mit einem wiederverwendbaren SearchBar-Control.
Modul 4: Data Binding, DataGridView und datenorientierte Workflows
Modul 4 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum Data Binding an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab das Arbeitsauftrags-Grid mit Master-Detail.
- LektüreLektionsleitfaden · 12 Min.
Setzen Sie BindingSource, BindingList<T>, INotifyPropertyChanged, Grid-Formatierung, Filterung, Master-Detail-Abläufe und Muster für Speichern/Abbrechen in Masken für Geschäftsdaten ein.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung des Data Bindings: ein beobachtbares Arbeitsauftrags-Modell, die Verdrahtung von BindingSource und Grid, Spaltenformatierung, Filterung, Master-Detail-Synchronisierung und sauberes Speichern/Abbrechen.
- VideolektionEin datengebundenes Grid für Arbeitsaufträge erstellen · 8 Min.
Ein geführter Video-Walkthrough zum Data Binding, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Verbinden Sie die TicketOps-Liste und den Editor, damit Benutzer denselben Geschäftsdatensatz kohärent prüfen, ändern und speichern können. Durch die Bindung wird die manuelle Synchronisierung reduziert, der Workflow muss jedoch weiterhin Auswahl, nicht gespeicherte Änderungen und Speicherergebnisse definieren.
Eine Bindung verbindet eine Modelleigenschaft mit einer Steuereigenschaft, während BindingSource das aktuelle Element koordiniert. Verwenden Sie diese gemeinsame Quelle für Listen und Details, damit eine Auswahländerung den Kontext des Editors konsistent aktualisiert.
Benachrichtigungen über Eigenschaftsänderungen benachrichtigen gebundene Steuerelemente, wenn sich ein Arbeitsauftragswert ändert. Eine bindungsfähige Liste meldet Sammlungsänderungen separat; Zusammen verhindern diese Benachrichtigungen, dass das Raster nach jeder Bearbeitung oder Hinzufügung auf manuelle Aktualisierungen angewiesen ist.
Verbinden Sie das Netz mit einem BindingSource und verbinden Sie diese Quelle mit der Liste. Wählen Sie die Spalten bewusst aus. Halten Sie die Anzeigeformatierung in der Benutzeroberfläche getrennt von den Daten und Geschäftsregeln.
Verwenden Sie die Such- und Statusfilterung, um die Liste einzugrenzen, und lassen Sie dann die ausgewählte Zeile den Detaildatensatz bestimmen. Wenn diese Beziehung explizit bleibt, können Benutzer genau verstehen, auf welchen Arbeitsauftrag sich ihre nächste Bearbeitung auswirkt.
Verfolgen Sie, ob der Editor nicht gespeicherte Änderungen hat. „Abbrechen“ sollte die vorherigen Werte wiederherstellen, während „Speichern“ versucht, sie festzuschreiben. Wenn dies fehlschlägt, melden Sie diesen Fehler, anstatt die gebundene Anzeige implizieren zu lassen, dass die Daten beibehalten wurden.
Geben Sie das Modell, die Bindungseinrichtung, Formatierungshandler, den Editor sowie Festschreibungs- oder Abbruchnotizen an. Die Übergabe sollte erklären, wie ein ausgewählter Datensatz von der Anzeige zur Bearbeitung und dann entweder in einen gespeicherten oder wiederhergestellten Zustand übergeht.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 4 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Arbeitsauftrags-Grid und Master-Detail · 40 Min.
Ziel: Erstellen Sie ein Arbeitsauftrags-Grid mit Suche, Statusfilter, Master-Detail-Editor, Verfolgung des Änderungsstatus, Speichern/Abbrechen und formatierten Spalten für Priorität, zugewiesenen Benutzer, Fälligkeitsdatum und Kosten. Ergebnisse: beobachtbares WorkOrder-Modell oder View-Model; Konfiguration der BindingSource; Handler für die Grid-Formatierung; Master-Detail-Editor; Notizen zum Verhalten beim Übernehmen/Abbrechen.
Modul 5: Validierung, Fehler-UX und sichere Speicher-Pipelines
Modul 5 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zur Validierung an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab die Validierung und Speicher-Pipeline für Arbeitsaufträge.
- LektüreLektionsleitfaden · 12 Min.
Gestalten Sie Validierung zugleich als Benutzererlebnis und als geschäftlichen Sicherheitsmechanismus – mit zentraler Validierung, Fehleranzeige auf Feldebene, serverseitigen Prüfungen und konsistenten Speicher-Pipelines.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung der Validierung: geschichtete Regeln, ein wiederverwendbares Save-Command, Fehler auf Feldebene und in der Übersicht sowie eine sichere Speicher-Pipeline, in der der Server die eigentliche Schranke ist.
- VideolektionValidierung und eine sichere Speicher-Pipeline ergänzen · 8 Min.
Ein geführter Video-Walkthrough zur Validierung, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Lassen Sie den Arbeitsauftragseditor ungültige Eingaben erklären, bevor er einen unsicheren Speicherversuch durchführt. Die Validierungspipeline verbindet Feld-Feedback mit Geschäftsregeln und Persistenz, sodass der Benutzer weiß, was geändert werden muss und ob etwas gespeichert wurde.
Unterscheiden Sie zwischen Schnittstellenprüfungen, Geschäftsgültigkeit, Persistenzbeschränkungen und Autorisierung. Jeder schützt eine andere Grenze; Durch das Deaktivieren von „Speichern“ können Benutzer angeleitet werden, der Dienst muss jedoch dennoch eine Anfrage ablehnen, die gegen seine Regeln oder Berechtigungen verstößt.
Platzieren Sie jeden Fehler in der Nähe des Feldes, das Ihrer Aufmerksamkeit bedarf, und sammeln Sie die Probleme in einer Zusammenfassung. Verwenden Sie eine Sprache, die die Korrektur erklärt, damit Benutzer das Problem lokalisieren können, ohne die zugrunde liegende Ausnahme oder Datenbankregel zu verstehen.
Sammeln und validieren Sie die Eingaben, bevor Sie den Befehl erstellen. Überprüfen Sie vor dem Speichern die Geschäftsregeln und Berechtigungen. Erst nach erfolgreichem Speichern sollte die Anwendung den Bildschirm aktualisieren und das Ergebnis aufzeichnen.
Stoppen Sie frühzeitig, wenn die Validierung fehlschlägt, bevor die Persistenz beginnt. Wenn der Speichervorgang selbst fehlschlägt, bewahren Sie die tatsächlichen Diagnosedetails im Protokoll auf und erklären Sie die fehlgeschlagene Speicherung deutlich, anstatt dem Benutzer einen internen Fehler anzuzeigen.
Wenden Sie die Pipeline auf erforderliche Felder, Fälligkeitstermine, Kostengrenzen, Statusübergänge und Rolleneinschränkungen an. Diese Fälle erstrecken sich über verschiedene Ebenen, wodurch überprüft werden kann, ob der Editor mehr tut, als nur zu prüfen, ob ein Textfeld leer ist.
Lösen Sie einen fehlgeschlagenen Speichervorgang aus und überprüfen Sie anschließend den Editor. Die Änderungen des Benutzers sollten verfügbar bleiben, die Meldung sollte das Problem erläutern und interne Details sollten nur im Protokoll erscheinen, sodass für die Wiederherstellung kein erneutes Eingeben der Arbeit erforderlich ist.
Eine gute Validierung schützt Daten und hilft den Menschen gleichzeitig, ihre Arbeit zu erledigen. Behalten Sie den Kontext bei, erklären Sie Korrekturen und unterscheiden Sie eine abgelehnte Eingabe von einer fehlgeschlagenen Speicherung, damit die nächste Aktion klar ist.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 5 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Validierung und Speicher-Pipeline für Arbeitsaufträge · 40 Min.
Ziel: Ergänzen Sie den Arbeitsauftrags-Editor um Validierung. Setzen Sie Pflichtfelder, Regeln für das Fälligkeitsdatum, den Kostenbereich, gültige Statusübergänge und rollenbasierte Einschränkungen durch. Zeigen Sie Fehler auf Feldebene und ein Übersichts-Panel an. Ergebnisse: Validierungsregeln oder Modellvalidierung; Save-Command-Objekt; Panel mit Fehlerübersicht; Methode für die sichere Speicher-Pipeline; Testfälle für die Validierung.
Modul 6: Modale Workflows, Dialog-Ergebnisobjekte und transaktionale UI
Modul 6 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum Freigabedialog an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab den Freigabedialog mit typisiertem Ergebnis.
- LektüreLektionsleitfaden · 12 Min.
Setzen Sie modale Forms und Dialog-Workflows für komplexe Geschäftsaktionen ein – etwa Freigaben, Eskalationen, Zuweisungen, Bestätigungen und mehrstufige Transaktionen.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung modaler Workflows: typisierte Dialog-Ergebnisobjekte, Bestätigen vor dem Übernehmen und eine mehrstufige Geschäftsaktion als eine Transaktion behandeln.
- VideolektionEinen Freigabedialog als Workflow erstellen · 8 Min.
Ein geführter Video-Walkthrough zum Freigabedialog, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Verwenden Sie einen Genehmigungsdialog, um die Entscheidung des Benutzers explizit zu machen, bevor Sie den Geschäftsstatus ändern. Der Bildschirm erfasst die Absicht, gibt ein strukturiertes Ergebnis zurück und gibt dem Dienst einen klaren Punkt an, an dem die Ausführung beginnen kann.
Das Öffnen eines Modals sollte eine echte Entscheidungsgrenze im Workflow markieren. Benutzer müssen verstehen, was sie bestätigen und was eine Stornierung bedeutet, bevor die Anwendung die Folgeaktion durchführt.
Konzentrieren Sie sich im Dialog auf das Genehmigen oder Ablehnen, mit Kommentaren und ausdrücklicher Bestätigung oder Stornierung. Eine einzige Entscheidung erleichtert die Validierung des Ergebnisses und verhindert, dass unabhängige Änderungen zu versteckten Nebenwirkungen werden.
Warten Sie auf den Dialog und lesen Sie das getippte Genehmigungsergebnis, anstatt anschließend nicht verwandte Steuerelementeigenschaften zu überprüfen. Das Ergebnis enthält die Entscheidung als einen Vertrag, sodass der Aufrufer unabhängig davon bleibt, wie der Dialog seine Felder anordnet.
Nur ein bestätigtes Ergebnis sollte die Service-Transaktion auslösen. Durch die Ausführung außerhalb des Dialogs bleiben die gleichen Genehmigungsregeln im Geschäftsbetrieb bestehen und hängen nicht davon ab, ob ein bestimmtes Fenster geöffnet ist.
Erfordern Kommentare, wenn der Benutzer ablehnt, da der Grund Teil dieser Entscheidung ist. Testen Sie sowohl die Schaltfläche „Abbrechen“ als auch die Schaltfläche „Schließen“: Keiner sollte den Dienstbefehl erteilen oder den Geschäftsdatensatz ändern.
Stellen Sie den Dialog, das eingegebene Ergebnis, den Dienstbefehl, das Arbeitsablaufdiagramm und die Testfälle bereit. Zeigen Sie Bestätigung, Ablehnung mit Kommentaren und Abbruch an, sodass die Übergabe sowohl die Aktion als auch die Pfade beschreibt, die absichtlich keine Änderung bewirken.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 6 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Freigabedialog und typisiertes Ergebnis · 40 Min.
Ziel: Erstellen Sie einen Freigabedialog, der einen ausgewählten Arbeitsauftrag freigibt oder ablehnt. Er muss ein typisiertes Ergebnisobjekt zurückgeben, für Ablehnungen einen erforderlichen Kommentar validieren und den Freigabe-Service erst nach der Bestätigung aufrufen. Ergebnisse: ApprovalDialog-Form; ApprovalDialogResult-Klasse; ApprovalService-Methode; Testfälle im Unit-Test-Stil für die Ergebnisbehandlung; Workflow-Diagramm.
Modul 7: Hintergrundaufgaben, Echtzeit-Updates und Synchronisierung
Modul 7 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zu Hintergrundaufgaben an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab den CSV-Import im Hintergrund.
- LektüreLektionsleitfaden · 12 Min.
Nutzen Sie Hintergrundaufgaben und Echtzeit-Server-Push, um lang laufende Arbeit auszuführen, die UI sicher zu aktualisieren, Abbruch zu unterstützen und die Benutzeroberfläche nicht zu blockieren.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung der Hintergrundverarbeitung: außerhalb des UI-Threads ausführen, Updates sicher zurückübertragen, Abbruch und Fehlermeldungen pro Zeile für den CSV-Import.
- VideolektionEinen CSV-Import im Hintergrund ausführen · 8 Min.
Ein geführter Video-Walkthrough zu Hintergrundaufgaben, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Importieren Sie durch Kommas getrennte Werte im Hintergrund, während der Bildschirm reagiert. Benutzer sollten in der Lage sein, den Fortschritt zu sehen, eine Stornierung zu beantragen und den Abschlussbericht zu verstehen, ohne sich fragen zu müssen, ob die Anwendung nicht mehr reagiert.
Ein langer Import innerhalb des Click-Handlers hält die Sitzung mit dieser Arbeit beschäftigt. Durch das Verschieben des Vorgangs aus der unmittelbaren Interaktion bleibt der Bildschirm nützlich, während der Import seine Zeilen verarbeitet.
Starten Sie den Hintergrundvorgang mit Application.StartTask und kehren Sie dann zum richtigen Sitzungskontext zurück, bevor Sie auf die Steuerelemente zugreifen. RunInContext legt diese Grenze fest, sodass an anderer Stelle ausgeführte Arbeiten keine Steuerelemente aktualisieren, als ob sie bereits zum Schnittstellenkontext gehörten.
Veröffentlichen Sie Fortschritte an wichtigen Meilensteinen und verwenden Sie Application.Update, um diese Änderungen an den Browser zu übermitteln. Erfassen Sie ungültige Zeilen einzeln, sodass ein fehlerhafter Datensatz im Bericht erscheinen kann, ohne dass der gesamte Import unnötig beendet wird.
Lassen Sie Cancel die Stornierung über das Stornierungstoken anfordern, während die Schnittstelle verfügbar bleibt. Der Arbeitnehmer muss dieser Aufforderung an sicheren Stellen nachkommen; Das Drücken der Taste sollte zu einem kontrollierten Ergebnis und nicht zu einer unerklärlichen Unterbrechung führen.
Führen Sie bis zum Abschluss einen weiteren Import durch und vergleichen Sie die Erfolgs-, Abbruch- und Fehlerergebnisse. Jeder Pfad sollte die Steuerelemente in einem kohärenten Zustand mit einem nützlichen Bericht hinterlassen, damit der Benutzer das Ergebnis verstehen und einen anderen Vorgang starten kann.
Behandeln Sie Start, Fortschritt, Abbruch und Berichterstellung als einen einzigen Benutzerworkflow. Die Hintergrundimplementierung ist erfolgreich, wenn der Benutzer während des gesamten Vorgangs informiert bleibt und die Kontrolle behält, und nicht erst, wenn der Import schließlich abgeschlossen ist.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 7 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – CSV-Import im Hintergrund · 40 Min.
Ziel: Implementieren Sie eine simulierte CSV-Importfunktion, die im Hintergrund läuft, einen Fortschrittsbalken und ein Log-Panel aktualisiert, Abbruch unterstützt und Fehler pro Zeile meldet, ohne die UI zu blockieren. Ergebnisse: ImportService; Starter für die Hintergrundaufgabe; Fortschrittsanzeige in der UI; Behandlung des Abbruchs; Notizen zur Thread-Sicherheit.
Modul 8: Services, Dependency Injection und testbare UI-Muster
Modul 8 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zur Dependency Injection an, bestehen Sie den Wissenstest und injizieren Sie anschließend im praktischen Lab Services in die UI.
- LektüreLektionsleitfaden · 12 Min.
Nutzen Sie die Service-Registrierung von Wisej.NET, sessionbezogene Services, Property Injection, Constructor Injection für Services sowie einfache Presenter- und Application-Service-Muster.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung von Services und DI: saubere Interfaces mit Fake- und Produktivprofilen, die Wahl der Service-Lebensdauer und ein Presenter, der eine Maske testbar macht.
- VideolektionServices für eine testbare UI injizieren · 8 Min.
Ein geführter Video-Walkthrough zur Dependency Injection, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Lassen Sie Bildschirme die Dienste, die sie benötigen, durch Abhängigkeitsinjektion deklarieren. Dadurch wird ihre Arbeit von Konstruktionsentscheidungen getrennt, sodass dieselbe Schnittstelle jetzt eine Demonstrationsimplementierung und später eine Produktivimplementierung verwenden kann.
Definieren Sie Schnittstellen für die vom Bildschirm genutzten Funktionen, z. B. Tickets, Benutzer, Berechtigungen, Benachrichtigungen und Audits. Diese Verträge sollten nützliche Vorgänge beschreiben, anstatt die internen Klassen oder Speicheroptionen hinter jedem Dienst offenzulegen.
Registrieren Sie die gefälschten Dienste in Application.Services und wählen Sie ihre Lebensdauer bewusst aus. Das Injektionsattribut stellt dann die Abhängigkeiten der Seite bereit, sodass Sie den Servicevertrag ausüben können, bevor Sie eine echte Infrastruktur anschließen.
Verschieben Sie die koordinierenden Entscheidungen des Bildschirms in einen Präsentator und überlassen Sie den Steuerelementen die Verantwortung für Interaktion und Anzeige. Datenbankabfragen, Berechtigungsentscheidungen und bildschirmübergreifende Regeln können dann einfacher überprüft werden, ohne durch den visuellen Kontrollbaum navigieren zu müssen.
Vergleichen Sie die gemeinsame, Sitzungs-, Thread- und transiente Lebensdauer mit dem, was der Dienst speichert. Alles, was benutzerspezifisch ist, erfordert den entsprechenden Sitzungsbereich. Eine praktische gemeinsame Registrierung darf den Kontext eines Benutzers nicht in die Abhängigkeit eines anderen Benutzers verwandeln.
Ersetzen Sie die gefälschte Registrierung durch eine Produktivimplementierung, die dieselbe Schnittstelle erfüllt. Der Bildschirm sollte weiterhin dieselben Vorgänge aufrufen, was zeigt, dass Infrastrukturänderungen kein Umschreiben der Interaktionslogik erfordern.
Abhängigkeiten lassen sich leichter nachvollziehen, wenn sie richtig deklariert, ersetzbar und gültig sind. Ein Prüfer sollte in der Lage sein, zu sehen, was ein Bildschirm benötigt, und diese Interaktionen zu testen, ohne die gesamte Produktivumgebung erstellen zu müssen.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 8 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Services in die UI injizieren · 40 Min.
Ziel: Refaktorisieren Sie die Anwendung so, dass sie injizierte Services für Tickets, Benutzer, Berechtigungen, Benachrichtigungen und Audit-Logging verwendet. Ergänzen Sie ein Fake-Registrierungsprofil und ein Produktiv-Registrierungsprofil. Ergebnisse: Methode zur Service-Registrierung; fünf Interfaces mit Fake-Implementierungen; injizierte MainPage/Form; Presenter oder Workflow-Service für eine Maske; Tabelle der Service-Lebensdauern.
Modul 9: JavaScript-Integration, Widget-Interop und clientseitige Erweiterungen
Modul 9 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum JavaScript-Interop an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab Tastenkürzel und Zwischenablage-Interop.
- LektüreLektionsleitfaden · 12 Min.
Setzen Sie JavaScript dort sicher ein, wo es Mehrwert bringt: Tastenkürzel, Widget-Verhalten, externe Bibliotheken, Browser-APIs und Callbacks zwischen Server und Client – ohne die App in eine fragile SPA zu verwandeln.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung des JavaScript-Interops: Tastenkürzel, der Callback-Roundtrip vom Client zum Server und ein Sicherheitshinweis für jeden Interop-Punkt.
- VideolektionSicheren JavaScript-Interop ergänzen · 8 Min.
Ein geführter Video-Walkthrough zum JavaScript-Interop, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Fügen Sie eine Tastenkombination und einen Zwischenablage-Assistenten als gezielte Browser-Erweiterungen hinzu. Die Beispiele zeigen, wie die lokale Interaktion schneller werden kann, während der Server weiterhin den Linkinhalt kontrolliert und den Vorgang aufzeichnet.
Verwenden Sie JavaScript für browserseitiges Verhalten wie Verknüpfungen, Widget-Interaktionen und Browser-Programmierschnittstellen. Geben Sie ihm eine spezifische Erweiterung, während Sie Geschäftsentscheidungen in der serverseitigen Anwendung behalten, wo sie durchsetzbar bleiben.
Behalten Sie das Skript in einer benannten, wartbaren Quelle und hängen Sie es erst an, nachdem das Widget vorhanden ist. Eine eingebettete Ressource oder JavaScriptSource erleichtert das Auffinden des Verhaltens, während das korrekte Lebenszyklus-Timing ihm ein gültiges Ziel gibt.
Behandeln Sie Control K im Browser, um die globale Suche sofort zu fokussieren. Da diese Aktion nur den Fokus ändert, ist kein Server-Roundtrip erforderlich, bevor der Benutzer mit der Eingabe einer Abfrage beginnen kann.
Erstellen Sie die sichere Verbindung auf dem Server, rufen Sie dann das Verhalten der Zwischenablage über Application.Eval auf und zeichnen Sie die Aktion auf. Der Browser führt die lokale Zwischenablage-Interaktion aus, während die Anwendung die Kontrolle darüber behält, was geteilt wird.
Dokumentieren Sie, welche Daten an JavaScript gehen, welches Ergebnis zurückkommt und welche Entscheidungen auf dem Server verbleiben. Diese Grenze erleichtert die Überprüfung der Verbesserung und verhindert, dass eine Browser-Funktion stillschweigend geschäftliche Autorität erlangt.
Halten Sie jedes Skript so klein, dass sein Zweck und seine Grenzen offensichtlich sind. Ein fokussiertes Browserverhalten lässt sich leichter beibehalten, wenn es den Wisej.NET-Workflow ergänzt und nicht zu einem alternativen Zuhause für Geschäftsregeln wird.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 9 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Tastenkürzel und Zwischenablage-Interop · 40 Min.
Ziel: Ergänzen Sie clientseitige Tastenkürzel und eine Hilfsfunktion für die Browser-Zwischenablage. Erkennen Sie mit JavaScript Strg+K und setzen Sie den Fokus auf das globale Suchfeld, und ergänzen Sie eine vom Server bestätigte Kopieraktion in die Zwischenablage für den Link des ausgewählten Tickets. Ergebnisse: eingebettetes Skript oder JavaScriptSource-Skript; C#-Methode, die Client-Verhalten auslöst; Server-Callback-Handler; Sicherheitshinweis für jeden Interop-Punkt.
Modul 10: Theming, Ressourcen, Lokalisierung und UI-Modernisierung
Modul 10 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum Theming an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab ein gestaltetes, lokalisiertes Dashboard.
- LektüreLektionsleitfaden · 12 Min.
Modernisieren Sie Wisej.NET-Anwendungen mit Themes, CSSStyle, Ressourcen, Symbolen, Theme-Wechsel zur Laufzeit, Lokalisierung und Regeln für visuelle Konsistenz.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung des Themings: Wechsel zwischen hellem und dunklem Theme zur Laufzeit, wiederverwendbare Status-Chips über CSSStyle, Verwaltung von Ressourcen und kulturabhängige Lokalisierung.
- VideolektionDas Dashboard gestalten und lokalisieren · 8 Min.
Ein geführter Video-Walkthrough zum Theming, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Modernisieren Sie das Dashboard durch gemeinsame visuelle Regeln und kulturbewusste Inhalte. Ein einheitliches Design, eine wiederverwendbare Statusanzeige und eine lokalisierte Formatierung helfen Benutzern, denselben Workflow auch dann zu erkennen, wenn sich seine Sprache und der verfügbare Platz ändern.
Integrieren Sie umfassende Erscheinungsbildoptionen in das Design, bevor Sie steuerelementspezifische Ausnahmen hinzufügen. Durch zentrale Regeln kann eine visuelle Anpassung die gesamte Anwendung erreichen, während verstreute lokale Überschreibungen die konsistente Anwendung derselben Änderung erschweren.
Erstellen Sie einen Status-Chip UserControl, um dessen Text, Farbe und Abstand zu besitzen. Die Wiederverwendung dieser Komponente verhindert, dass Bildschirme unterschiedliche visuelle Bedeutungen für denselben Status erfinden, und gibt künftigen Anpassungen einen Ort zum Leben.
Speichern Sie benutzerbezogene Etiketten in Ressourcen und formatieren Sie Daten und Geld entsprechend der ausgewählten Kultur. Übersetzung und Formatierung lösen unterschiedliche Probleme, daher muss die Änderung der Sprache auch Werte hervorbringen, die Benutzer richtig interpretieren können.
Wechseln Sie die Kultur im eigentlichen Dashboard und überprüfen Sie sowohl die Textpassung als auch die formatierten Werte. Längere deutsche Beschriftungen können Layoutannahmen offenlegen, während geänderte Datumsangaben und Währungen zeigen, ob die Formatierung der ausgewählten Kultur und nicht dem fest codierten Text entspricht.
Überprüfen Sie gemeinsam Abstände, Hierarchie, Kontrast, Symbole, Statusmeldungen und Designausnahmen. Diese Prüfungen verbinden visuelle Konsistenz mit praktischem Lesen und Handeln und helfen dabei, einen attraktiven Bildschirm zu identifizieren, der dennoch wichtige Informationen verdeckt.
Ein ausgefeiltes Dashboard behält seine Bedeutung über alle Bildschirme und Kulturen hinweg. Gemeinsam genutzte Komponenten und Ressourcen machen die Konsistenz aufrechterhalten, während das Testen real übersetzter Layouts bestätigt, dass das Design weiterhin die Aufgabe des Benutzers unterstützt.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 10 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Gestaltetes, lokalisiertes Dashboard · 40 Min.
Ziel: Erstellen Sie ein ansprechendes Betriebs-Dashboard mit Umschalter zwischen hellem und dunklem Theme, einheitlichen Status-Chips, lokalisierten Beschriftungen für mindestens zwei Kulturen und kulturabhängiger Datums- und Währungsformatierung. Ergebnisse: UI zum Theme-Wechsel; Status-Chip-UserControl; Ressourcendateien oder Notizen zur Lokalisierung; Checkliste zur UI-Modernisierung, angewendet auf zwei Masken.
Modul 11: Sicherheit, Authentifizierung, Autorisierung und sichere Servergrenzen
Modul 11 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zur Sicherheit an, bestehen Sie den Wissenstest und erstellen Sie anschließend im praktischen Lab Authentifizierung, Autorisierung und Audit.
- LektüreLektionsleitfaden · 12 Min.
Bauen Sie sichere Wisej.NET-Anwendungen, indem Sie das Vertrauen auf dem Server halten, gefährliche Anzeigepfade bereinigen, Authentifizierung behandeln, Autorisierung in Services durchsetzen und sicherheitsrelevante Deployment-Einstellungen dokumentieren.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung der Sicherheit: serverseitig durchgesetzte Autorisierung, warum ein deaktivierter Button keine Zugriffskontrolle ist, sicherer Umgang mit HTML und Audit-Logging.
- VideolektionAuthentifizierung und Autorisierung ergänzen · 8 Min.
Ein geführter Video-Walkthrough zur Sicherheit, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Erzwingen Sie sensible Aktionen in dem Dienst, der sie ausführt. Dieses Modul verwendet die Schnittstelle, um legitime Benutzer anzuleiten und gleichzeitig zu beweisen, dass der Server nicht autorisierte Anfragen ablehnt, selbst wenn die Steuerung des Bildschirms manipuliert wird.
Stellen Sie die Identität der Sitzung fest, bevor Sie den Beginn sensibler Arbeitsabläufe zulassen. Die Authentifizierung liefert die vertrauenswürdige Antwort darauf, wer handelt, die spätere Berechtigungsprüfungen verwenden, um zu entscheiden, ob diese Person einen Vorgang ausführen darf.
Autorisieren Sie an der Ausführungsgrenze und prüfen Sie sowohl Erfolg als auch Ablehnung. Eine Aufzeichnung der abgelehnten Versuche ist neben abgeschlossenen Aktionen wichtig, da sie erklärt, warum bei einer Anfrage keine Änderung vorgenommen wurde, und die Untersuchung von Missbrauch unterstützt.
Erzwingen Sie, dass die Schaltfläche aktiviert wird, und versuchen Sie die eingeschränkte Aktion. Der Dienst muss dies dennoch ablehnen, was zeigt, dass eine hilfreiche Schnittstelleneinstellung nicht der Mechanismus ist, der den zugrunde liegenden Vorgang schützt.
Kodieren Sie vom Benutzer bereitgestellten Text, bevor Sie ihn auf Oberflächen platzieren, die Markup interpretieren können. Überprüfen Sie jeden AllowHtml-Pfad bewusst, damit als Daten gedachter Inhalt nicht unerwartet ausführbar oder in eine aktive Seitenstruktur umgewandelt werden kann.
Überwachen Sie wichtige Aktionen und überprüfen Sie die umgebenden Sitzungs-, Cookie-, Upload-, Protokollierungs- und Inhaltssicherheitsrichtlinieneinstellungen. Diese Prüfungen ergänzen Dienstberechtigungen, indem sie überprüfen, wie Identität, eingehende Inhalte und Diagnoseinformationen durch die Anwendung übertragen werden.
Der Server muss in der Lage sein, eine unsichere Anfrage abzulehnen, unabhängig davon, wie sie die Anwendung erreicht hat. Eine klare Identität, Berechtigungsprüfungen auf Serviceebene, eine sichere Ausgabe und aussagekräftige Prüfdatensätze wirken zusammen, um diese Grenze durchzusetzen.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 11 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Authentifizierung, Autorisierung und Audit · 40 Min.
Ziel: Ergänzen Sie eine simulierte Authentifizierung, rollenbasierte Autorisierung, serverseitige Berechtigungsprüfungen, sicheren Umgang mit HTML und Audit-Logging. Zeigen Sie, dass eine nicht autorisierte Aktion nicht ausgeführt werden kann, selbst wenn ein UI-Control manuell aktiviert wird. Ergebnisse: Anmeldeschranke; Berechtigungs-Service; Autorisierungsprüfungen auf Service-Ebene; Richtlinie für sicheren Text bzw. sicheres HTML; Sicherheits-Checkliste.
Modul 12: Deployment, Diagnose, Load Balancing und Auslieferung des Abschlussprojekts
Modul 12 von Produktivarchitektur im Detail. Lesen Sie den Lektionsleitfaden und den Leitfaden zu den angewandten Konzepten, sehen Sie sich den Video-Walkthrough zum Deployment an, bestehen Sie den Wissenstest und bereiten Sie anschließend im praktischen Lab Release und Auslieferung des Abschlussprojekts vor.
- LektüreLektionsleitfaden · 12 Min.
Bereiten Sie eine Wisej.NET-Anwendung auf Deployment und Betrieb vor – mit Hosting-Optionen, Health Checks, Logging, Diagnose, Load Balancing, Release Notes und der Präsentation des Abschlussprojekts.
- LektüreLab- und Prüfungsleitfaden · 12 Min.
Vertiefung des Deployments: Abwägungen beim Hosting, Health Checks und Diagnose, Sticky Sessions für Load Balancing sowie ein sauberer Release- und Rollback-Plan.
- VideolektionDas Abschlussprojekt für das Release vorbereiten · 8 Min.
Ein geführter Video-Walkthrough zum Deployment, den Sie direkt hier im Player abspielen können.
Transkript der Sprecherstimme
Bereiten Sie TicketOps nach der Veröffentlichung für den Betrieb vor. Das Abschlussprojekt umfasst Hosting-Entscheidungen, Gesundheitsnachweise, Diagnosen und Wiederherstellungsanweisungen, sodass jemand außer dem Entwickler die laufende Anwendung überprüfen und unterstützen kann.
Wählen Sie das Hosting-Ziel aus, indem Sie seine Auswirkungen auf Konfiguration, Protokolle, Skalierung, Identität und WebSocket-Verbindungen überprüfen. Diese Anforderungen prägen den Supportplan. Notieren Sie sie daher, bevor Sie die Veröffentlichung als abgeschlossene Bereitstellung behandeln.
Stellen Sie sichere Gesundheitsinformationen über HealthCheck.json für Monitore und Load Balancer bereit. Die Antwort soll dabei helfen, festzustellen, ob die Instanz verwendbar ist, ohne Anmeldeinformationen oder andere Konfigurationsdetails preiszugeben, die operative Aufrufer nicht benötigen.
Platzieren Sie Umgebungsinformationen, Protokollierungsstatus und Prüfungen auf einer rollengeschützten Diagnoseseite. Dies gibt autorisierten Supportmitarbeitern einen einheitlichen Ausgangspunkt und beschränkt gleichzeitig die angezeigten Informationen auf das, was für den Betrieb der Anwendung nützlich ist.
Der Server speichert den Sitzungsstatus jedes Benutzers. Konfigurieren Sie Sticky Sessions, damit der Load Balancer diesen Benutzer auf der richtigen Instanz hält. Die Bereitstellung muss auch die WebSocket-Verbindung der Anwendung zulassen.
Packen Sie die Checkliste, die Diagnose, die Versionshinweise, die Rollback-Hinweise und das Demonstrationsskript zusammen. Das Paket sollte erklären, was sich geändert hat, wie man es überprüft und wie man es wiederherstellt, damit die Version von einer anderen Person überprüft werden kann.
Das Abschlussprojekt ist zur Übergabe bereit, wenn seine Funktionsweise ebenso verständlich ist wie seine Bildschirme. Bewahren Sie den Release-Nachweis bei der Anwendung auf, damit Support und zukünftige Änderungen von einer gemeinsamen, dokumentierten Baseline ausgehen.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt TicketOps dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 12 · 12 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Release und Auslieferung des Abschlussprojekts · 40 Min.
Ziel: Bereiten Sie die Anwendung des Abschlussprojekts auf das Release vor. Ergänzen Sie HealthCheck.json, eine Diagnoseseite, eine Deployment-Checkliste, Release Notes, Rollback-Notizen und ein finales Demo-Skript. Ergebnisse: HealthCheck.json; Deployment-Checkliste; Diagnoseseite; Release Notes; Präsentations- bzw. Demo-Skript für das Abschlussprojekt.