oqtane-general-description #62

Merged
Kocoder merged 17 commits from oqtane-general-description into main 2026-03-02 11:33:12 +00:00
Owner
No description provided.
Kocoder added 2 commits 2026-02-27 22:32:00 +00:00
NEW: Oqtane Allgemein
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 1m26s
Word Count / count-words (pull_request) Successful in 6s
ba53f14e4d
Kocoder added 1 commit 2026-02-27 22:35:01 +00:00
New: fix paths
All checks were successful
Word Count / count-words (pull_request) Successful in 7s
5fe85b6b15
Kocoder force-pushed oqtane-general-description from 5fe85b6b15 to 885eeea339 2026-02-27 22:35:29 +00:00 Compare
Kocoder closed this pull request 2026-02-27 22:35:47 +00:00
Kocoder reopened this pull request 2026-02-27 22:35:49 +00:00
Kocoder added 2 commits 2026-02-27 22:40:17 +00:00
Fix
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 58s
Word Count / count-words (pull_request) Successful in 8s
bdde8dd7a9
Kocoder closed this pull request 2026-02-27 22:40:27 +00:00
Kocoder reopened this pull request 2026-02-27 22:40:29 +00:00
Kocoder added 1 commit 2026-02-27 22:43:25 +00:00
CI: Use gemini 3 flash
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 57s
Word Count / count-words (pull_request) Successful in 7s
3f9f501519
Kocoder closed this pull request 2026-02-27 22:43:31 +00:00
Kocoder reopened this pull request 2026-02-27 22:43:34 +00:00
Kocoder added 1 commit 2026-02-27 22:46:14 +00:00
CI: Use gemini 3 flash preview
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 1m13s
Word Count / count-words (pull_request) Successful in 6s
a781a21d73
Kocoder closed this pull request 2026-02-27 22:46:22 +00:00
Kocoder reopened this pull request 2026-02-27 22:46:27 +00:00
Kocoder added 1 commit 2026-02-27 23:02:29 +00:00
CI: Alter Prompt
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 1m16s
Word Count / count-words (pull_request) Successful in 15s
1b410a0518
Kocoder closed this pull request 2026-02-27 23:09:39 +00:00
Kocoder reopened this pull request 2026-02-27 23:09:45 +00:00

🤖 Gemini Writing Review

Review for Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md

Hier ist eine detaillierte Überprüfung deines Markdown-Contents auf Rechtschreibung, Grammatik, Stil sowie Vollständigkeit und Korrektheit.

1. Rechtschreibung und Grammatik

  • Fehler: Falsche Schreibweise von Fachbegriffen (Groß-/Kleinschreibung und Bindestriche).
    • Original: Asp.Net
    • Korrektur: ASP.NET (Die offizielle Schreibweise ist durchgehend groß).
  • Fehler: Tippfehler in "Funktionalitäten".
    • Original: ...neue Funktoinalitäten in das CMS hinzufügen...
    • Korrektur: ...neue Funktionalitäten zum CMS hinzufügen...
  • Fehler: Fehlende Durchkopplung bei zusammengesetzten Nomen (Deppenleerzeichen).
    • Original: Oqtane System, Server Projekt, Client Projekt, Shared Projekt, Package Projekt, Startup logik.
    • Korrektur: Oqtane-System, Server-Projekt, Client-Projekt, Shared-Projekt, Package-Projekt, Startup-Logik.
  • Fehler: Kleinschreibung von Nominalisierungen.
    • Original: ...zum debuggen und releasen..., ...zum speichern der Daten...
    • Korrektur: ...zum Debuggen und Releasen..., ...zum Speichern der Daten...
  • Fehler: Tippfehler bei "Migrationen".
    • Original: ...Migratoinen und Server-Services...
    • Korrektur: ...Migrationen und Server-Services...
  • Fehler: Rechtschreibfehler "danach" und "Abstraktionsschicht".
    • Original: ...und dannach bereitgestellt., ...gemäß der Abstraktionsschickt implemetiert...
    • Korrektur: ...und danach bereitgestellt., ...gemäß der Abstraktionsschicht implementiert...
  • Fehler: Falscher Plural/Genitiv bei "Nugets".
    • Original: ...die Nuget Spezifikation., ...nuget's entpackt...
    • Korrektur: ...die NuGet-Spezifikation., ...NuGet-Pakete entpackt... (Im Deutschen kein Apostroph beim Plural).
  • Fehler: Kleinschreibung von Nomen (Englische Fachbegriffe werden im Deutschen großgeschrieben, wenn sie als Nomen fungieren).
    • Original: ...lediglich auf abstraktionen., ...high-level und low-level Module.
    • Korrektur: ...lediglich auf Abstraktionen., ...High-Level- und Low-Level-Module.

2. Stilistische Verbesserungen

  • Verbesserung: Ausdrucksweise bei der Beschreibung von Abhängigkeiten.
    • Original: ...damit seine Dependencies befriedigt werden.
    • Alternative: ...um die Abhängigkeiten aufzulösen. (Klingt im technischen Kontext professioneller).
  • Verbesserung: Redundanz bei "Server-Services".
    • Original: ...Server-Services (entwickelt nach einem Interface definiert im Client)...
    • Alternative: ...Server-Services (basierend auf den im Client-Projekt definierten Interfaces)...
  • Verbesserung: Formulierung der Architektur-Vorteile.
    • Original: Die einzelnen Module sind auch leichter austauschbar, testbar.
    • Alternative: Dadurch sind die einzelnen Module leichter austauschbar und testbar.
  • Verbesserung: Konsistente Schreibweise von "Dependency Injection".
    • Original: Teils Injektion, teils Injection.
    • Alternative: Bleibe konsistent bei Dependency Injection (da dies der feststehende Fachbegriff ist).

3. Check auf Vollständigkeit und Korrektheit

  • Vollständigkeit:
    • Kritisch: Die Abschnitte Was ist Blazor? / Was ist Razor? / Kestrel, Websockets und HTTP 1.1, sowie fast der gesamte Teil Projektmanagement, Learnings und Modules enthalten nur Überschriften. Für eine Diplomarbeit müssen diese Inhalte zwingend ausgearbeitet werden.
    • Fehlende Definitionen: Im Abschnitt "Architektur eines Moduls" erwähnst du "Server, Client, Shared und Package". Es wäre gut, kurz zu erwähnen, dass dies dem Standard-Blazor-WebAssembly-Hosted-Modell entspricht, auf dem Oqtane basiert.
  • Korrektheit:
    • Technische Präzision: In der Beschreibung des Shared-Projekts schreibst du: EntityFramework Modellen zum speichern der Daten im Arbeitsspeicher. Das ist technisch etwas unpräzise. EF-Modelle (POCOs) dienen der Definition der Datenstruktur. Das "Speichern im Arbeitsspeicher" ist eher eine Funktion der Laufzeit-Instanzen. Besser: ...die Entity-Framework-Modelle zur Definition der Datenbankstruktur und zum Datenaustausch.
    • NuGet-Pfad: Du erwähnst net10.0. Beachte, dass .NET 10 erst in der Zukunft (Ende 2025) erscheint. Falls du aktuell entwickelst, meinst du wahrscheinlich net8.0 oder net9.0.
    • Mermaid-Diagramm: Das zweite Mermaid-Diagramm (DIP) nutzt mdi:car-clutch. Das ist kreativ, aber in einer formalen Arbeit solltest du sicherstellen, dass die Icons auch gerendert werden können oder Standard-Boxen verwenden. Der Pfeil von a zu ib sollte im DI-Kontext zeigen, dass a das Interface nutzt (Abhängigkeit).

