myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Alten Algorithmus für DeflateStream nutzen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Alten Algorithmus für DeflateStream nutzen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
T-Man
myCSharp.de-Mitglied

Dabei seit: 01.03.2006
Beiträge: 210
Entwicklungsumgebung: VS 2017
Herkunft: Bremen


T-Man ist offline

Alten Algorithmus für DeflateStream nutzen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Der Algorithmus, den der DeflateStream verwendet hat sich geändert. Vermutlich mit Framework 4.7.2, genau weiß ich es nicht. Meine Anwendung ist für 4.6.1 gebaut, trotzdem hat sich das Verhalten geändert.
Mein Problem: Ich speichere Daten komprimiert und nicht doppelt. Die Id für einen Stream habe ich aus dem Hash des komprimierten Streams gebildet. Damit kann ich nach Duplikaten suchen. Solange der Algorithmus sich nicht geändert hat, hat das funktioniert.
Jetzt nicht mehr. Wird jetzt ein Dokument komprimiert, dass ich früher schonmal hatte, sieht der komprimierte Stream anders aus und hat einen anderen hash. Ich finde also das Duplikat nicht mehr.

Die saubere Lösung für mich wäre, den Hash des Originals zu verwenden. Nun habe ich aber schon Millionen alte Datensätze, für die ein Update nicht mal eben schnell gemacht ist.

Daher würde ich gerne als Zwischenlösung auf den alten Algorithmus zurückgreifen.

Weiß jemand, ob und wie das geht?

Ich habe folgenden Schalter gefunden, der leider nicht hilft:

XML-Code:
<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />

DoNotUseNativeZipLibraryForCompression gibt's leider nicht.
24.09.2019 14:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.580
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Siehe  Decompression changes in DeflateStream

Zitat:
Support for decompression by using Windows APIs is enabled by default for applications that target .NET Framework 4.7.2. Applications that target earlier versions of .NET Framework but are running under .NET Framework 4.7.2 can opt into this behavior by adding the following AppContext switch to the application configuration file:

XML-Code:
<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />

Würde mich wundern, wenn es das wirklich nicht geben würde. Wäre ein Bug, der sicherlich jemanden vorher aufgefallen wäre.
Sicher, dass das Setting zieht?
24.09.2019 14:48 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Man
myCSharp.de-Mitglied

Dabei seit: 01.03.2006
Beiträge: 210
Entwicklungsumgebung: VS 2017
Herkunft: Bremen

Themenstarter Thema begonnen von T-Man

T-Man ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wie schon gesagt, hilft das nicht.
Der Schalter ist scheinbar für's dekomprimieren, nicht für's komprimieren.
24.09.2019 14:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Man
myCSharp.de-Mitglied

Dabei seit: 01.03.2006
Beiträge: 210
Entwicklungsumgebung: VS 2017
Herkunft: Bremen

Themenstarter Thema begonnen von T-Man

T-Man ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sowohl true als auch false liefern das selbe Ergebnis und das ist ein anderes, als vor einiger Zeit.
Kann leider nicht genau sagen, seit wann.
24.09.2019 14:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.580
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ah; sorum geht der Hase.
Wenn Du auf den alten Kompressionsalgorithmus keinen Zugriff mehr hast / haben kannst; dann musst im Zweifel Deinen Datenbestand migrieren.

Da .NET Framework 4.7.2 allgemein große Breaking Changes beim Thema Crypo hat, wirst Du da evtl. langfristig nicht drum herum kommen.
Wir speichern bei solchen Hashes auch immer den Identifier des Algorithmus ab; so kann man das bei den meisten Anwendungen zur Laufzeit migrieren (zB. User Passwords stehts mit dem neuesten, sichersten Algorithmus speichern).
24.09.2019 14:54 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Man
myCSharp.de-Mitglied

Dabei seit: 01.03.2006
Beiträge: 210
Entwicklungsumgebung: VS 2017
Herkunft: Bremen

Themenstarter Thema begonnen von T-Man

T-Man ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das ich migrieren muss ist mir klar.
Werde ich tun.
Ich hatte nur gehofft, einen sehr schnelle fix zu finden, denn die Migration wird ein wenig dauern und bis dahin funktioniert die Duplikatserkennung nicht mehr richtig. Das Produkt ist komplex und wir releasen nicht alle paar Tage. Einen Hotfix könnte ich schnell nachschieben, die Migration nicht.
24.09.2019 15:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.580
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bist Du gezwungen, auf .NET Framework 4.7.2 zu gehen?
Wenn nicht kannst Du ja problemlos eine Soft Migration durchführen:
- Weiterhin auf die alten Hashes gehen
- Neue Hashes generieren
- Wenn alle Hashes durch sind, dann auf 4.7.2 gehen
24.09.2019 16:17 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Man
myCSharp.de-Mitglied

Dabei seit: 01.03.2006
Beiträge: 210
Entwicklungsumgebung: VS 2017
Herkunft: Bremen

Themenstarter Thema begonnen von T-Man

T-Man ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das Produkt haben viele Kunden auf eigenen Servern. Das Kind ist schon in den Brunnen gefallen. :-(
Kann denen nicht sagen, sie sollen Windows- oder Frameworkupdates zurücknehmen. Das Problem ist gestern aufgefallen. Wie lange es schon da ist, also was genau der Auslöser ist, kann ich nicht nachvollziehen. Ich vermute, dass es Framework 4.7.2 ist, muss aber nicht sein. Ich weiß nur, dass jetzt das compress andere Ergebnisse liefert, als vor einiger Zeit. Könnte den Zeitpunkt zwar theoretisch eingrenzen, aber das ist leider auch nicht trivial. Da arbeite ich lieber weiter an der richtigen Lösung.

Hatte halt die Hoffnung, dass es da einen einfachen Schalter gibt.
24.09.2019 16:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.580
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

In den Changelogs von 4.7.2 wird ja auf die Breaking Changes der Compression hingewiesen.
Wird also schon die Ursache sein.
24.09.2019 17:00 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 01.04.2020 18:43