chap 5: Umsetzung — 11 Abschnitte + module-components/zip-stream/race-condition diagrams
This commit is contained in:
@@ -1,15 +1,21 @@
|
||||
sequenceDiagram
|
||||
participant B as Browser
|
||||
participant P as PageModel
|
||||
autonumber
|
||||
actor U as Benutzer
|
||||
participant P as Download-PageModel
|
||||
participant S as DocumentsService
|
||||
participant Z as ZipArchive
|
||||
participant S3 as S3-Speicher
|
||||
|
||||
B->>P: POST /documents?handler=Zip&keys=[...]
|
||||
P->>S: GetZipStreamAsync(orgId, keys)
|
||||
loop je Dokument
|
||||
S->>S3: GetObjectAsync(key)
|
||||
S3-->>S: Stream
|
||||
S->>S: ZipArchive.CreateEntry + CopyToAsync
|
||||
U->>P: Auswahl + Klick auf<br/>"Als ZIP herunterladen"
|
||||
P->>S: Schluessel gegen Kundenpraefix pruefen
|
||||
S-->>P: validierte Schluessel
|
||||
P->>U: Antwort-Header:<br/>application/zip
|
||||
loop je ausgewaehltes Dokument
|
||||
S->>S3: GetObject(key)
|
||||
S3-->>S: Inhalts-Stream
|
||||
S->>Z: Eintrag mit relativem Pfad anlegen
|
||||
Z->>U: komprimierte Bytes<br/>direkt in die Antwort
|
||||
end
|
||||
S-->>P: ZipStream
|
||||
P-->>B: application/zip (streaming)
|
||||
Z->>U: Archiv abschliessen
|
||||
|
||||
Note over Z,U: Kein Zwischenspeichern im<br/>Arbeitsspeicher oder auf Platte
|
||||
|
||||
Reference in New Issue
Block a user