Zusammenfassendes Fazit

Der technische Inhalt zum Thema Dependency Injection und Oqtane-Architektur ist inhaltlich gut strukturiert und korrekt erfasst. Die größten Schwachstellen sind die fehlende Durchkopplung von Nomen (Bindestriche), die vielen noch leeren Kapitel und einige Flüchtigkeitsfehler bei Fachbegriffen.

### 🤖 Gemini Writing Review #### Review for `Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md` Hier ist eine detaillierte Überprüfung deines Markdown-Contents auf Rechtschreibung, Grammatik, Stil sowie Vollständigkeit und Korrektheit. ### 1. Rechtschreibung und Grammatik * **Fehler:** Falsche Schreibweise von Fachbegriffen (Groß-/Kleinschreibung und Bindestriche). * **Original:** `Asp.Net` * **Korrektur:** `ASP.NET` (Die offizielle Schreibweise ist durchgehend groß). * **Fehler:** Tippfehler in "Funktionalitäten". * **Original:** `...neue Funktoinalitäten in das CMS hinzufügen...` * **Korrektur:** `...neue Funktionalitäten zum CMS hinzufügen...` * **Fehler:** Fehlende Durchkopplung bei zusammengesetzten Nomen (Deppenleerzeichen). * **Original:** `Oqtane System`, `Server Projekt`, `Client Projekt`, `Shared Projekt`, `Package Projekt`, `Startup logik`. * **Korrektur:** `Oqtane-System`, `Server-Projekt`, `Client-Projekt`, `Shared-Projekt`, `Package-Projekt`, `Startup-Logik`. * **Fehler:** Kleinschreibung von Nominalisierungen. * **Original:** `...zum debuggen und releasen...`, `...zum speichern der Daten...` * **Korrektur:** `...zum Debuggen und Releasen...`, `...zum Speichern der Daten...` * **Fehler:** Tippfehler bei "Migrationen". * **Original:** `...Migratoinen und Server-Services...` * **Korrektur:** `...Migrationen und Server-Services...` * **Fehler:** Rechtschreibfehler "danach" und "Abstraktionsschicht". * **Original:** `...und dannach bereitgestellt.`, `...gemäß der Abstraktionsschickt implemetiert...` * **Korrektur:** `...und danach bereitgestellt.`, `...gemäß der Abstraktionsschicht implementiert...` * **Fehler:** Falscher Plural/Genitiv bei "Nugets". * **Original:** `...die Nuget Spezifikation.`, `...nuget's entpackt...` * **Korrektur:** `...die NuGet-Spezifikation.`, `...NuGet-Pakete entpackt...` (Im Deutschen kein Apostroph beim Plural). * **Fehler:** Kleinschreibung von Nomen (Englische Fachbegriffe werden im Deutschen großgeschrieben, wenn sie als Nomen fungieren). * **Original:** `...lediglich auf abstraktionen.`, `...high-level und low-level Module.` * **Korrektur:** `...lediglich auf Abstraktionen.`, `...High-Level- und Low-Level-Module.` ### 2. Stilistische Verbesserungen * **Verbesserung:** Ausdrucksweise bei der Beschreibung von Abhängigkeiten. * **Original:** `...damit seine Dependencies befriedigt werden.` * **Alternative:** `...um die Abhängigkeiten aufzulösen.` (Klingt im technischen Kontext professioneller). * **Verbesserung:** Redundanz bei "Server-Services". * **Original:** `...Server-Services (entwickelt nach einem Interface definiert im Client)...` * **Alternative:** `...Server-Services (basierend auf den im Client-Projekt definierten Interfaces)...` * **Verbesserung:** Formulierung der Architektur-Vorteile. * **Original:** `Die einzelnen Module sind auch leichter austauschbar, testbar.` * **Alternative:** `Dadurch sind die einzelnen Module leichter austauschbar und testbar.` * **Verbesserung:** Konsistente Schreibweise von "Dependency Injection". * **Original:** Teils `Injektion`, teils `Injection`. * **Alternative:** Bleibe konsistent bei `Dependency Injection` (da dies der feststehende Fachbegriff ist). ### 3. Check auf Vollständigkeit und Korrektheit * **Vollständigkeit:** * **Kritisch:** Die Abschnitte `Was ist Blazor? / Was ist Razor? / Kestrel`, `Websockets und HTTP 1.1`, sowie fast der gesamte Teil `Projektmanagement`, `Learnings` und `Modules` enthalten nur Überschriften. Für eine Diplomarbeit müssen diese Inhalte zwingend ausgearbeitet werden. * **Fehlende Definitionen:** Im Abschnitt "Architektur eines Moduls" erwähnst du "Server, Client, Shared und Package". Es wäre gut, kurz zu erwähnen, dass dies dem Standard-Blazor-WebAssembly-Hosted-Modell entspricht, auf dem Oqtane basiert. * **Korrektheit:** * **Technische Präzision:** In der Beschreibung des `Shared`-Projekts schreibst du: `EntityFramework Modellen zum speichern der Daten im Arbeitsspeicher`. Das ist technisch etwas unpräzise. EF-Modelle (POCOs) dienen der Definition der Datenstruktur. Das "Speichern im Arbeitsspeicher" ist eher eine Funktion der Laufzeit-Instanzen. Besser: `...die Entity-Framework-Modelle zur Definition der Datenbankstruktur und zum Datenaustausch.` * **NuGet-Pfad:** Du erwähnst `net10.0`. Beachte, dass .NET 10 erst in der Zukunft (Ende 2025) erscheint. Falls du aktuell entwickelst, meinst du wahrscheinlich `net8.0` oder `net9.0`. * **Mermaid-Diagramm:** Das zweite Mermaid-Diagramm (DIP) nutzt `mdi:car-clutch`. Das ist kreativ, aber in einer formalen Arbeit solltest du sicherstellen, dass die Icons auch gerendert werden können oder Standard-Boxen verwenden. Der Pfeil von `a` zu `ib` sollte im DI-Kontext zeigen, dass `a` das Interface *nutzt* (Abhängigkeit). ### Zusammenfassendes Fazit Der technische Inhalt zum Thema Dependency Injection und Oqtane-Architektur ist inhaltlich gut strukturiert und korrekt erfasst. Die größten Schwachstellen sind die fehlende Durchkopplung von Nomen (Bindestriche), die vielen noch leeren Kapitel und einige Flüchtigkeitsfehler bei Fachbegriffen.
Kocoder added 1 commit 2026-02-27 23:23:59 +00:00
New: save wordcounts in PR Comment
Some checks failed
Word Count / count-words (pull_request) Failing after 7s
e43bca40eb
Kocoder added 1 commit 2026-02-27 23:24:52 +00:00
CI: Setup golang
All checks were successful
Word Count / count-words (pull_request) Successful in 34s
6fabbec335
Kocoder added 1 commit 2026-02-27 23:28:31 +00:00
Fix: WC
All checks were successful
Word Count / count-words (pull_request) Successful in 32s
ee667a1df7
Kocoder added 1 commit 2026-02-27 23:31:17 +00:00
Fix: WC Output
All checks were successful
Word Count / count-words (pull_request) Successful in 34s
b1ee047562
Kocoder added 1 commit 2026-02-28 10:10:37 +00:00
CI: Issue Change Requests
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 1m23s
Word Count / count-words (pull_request) Successful in 35s
4d6906e5b4
Kocoder closed this pull request 2026-02-28 10:10:47 +00:00
Kocoder reopened this pull request 2026-02-28 10:10:52 +00:00
gitea-actionsbot requested changes 2026-02-28 10:12:31 +00:00
gitea-actionsbot left a comment
  • del
- del
Kocoder added 1 commit 2026-02-28 10:18:36 +00:00
CI: Issue Change Requests 2
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 56s
Word Count / count-words (pull_request) Successful in 36s
c4745d915d
Kocoder closed this pull request 2026-02-28 10:18:41 +00:00
Kocoder reopened this pull request 2026-02-28 10:18:51 +00:00
Kocoder closed this pull request 2026-02-28 10:21:52 +00:00
Kocoder reopened this pull request 2026-02-28 10:21:59 +00:00

🤖 Word Count Report

Word count for Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md

Word count: 921

### 🤖 Word Count Report #### Word count for `Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md` Word count: 921
Kocoder added 1 commit 2026-02-28 10:25:06 +00:00
CI: Issue Change Requests 3
Some checks failed
Word Count / count-words (pull_request) Has been cancelled
Gemini Writing Review / gemini-review (pull_request) Successful in 1m24s
6c344a94e9
Kocoder closed this pull request 2026-02-28 10:25:09 +00:00
Kocoder reopened this pull request 2026-02-28 10:25:15 +00:00
gitea-actionsbot requested changes 2026-02-28 10:27:01 +00:00
gitea-actionsbot left a comment

🤖 Gemini Writing Review

I've found some areas for improvement in the documentation. Please see the inline comments below.

### 🤖 Gemini Writing Review I've found some areas for improvement in the documentation. Please see the inline comments below.
@@ -6,6 +6,28 @@ gitea: none
# Technologie
## Entwicklung mit Asp.Net (Was ist Blazor? / Was ist Razor? / Kestrel)

Schreibweise von ASP.NET korrigieren (Großbuchstaben).

## Entwicklung mit ASP.NET (Was ist Blazor? / Was ist Razor? / Kestrel)
Schreibweise von ASP.NET korrigieren (Großbuchstaben). ```suggestion ## Entwicklung mit ASP.NET (Was ist Blazor? / Was ist Razor? / Kestrel) ```
Kocoder marked this conversation as resolved
@@ -6,6 +6,28 @@ gitea: none
# Technologie
## Entwicklung mit Asp.Net (Was ist Blazor? / Was ist Razor? / Kestrel)
## Was ist Oqtane? Architektur von Oqtane?
Oqtane ist ein Framework und CMS zur Entwicklung von Webseiten mithilfe von ASP.Net und Blazor. [^5] Ein Oqtane System besteht aus mehreren Komponenten.

Zusammengesetzte Substantive werden im Deutschen mit Bindestrich oder zusammengeschrieben.

Oqtane ist ein Framework und CMS zur Entwicklung von Webseiten mithilfe von ASP.NET und Blazor. [^5] Ein Oqtane-System besteht aus mehreren Komponenten.
Zusammengesetzte Substantive werden im Deutschen mit Bindestrich oder zusammengeschrieben. ```suggestion Oqtane ist ein Framework und CMS zur Entwicklung von Webseiten mithilfe von ASP.NET und Blazor. [^5] Ein Oqtane-System besteht aus mehreren Komponenten. ```
Kocoder marked this conversation as resolved
@@ -9,0 +10,4 @@
In dieser Diplomarbeit fokussieren wir uns hauptsächlich auf `Themes` und `Modules`, aber es gibt auch `Language Packs` und `Pure Extensions`. [^6]
Ein Modul soll neue Funktoinalitäten in das CMS hinzufügen und ein Theme soll die ganze Gestaltung der Website (die Shell) festlegen. [^6]

Rechtschreibfehler: 'Funktoinalitäten' -> 'Funktionalitäten'.

Ein Modul soll neue Funktionalitäten in das CMS hinzufügen und ein Theme soll die ganze Gestaltung der Website (die Shell) festlegen. [^6]
Rechtschreibfehler: 'Funktoinalitäten' -> 'Funktionalitäten'. ```suggestion Ein Modul soll neue Funktionalitäten in das CMS hinzufügen und ein Theme soll die ganze Gestaltung der Website (die Shell) festlegen. [^6] ```
Kocoder marked this conversation as resolved
@@ -9,0 +18,4 @@
### Architektur eines Moduls
Ein Modul in Oqtane besteht aus 4 Projekten. Server, Client, Shared und Package.
Im Server Projekt liegt Source Code, welcher Serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migratoinen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startup logik.

Mehrere Korrekturen: 'Sourcecode' (Zusammenschreibung), 'serverseitig' (Kleinschreibung als Adjektiv/Adverb), 'Migrationen' (Tippfehler) und 'Startup-Logik' (Bindestrich).

Im Server-Projekt liegt Sourcecode, welcher serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startup-Logik.
Mehrere Korrekturen: 'Sourcecode' (Zusammenschreibung), 'serverseitig' (Kleinschreibung als Adjektiv/Adverb), 'Migrationen' (Tippfehler) und 'Startup-Logik' (Bindestrich). ```suggestion Im Server-Projekt liegt Sourcecode, welcher serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startup-Logik. ```
Kocoder marked this conversation as resolved
@@ -9,0 +20,4 @@
Im Server Projekt liegt Source Code, welcher Serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migratoinen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startup logik.
Im Client Projekt liegen Code und Razor Komponenten für den Client. Also Client-Staruplogik, Client-Services (+ Inferfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressource-Dateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul.

Mehrere Korrekturen: Bindestriche bei 'Razor-Komponenten', 'Startup-Logik'. Rechtschreibfehler 'Interfaces' und 'Ressourcendateien'.

Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Startuplogik, Client-Services (+ Interfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul.
Mehrere Korrekturen: Bindestriche bei 'Razor-Komponenten', 'Startup-Logik'. Rechtschreibfehler 'Interfaces' und 'Ressourcendateien'. ```suggestion Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Startuplogik, Client-Services (+ Interfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul. ```
Kocoder marked this conversation as resolved
@@ -9,0 +22,4 @@
Im Client Projekt liegen Code und Razor Komponenten für den Client. Also Client-Staruplogik, Client-Services (+ Inferfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressource-Dateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul.
Im Shared Projekt wird geteilter Source-Code abgelegt, der Server und Clientseitig verwendet wird. In der Praxis bleibt's hierbei bei den EntityFramework Modellen zum speichern der Daten im Arbeitsspeicher.

Korrektur: 'server- und clientseitig' (Bindestrich bei Ergänzungen) und 'Speichern' (Substantivierung).

Im Shared-Projekt wird geteilter Sourcecode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt's hierbei bei den EntityFramework-Modellen zum Speichern der Daten im Arbeitsspeicher.
Korrektur: 'server- und clientseitig' (Bindestrich bei Ergänzungen) und 'Speichern' (Substantivierung). ```suggestion Im Shared-Projekt wird geteilter Sourcecode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt's hierbei bei den EntityFramework-Modellen zum Speichern der Daten im Arbeitsspeicher. ```
Kocoder marked this conversation as resolved
@@ -9,0 +24,4 @@
Im Shared Projekt wird geteilter Source-Code abgelegt, der Server und Clientseitig verwendet wird. In der Praxis bleibt's hierbei bei den EntityFramework Modellen zum speichern der Daten im Arbeitsspeicher.
Im Package Projekt findet man Skripte zum debuggen und releasen eines Moduls. Und die Nuget Spezifikation.

Korrektur: 'Debuggen' und 'Releasen' (Substantivierung) sowie 'NuGet-Spezifikation'.

Im Package-Projekt findet man Skripte zum Debuggen und Releasen eines Moduls. Und die NuGet-Spezifikation.
Korrektur: 'Debuggen' und 'Releasen' (Substantivierung) sowie 'NuGet-Spezifikation'. ```suggestion Im Package-Projekt findet man Skripte zum Debuggen und Releasen eines Moduls. Und die NuGet-Spezifikation. ```
Kocoder marked this conversation as resolved
@@ -9,0 +25,4 @@
Im Shared Projekt wird geteilter Source-Code abgelegt, der Server und Clientseitig verwendet wird. In der Praxis bleibt's hierbei bei den EntityFramework Modellen zum speichern der Daten im Arbeitsspeicher.
Im Package Projekt findet man Skripte zum debuggen und releasen eines Moduls. Und die Nuget Spezifikation.
- Beim Debug werden die dlls, pdbs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.

Dateiendungen/Akronyme wie DLLs und PDBs sollten großgeschrieben werden.

- Beim Debug werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.
Dateiendungen/Akronyme wie DLLs und PDBs sollten großgeschrieben werden. ```suggestion - Beim Debug werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert. ```
Kocoder marked this conversation as resolved
@@ -9,0 +26,4 @@
Im Package Projekt findet man Skripte zum debuggen und releasen eines Moduls. Und die Nuget Spezifikation.
- Beim Debug werden die dlls, pdbs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.
- Beim Release wird ein Nuget Paket erstellt und unter oqtane.framework/oqtane.server/Packages abgelegt. Dort abgelegte Nuget's werden beim nächsten Start des Oqtane Servers installiert (DB Migrationen werden gemacht und nuget's entpackt).

Korrektur: 'NuGet-Paket' und Plural 'NuGets' (ohne Apostroph).

- Beim Release wird ein NuGet-Paket erstellt und unter oqtane.framework/oqtane.server/Packages abgelegt. Dort abgelegte NuGets werden beim nächsten Start des Oqtane-Servers installiert (DB-Migrationen werden gemacht und NuGets entpackt).
Korrektur: 'NuGet-Paket' und Plural 'NuGets' (ohne Apostroph). ```suggestion - Beim Release wird ein NuGet-Paket erstellt und unter oqtane.framework/oqtane.server/Packages abgelegt. Dort abgelegte NuGets werden beim nächsten Start des Oqtane-Servers installiert (DB-Migrationen werden gemacht und NuGets entpackt). ```
Kocoder marked this conversation as resolved

Zahlen von eins bis zwölf werden im Fließtext üblicherweise ausgeschrieben.

Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeitsumkehrprinzip) ist eines von den fünf `SOLID` Prinzipien in der Softwareentwicklung.
Zahlen von eins bis zwölf werden im Fließtext üblicherweise ausgeschrieben. ```suggestion Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeitsumkehrprinzip) ist eines von den fünf `SOLID` Prinzipien in der Softwareentwicklung. ```
Kocoder marked this conversation as resolved

Korrektur: 'Businesslogik' (Tippfehler) und 'Abstraktionen' (Substantiv).

- Die High-Level-Module beschreiben die Applikations- / Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren, sondern lediglich auf Abstraktionen. [^3]
Korrektur: 'Businesslogik' (Tippfehler) und 'Abstraktionen' (Substantiv). ```suggestion - Die High-Level-Module beschreiben die Applikations- / Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren, sondern lediglich auf Abstraktionen. [^3] ```
Kocoder marked this conversation as resolved

Korrektur: 'Abstraktionsschicht' und 'implementiert' (Tippfehler).

- Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die Low-Level-Implementierungen sollen gemäß der Abstraktionsschicht implementiert werden. [^3]
Korrektur: 'Abstraktionsschicht' und 'implementiert' (Tippfehler). ```suggestion - Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die Low-Level-Implementierungen sollen gemäß der Abstraktionsschicht implementiert werden. [^3] ```
Kocoder marked this conversation as resolved

Deutsche Schreibweise: 'Modell' mit Doppel-L.

Ausgangslage ist eine Softwarearchitektur im Direct-Dependency-Graph-Modell.
Deutsche Schreibweise: 'Modell' mit Doppel-L. ```suggestion Ausgangslage ist eine Softwarearchitektur im Direct-Dependency-Graph-Modell. ```
Kocoder marked this conversation as resolved

Korrektur: 'Austauschen' (Substantivierung).

Das Problem dabei: Die einzelnen Klassen sind eng gekoppelt, was das Austauschen von B mit einer anderen Klasse unmöglich macht. Genau dieses Problem wird vom DIP gelöst.
Korrektur: 'Austauschen' (Substantivierung). ```suggestion Das Problem dabei: Die einzelnen Klassen sind eng gekoppelt, was das Austauschen von B mit einer anderen Klasse unmöglich macht. Genau dieses Problem wird vom DIP gelöst. ```
Kocoder marked this conversation as resolved

Korrektur: 'Dependency Injection' (Eigennamen/Fachbegriffe groß) und 'implementiert wurde' (Stil).

Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich.
Korrektur: 'Dependency Injection' (Eigennamen/Fachbegriffe groß) und 'implementiert wurde' (Stil). ```suggestion Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich. ```
Kocoder marked this conversation as resolved

Korrektur: '.NET' statt '.Net'.

Dependency Injection ist in .NET genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]
Korrektur: '.NET' statt '.Net'. ```suggestion Dependency Injection ist in .NET genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4] ```
Kocoder marked this conversation as resolved

Korrektur: 'Service-Container' (Bindestrich) und 'Verwaltung' (Großschreibung).

Alle Dependencies werden in einem Service-Container zur Verwaltung registriert. .NET hat einen eingebauten Service-Container (eine Implementierung des `IServiceProvider`). [^4]
Korrektur: 'Service-Container' (Bindestrich) und 'Verwaltung' (Großschreibung). ```suggestion Alle Dependencies werden in einem Service-Container zur Verwaltung registriert. .NET hat einen eingebauten Service-Container (eine Implementierung des `IServiceProvider`). [^4] ```
Kocoder marked this conversation as resolved

Korrektur: 'Instanzen' (Substantiv), 'instanziiert' (Rechtschreibung) und 'danach' (Tippfehler).

Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden Instanzen erstellt oder wieder entsorgt (sofern der Service nicht mehr gebraucht wird). Beim Instanziieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt bzw. selbst instanziiert und danach bereitgestellt. [^4]
Korrektur: 'Instanzen' (Substantiv), 'instanziiert' (Rechtschreibung) und 'danach' (Tippfehler). ```suggestion Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden Instanzen erstellt oder wieder entsorgt (sofern der Service nicht mehr gebraucht wird). Beim Instanziieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt bzw. selbst instanziiert und danach bereitgestellt. [^4] ```
Kocoder marked this conversation as resolved

Korrektur: 'Dependency' (Großschreibung am Satzanfang/Substantiv) und 'IMessageWriter' (Zusammenschreibung).

Das ist ein simples Beispiel, welches Teile des DI-Frameworks zeigt. Wir haben einen Service (Klasse Worker), eine Dependency (Klasse MessageWriter) und eine Abstraktionsebene von der Dependency (Interface IMessageWriter).
Korrektur: 'Dependency' (Großschreibung am Satzanfang/Substantiv) und 'IMessageWriter' (Zusammenschreibung). ```suggestion Das ist ein simples Beispiel, welches Teile des DI-Frameworks zeigt. Wir haben einen Service (Klasse Worker), eine Dependency (Klasse MessageWriter) und eine Abstraktionsebene von der Dependency (Interface IMessageWriter). ```
Kocoder marked this conversation as resolved

Korrektur: 'Programmstart' (Doppel-m) und 'danach' (Tippfehler).

Bei Programmstart wird zuerst manuell der Service-Container erstellt, danach alle Module registriert (entweder als HostedService oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)).
Korrektur: 'Programmstart' (Doppel-m) und 'danach' (Tippfehler). ```suggestion Bei Programmstart wird zuerst manuell der Service-Container erstellt, danach alle Module registriert (entweder als HostedService oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)). ```
Kocoder marked this conversation as resolved

Korrektur: 'den zuvor erstellten' (Grammatik), 'Implementierung' (Großschreibung) und 'danach'.

Mit dem Aufruf von `builder.Build()` wird intern ein Dependency-Graph erstellt und mit `host.Run()` wird versucht, die Klasse Worker zu instanziieren und zu starten. Nachdem Worker eine Dependency auf IMessageWriter hat, wird über den zuvor erstellten Dependency-Graph die Implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziiert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden.
Korrektur: 'den zuvor erstellten' (Grammatik), 'Implementierung' (Großschreibung) und 'danach'. ```suggestion Mit dem Aufruf von `builder.Build()` wird intern ein Dependency-Graph erstellt und mit `host.Run()` wird versucht, die Klasse Worker zu instanziieren und zu starten. Nachdem Worker eine Dependency auf IMessageWriter hat, wird über den zuvor erstellten Dependency-Graph die Implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziiert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden. ```
Kocoder marked this conversation as resolved

Grammatik: 'So sieht der Abhängigkeitsgraph... aus' (Singular).

So sieht der Abhängigkeitsgraph bei diesem Beispiel aus.
Grammatik: 'So sieht der Abhängigkeitsgraph... aus' (Singular). ```suggestion So sieht der Abhängigkeitsgraph bei diesem Beispiel aus. ```
Kocoder marked this conversation as resolved

Korrektur: 'asynchron' (Rechtschreibung und Kleinschreibung).

## Sprints und Meetings (in Zukunft eher asynchron)
Korrektur: 'asynchron' (Rechtschreibung und Kleinschreibung). ```suggestion ## Sprints und Meetings (in Zukunft eher asynchron) ```
Kocoder marked this conversation as resolved
Kocoder added 1 commit 2026-03-02 09:36:23 +00:00
Apply proposed Changes
All checks were successful
Word Count / count-words (pull_request) Successful in 1m26s
8ab37a42c9

🤖 Word Count Report

Word count for Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md

Word count: 914

### 🤖 Word Count Report #### Word count for `Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md` Word count: 914
Kocoder added 1 commit 2026-03-02 09:50:04 +00:00
Fix: Typos
All checks were successful
Gemini Writing Review / gemini-review (pull_request) Successful in 1m18s
Word Count / count-words (pull_request) Successful in 34s
8f30e063ce
Kocoder closed this pull request 2026-03-02 09:50:24 +00:00
Kocoder reopened this pull request 2026-03-02 09:50:29 +00:00

🤖 Word Count Report

Word count for Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md

Word count: 900

### 🤖 Word Count Report #### Word count for `Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md` Word count: 900
gitea-actionsbot requested changes 2026-03-02 09:51:55 +00:00
gitea-actionsbot left a comment

🤖 Gemini Writing Review

I've found some areas for improvement in the documentation. Please see the inline comments below.

### 🤖 Gemini Writing Review I've found some areas for improvement in the documentation. Please see the inline comments below.
@@ -8,1 +8,4 @@
## Was ist Oqtane? Architektur von Oqtane?
Oqtane ist ein Framework und CMS zur Entwicklung von Webseiten mithilfe von ASP.NET und Blazor. [^5] Ein Oqtane-System besteht aus mehreren Komponenten.
In dieser Diplomarbeit fokussieren wir uns hauptsächlich auf `Themes` und `Modules`, aber es gibt auch `Language Packs` und `Pure Extensions`. [^6]

Fachbegriffe im Deutschen werden oft zusammengeschrieben oder mit Bindestrich versehen (Durchkopplung).

In dieser Diplomarbeit fokussieren wir uns hauptsächlich auf `Themes` und `Modules`, aber es gibt auch `Language-Packs` und `Pure-Extensions`. [^6]
Fachbegriffe im Deutschen werden oft zusammengeschrieben oder mit Bindestrich versehen (Durchkopplung). ```suggestion In dieser Diplomarbeit fokussieren wir uns hauptsächlich auf `Themes` und `Modules`, aber es gibt auch `Language-Packs` und `Pure-Extensions`. [^6] ```
@@ -9,0 +10,4 @@
In dieser Diplomarbeit fokussieren wir uns hauptsächlich auf `Themes` und `Modules`, aber es gibt auch `Language Packs` und `Pure Extensions`. [^6]
Ein `Module` (Modul) soll neue Funktionalitäten in das CMS hinzufügen und ein `Theme` soll die ganze Gestaltung der Website (die Shell) festlegen. [^6]

Grammatik: 'in das CMS hinzufügen' ist unüblich. Besser: 'dem CMS hinzufügen'. 'Ganze' durch 'gesamte' ersetzt für einen professionelleren Stil.

Ein `Module` (Modul) soll dem CMS neue Funktionalitäten hinzufügen und ein `Theme` soll die gesamte Gestaltung der Website (die Shell) festlegen. [^6]
Grammatik: 'in das CMS hinzufügen' ist unüblich. Besser: 'dem CMS hinzufügen'. 'Ganze' durch 'gesamte' ersetzt für einen professionelleren Stil. ```suggestion Ein `Module` (Modul) soll dem CMS neue Funktionalitäten hinzufügen und ein `Theme` soll die gesamte Gestaltung der Website (die Shell) festlegen. [^6] ```
@@ -9,0 +16,4 @@
[^6]: https://docs.oqtane.org/dev/extensions/index.html
### Architektur eines Moduls
Ein Modul in Oqtane besteht aus 4 Projekten. Server, Client, Shared und Package.

Stil: Der Satz besteht aus Fragmenten. Ein Doppelpunkt ist hier passender.

Ein Modul in Oqtane besteht aus vier Projekten: Server, Client, Shared und Package.
Stil: Der Satz besteht aus Fragmenten. Ein Doppelpunkt ist hier passender. ```suggestion Ein Modul in Oqtane besteht aus vier Projekten: Server, Client, Shared und Package. ```
@@ -9,0 +18,4 @@
### Architektur eines Moduls
Ein Modul in Oqtane besteht aus 4 Projekten. Server, Client, Shared und Package.
Im Server-Projekt liegt Sourcecode, welcher serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startuplogik.

Rechtschreibung: 'Startup-Logik' wird im Deutschen mit Bindestrich oder zusammengeschrieben. 'welcher' kann durch das flüssigere 'der' ersetzt werden.

Im Server-Projekt liegt der Quellcode, der serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen, Server-Services (entwickelt nach einem im Client definierten Interface) und die Server-Startup-Logik.
Rechtschreibung: 'Startup-Logik' wird im Deutschen mit Bindestrich oder zusammengeschrieben. 'welcher' kann durch das flüssigere 'der' ersetzt werden. ```suggestion Im Server-Projekt liegt der Quellcode, der serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen, Server-Services (entwickelt nach einem im Client definierten Interface) und die Server-Startup-Logik. ```
@@ -9,0 +20,4 @@
Im Server-Projekt liegt Sourcecode, welcher serverseitig ausgeführt werden soll. In der Praxis bedeutet das: alle Repositories, Controller, Manager, Migrationen und Server-Services (entwickelt nach einem Interface definiert im Client) und Server-Startuplogik.
Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Staruplogik, Client-Services (+ Inferfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul.

Tippfehler: 'Staruplogik' -> 'Startup-Logik' und 'Inferfaces' -> 'Interfaces'. 'User Interface' -> 'User-Interface'.

Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Startup-Logik, Client-Services (+ Interfaces dafür; die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User-Interface und die Moduldefinitionen für jedes Modul.
Tippfehler: 'Staruplogik' -> 'Startup-Logik' und 'Inferfaces' -> 'Interfaces'. 'User Interface' -> 'User-Interface'. ```suggestion Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Startup-Logik, Client-Services (+ Interfaces dafür; die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User-Interface und die Moduldefinitionen für jedes Modul. ```
@@ -9,0 +22,4 @@
Im Client-Projekt liegen Code und Razor-Komponenten für den Client. Also Client-Staruplogik, Client-Services (+ Inferfaces dafür, die Services hier sollen lediglich die Server-Services über HTTP aufrufen), Ressourcendateien (.resx), die Komponenten / das User Interface und die Moduldefinitionen für jedes Modul.
Im Shared-Projekt wird geteilter Sourcecode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt es hierbei bei den EntityFramework-Modellen zum Speichern der Daten im Arbeitsspeicher.

Rechtschreibung: 'EntityFramework' -> 'Entity-Framework'.

Im Shared-Projekt wird geteilter Quellcode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt es hierbei bei den Entity-Framework-Modellen zum Speichern der Daten.
Rechtschreibung: 'EntityFramework' -> 'Entity-Framework'. ```suggestion Im Shared-Projekt wird geteilter Quellcode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt es hierbei bei den Entity-Framework-Modellen zum Speichern der Daten. ```
@@ -9,0 +24,4 @@
Im Shared-Projekt wird geteilter Sourcecode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt es hierbei bei den EntityFramework-Modellen zum Speichern der Daten im Arbeitsspeicher.
Im Package Projekt findet man Skripte zum Debuggen und Releasen eines Moduls. Und die NuGet-Spezifikation.

Rechtschreibung: 'Package Projekt' -> 'Package-Projekt' (Kompositum).

Im Package-Projekt findet man Skripte zum Debuggen und Releasen eines Moduls sowie die NuGet-Spezifikation.
Rechtschreibung: 'Package Projekt' -> 'Package-Projekt' (Kompositum). ```suggestion Im Package-Projekt findet man Skripte zum Debuggen und Releasen eines Moduls sowie die NuGet-Spezifikation. ```
@@ -9,0 +25,4 @@
Im Shared-Projekt wird geteilter Sourcecode abgelegt, der server- und clientseitig verwendet wird. In der Praxis bleibt es hierbei bei den EntityFramework-Modellen zum Speichern der Daten im Arbeitsspeicher.
Im Package Projekt findet man Skripte zum Debuggen und Releasen eines Moduls. Und die NuGet-Spezifikation.
- Beim Debug werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.

Grammatik/Stil: 'Beim Debug' -> 'Beim Debuggen'. Pfadangaben sollten in Backticks stehen.

- Beim Debuggen werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der drei anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.
Grammatik/Stil: 'Beim Debug' -> 'Beim Debuggen'. Pfadangaben sollten in Backticks stehen. ```suggestion - Beim Debuggen werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der drei anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert. ```
@@ -9,0 +26,4 @@
Im Package Projekt findet man Skripte zum Debuggen und Releasen eines Moduls. Und die NuGet-Spezifikation.
- Beim Debug werden die DLLs, PDBs und statischen Assets wie Skripte und Stylesheets der 3 anderen Projekte in den bereits gebauten Oqtane.Server `oqtane.framework/oqtane.server/bin/debug/net10.0/...` kopiert.
- Beim Release wird ein NuGet-Paket erstellt und unter oqtane.framework/oqtane.server/Packages abgelegt. Dort abgelegte NuGet-Pakete werden beim nächsten Start des Oqtane Servers installiert (DB Migrationen werden gemacht und die Pakete entpackt).

Rechtschreibung: 'DB Migrationen' -> 'DB-Migrationen'. Pfadangabe in Backticks.

- Beim Release wird ein NuGet-Paket erstellt und unter `oqtane.framework/oqtane.server/Packages` abgelegt. Dort abgelegte NuGet-Pakete werden beim nächsten Start des Oqtane-Servers installiert (DB-Migrationen werden durchgeführt und die Pakete entpackt).
Rechtschreibung: 'DB Migrationen' -> 'DB-Migrationen'. Pfadangabe in Backticks. ```suggestion - Beim Release wird ein NuGet-Paket erstellt und unter `oqtane.framework/oqtane.server/Packages` abgelegt. Dort abgelegte NuGet-Pakete werden beim nächsten Start des Oqtane-Servers installiert (DB-Migrationen werden durchgeführt und die Pakete entpackt). ```
@@ -27,13 +49,13 @@ architecture-beta
## Dependency injection

Großschreibung: 'injection' -> 'Injection'.

## Dependency Injection
Großschreibung: 'injection' -> 'Injection'. ```suggestion ## Dependency Injection ```
@@ -28,3 +50,3 @@
### Dependency Inversion Principle [^1]
Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines von den 5 `SOLID` Prinzipien in der Softwareentwicklung.
Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines von den fünf `SOLID` Prinzipien in der Softwareentwicklung.

Grammatik: 'von den fünf' -> 'der fünf' (Genitiv ist stilistisch besser).

Das Dependency-Inversion-Prinzip (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines der fünf `SOLID`-Prinzipien in der Softwareentwicklung.
Grammatik: 'von den fünf' -> 'der fünf' (Genitiv ist stilistisch besser). ```suggestion Das Dependency-Inversion-Prinzip (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines der fünf `SOLID`-Prinzipien in der Softwareentwicklung. ```
@@ -30,3 +52,3 @@
Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines von den 5 `SOLID` Prinzipien in der Softwareentwicklung.
Das Dependency-Inversion-Principle (DIP / auf Deutsch: Abhängigkeits-Umkehr-Prinzip) ist eines von den fünf `SOLID` Prinzipien in der Softwareentwicklung.
Das DIP unterscheidet zwischen high-level und low-level Modulen.

Großschreibung: Im Deutschen werden Adjektive in Titeln/Eigennamen wie 'High-Level' großgeschrieben.

Das DIP unterscheidet zwischen High-Level- und Low-Level-Modulen.
Großschreibung: Im Deutschen werden Adjektive in Titeln/Eigennamen wie 'High-Level' großgeschrieben. ```suggestion Das DIP unterscheidet zwischen High-Level- und Low-Level-Modulen. ```
@@ -32,3 +54,2 @@
Das DIP unterscheidet zwischen high-level und low-level Modulen.
- Die high-level Module beschreiben die Applikations- / Buisnesslogik, ohne direkt mit den low-level Modulen zu interagieren, sondern lediglich auf abstraktionen. [^3]
- Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die low-level Implementierung sollen gemäß der Abstraktionsschickt implemetiert werden. [^3]
- Die High-Level-Module beschreiben die Applikations- / Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren, sondern lediglich auf Abstraktionen. [^3]

Grammatik/Stil: 'interagieren auf Abstraktionen' ist falsch. Korrekt: 'basieren auf Abstraktionen' oder 'interagieren mit Abstraktionen'.

- Die High-Level-Module beschreiben die Applikations-/Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren; sie basieren lediglich auf Abstraktionen. [^3]
Grammatik/Stil: 'interagieren auf Abstraktionen' ist falsch. Korrekt: 'basieren auf Abstraktionen' oder 'interagieren mit Abstraktionen'. ```suggestion - Die High-Level-Module beschreiben die Applikations-/Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren; sie basieren lediglich auf Abstraktionen. [^3] ```
@@ -33,2 +55,2 @@
- Die high-level Module beschreiben die Applikations- / Buisnesslogik, ohne direkt mit den low-level Modulen zu interagieren, sondern lediglich auf abstraktionen. [^3]
- Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die low-level Implementierung sollen gemäß der Abstraktionsschickt implemetiert werden. [^3]
- Die High-Level-Module beschreiben die Applikations- / Businesslogik, ohne direkt mit den Low-Level-Modulen zu interagieren, sondern lediglich auf Abstraktionen. [^3]
- Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die Low-Level-Implementierung sollen gemäß der Abstraktionsschicht implementiert werden. [^3]

Numerus: 'Implementierung' (Singular) passt nicht zu 'implementiert werden' (Plural).

- Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die Low-Level-Implementierungen sollen gemäß der Abstraktionsschicht umgesetzt werden. [^3]
Numerus: 'Implementierung' (Singular) passt nicht zu 'implementiert werden' (Plural). ```suggestion - Die Abstraktionen sollen nicht von Implementierungsdetails abhängig sein, sondern die Low-Level-Implementierungen sollen gemäß der Abstraktionsschicht umgesetzt werden. [^3] ```
@@ -45,7 +67,7 @@ architecture-beta
b:R --> L:c
```
Bei diesem Beispiel ist die Klasse A ein high-level Modul, welches direkt auf die Klasse B referenziert, was das DI-Prinzip verbietet.

Grammatik: 'auf die Klasse B referenziert' -> 'die Klasse B referenziert' oder 'auf die Klasse B verweist'.

Bei diesem Beispiel ist die Klasse A ein High-Level-Modul, welches direkt die Klasse B referenziert, was das DI-Prinzip verbietet.
Grammatik: 'auf die Klasse B referenziert' -> 'die Klasse B referenziert' oder 'auf die Klasse B verweist'. ```suggestion Bei diesem Beispiel ist die Klasse A ein High-Level-Modul, welches direkt die Klasse B referenziert, was das DI-Prinzip verbietet. ```
@@ -61,3 +83,3 @@
ic:R <-- L:c
```
Das high-level Modul ruft lediglich eine Abstraktion eines low-level Moduls auf, welche von einem, oder mehreren low-level Modulen implementiert worden ist. Für das high-level Modul ist es hier egal, welches low-level Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar, testbar. Genau diese Modularität macht dependency injection möglich.
Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem, oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich.

Interpunktion: Kein Komma vor 'oder'. Stil: 'einen viel modulareren' -> 'einen wesentlich modulareren'.

Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen wesentlich modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich.
Interpunktion: Kein Komma vor 'oder'. Stil: 'einen viel modulareren' -> 'einen wesentlich modulareren'. ```suggestion Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen wesentlich modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich. ```
@@ -64,3 +86,3 @@
### Microsoft Dependency Injection Framework
Dependency Injektion ist in .Net genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]
Dependency Injektion ist in .NET genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]

Rechtschreibung: 'Injektion' vs. 'Injection' (Vereinheitlichung). 'genau so' -> 'genauso'.

Dependency Injection ist in .NET genauso wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]
Rechtschreibung: 'Injektion' vs. 'Injection' (Vereinheitlichung). 'genau so' -> 'genauso'. ```suggestion Dependency Injection ist in .NET genauso wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4] ```
@@ -69,2 +90,3 @@
Alle Dependencies werden in einem `Service-Container` zur Verwaltung registriert. .NET hat einen eingebauten `Service-Container` (eine Implementierung des `IServiceProvider`). [^4]
Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden instanzen erstellt, oder wieder entsorgt (sofern das Service nicht mehr gebraucht wird). Beim instanzieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt, bzw. selbst instanziert und dannach bereitgestellt. [^4]
Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden Instanzen erstellt, oder wieder entsorgt (sofern das Service nicht mehr gebraucht wird). Beim Instanziieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt, bzw. selbst instanziiert und dannach bereitgestellt. [^4]

Rechtschreibung: 'dannach' -> 'danach'. Genus: 'der Service' ist im IT-Kontext üblicher als 'das Service'.

Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden Instanzen erstellt oder wieder entsorgt (sofern der Service nicht mehr gebraucht wird). Beim Instanziieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt bzw. selbst instanziiert und danach bereitgestellt. [^4]
Rechtschreibung: 'dannach' -> 'danach'. Genus: 'der Service' ist im IT-Kontext üblicher als 'das Service'. ```suggestion Das Dependency Injection Framework verwaltet alle Instanzen. Nach Bedarf werden Instanzen erstellt oder wieder entsorgt (sofern der Service nicht mehr gebraucht wird). Beim Instanziieren einer Klasse werden alle im Konstruktor erwarteten Dependencies bereitgestellt bzw. selbst instanziiert und danach bereitgestellt. [^4] ```
@@ -106,3 +128,3 @@
}
```
Das ist ein simples Beispiel, welches Teile des DI Frameworks zeigt. Wir haben einen Service (Klasse Worker), ein Dependency (Klasse MessageWriter) und eine Abstraktionsebene, von dem Dependency (Interface IMessage Writer).
Das ist ein simples Beispiel, welches Teile des DI Frameworks zeigt. Wir haben einen Service (Klasse Worker), ein Dependency (Klasse MessageWriter) und eine Abstraktionsebene, von dem Dependency (Interface IMessageWriter).

Genus: 'Dependency' wird im Deutschen meist feminin gebraucht ('eine').

Das ist ein simples Beispiel, welches Teile des DI-Frameworks zeigt. Wir haben einen Service (Klasse Worker), eine Dependency (Klasse MessageWriter) und eine Abstraktionsebene dieser Dependency (Interface IMessageWriter).
Genus: 'Dependency' wird im Deutschen meist feminin gebraucht ('eine'). ```suggestion Das ist ein simples Beispiel, welches Teile des DI-Frameworks zeigt. Wir haben einen Service (Klasse Worker), eine Dependency (Klasse MessageWriter) und eine Abstraktionsebene dieser Dependency (Interface IMessageWriter). ```
@@ -109,2 +130,3 @@
Das ist ein simples Beispiel, welches Teile des DI Frameworks zeigt. Wir haben einen Service (Klasse Worker), ein Dependency (Klasse MessageWriter) und eine Abstraktionsebene, von dem Dependency (Interface IMessageWriter).
Bei Programstart wird zuerst manuell der `Service Container` erstellt, dannach alle Module registriert (entweder als HostedService, oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)).
Bei Programmstart wird zuerst manuell der `Service-Container` erstellt, dannach alle Module registriert (entweder als HostedService, oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)).

Rechtschreibung: 'dannach' -> 'danach'.

Bei Programmstart wird zuerst manuell der `Service-Container` erstellt, danach werden alle Module registriert (entweder als HostedService oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)).
Rechtschreibung: 'dannach' -> 'danach'. ```suggestion Bei Programmstart wird zuerst manuell der `Service-Container` erstellt, danach werden alle Module registriert (entweder als HostedService oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)). ```
@@ -111,2 +132,3 @@
Bei Programmstart wird zuerst manuell der `Service-Container` erstellt, dannach alle Module registriert (entweder als HostedService, oder als Modul mit einer spezifischen Lifetime (Scoped, Transient, Singleton)).
Mit dem Aufruf von `builder.Build()` wird intern ein Dependency Graph erstellt und mit `host.Run()` wird versucht die Klasse Worker zu instanzieren und zu starten. Nachdem Worker ein Dependency auf IMessageWriter hat wird über den zuvor erstelltem Dependency Graph die implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden.
Mit dem Aufruf von `builder.Build()` wird intern ein Dependency Graph erstellt und mit `host.Run()` wird versucht die Klasse Worker zu instanziieren und zu starten. Nachdem Worker ein Dependency auf IMessageWriter hat, wird über den zuvor erstellten Dependency-Graph die Implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziiert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden.

Grammatik/Genus: 'ein Dependency' -> 'eine Dependency'.

Mit dem Aufruf von `builder.Build()` wird intern ein Dependency-Graph erstellt und mit `host.Run()` wird versucht, die Klasse Worker zu instanziieren und zu starten. Nachdem Worker eine Dependency auf IMessageWriter hat, wird über den zuvor erstellten Dependency-Graph die Implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziiert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden.
Grammatik/Genus: 'ein Dependency' -> 'eine Dependency'. ```suggestion Mit dem Aufruf von `builder.Build()` wird intern ein Dependency-Graph erstellt und mit `host.Run()` wird versucht, die Klasse Worker zu instanziieren und zu starten. Nachdem Worker eine Dependency auf IMessageWriter hat, wird über den zuvor erstellten Dependency-Graph die Implementierung von IMessageWriter gesucht. Jetzt wird MessageWriter instanziiert und dem Konstruktor von Worker übergeben, damit seine Dependencies befriedigt werden. ```

🤖 Word Count Report

Word count for Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md

Word count: 900

### 🤖 Word Count Report #### Word count for `Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md` Word count: 900
Kocoder merged commit a6aad1478f into main 2026-03-02 11:33:12 +00:00
Kocoder deleted branch oqtane-general-description 2026-03-02 11:33:12 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Diplomarbeit-Absolventenverein/pm#62