Qualcuno ha potuto eseguire la compressione in un ambiente .NET per generare delta tra i file. Mi piacerebbe utilizzare questa funzionalità se possibile, forse utilizzando la funzionalità in msdelta.dll. Sarei anche interessato a come generare delta usando altre librerie (preferibilmente open source).Delta compressione in .NET
risposta
spero che questo non è troppo di una spina spudorato, ma ho scritto una libreria wrapper sia PatchAPI e MSDelta per i miei scopi.
La biblioteca è dual-rilasciato sotto licenza MS-PL e DBAD-PL e disponibile sul GitHub.
sto intrattenere la nozione di pubblicazione del progetto sul NuGet, ma per il momento è possibile scaricare il sorgente e sia creare e applicare delta.
Creazione di un delta deve essere auto-esplicativo:
var compression = new MsDeltaCompression(); /* or PatchApiCompression(); */
compression.CreateDelta(sourcePath, destinationPath, deltaPath);
e altrettanto auto-esplicativo (si spera) è applicare un delta:
var compression = new MsDeltaCompression(); /* or PatchApiCompression(); */
compression.ApplyDelta(deltaPath, sourcePath, destinationPath);
provata su x86, ma il P/Invoke firme dovrebbe essere ugualmente valido per x64 e ia64.
Se hai Non ho ancora deciso se si sta utilizzando PatchAPI o MSDelta, del mio progetto README.md
cerca di suggerire (brevemente) che uno si dovrebbe usare, ma per il resto the documentation for Microsoft's Delta Compression ha questo da dire circa MSDelta vs. PatchAPI:
MSDelta ... può creare molto più piccoli file compressi rispetto a quelli prodotti da altri metodi. Spedizione con Windows Vista, è la prossima generazione della tecnologia precedentemente rilasciata come PatchAPI (che continuerà ad essere supportata).
Enfasi mia.
[Il NuGet Package] (http: // NuGet.org/pacchetti/DeltaCompressionDotNet /). –
Grande biblioteca ta.speot.is. Ero curioso di sapere se ci fosse la possibilità di ampliarlo per creare file di firma, in questo modo se sto lavorando in rete non devo trasferire l'intero file sulla rete per ottenere il delta, e invece basta trasferire il file delta. – ymerej
@Jeremy Grazie. Stai chiedendo una sorta di delta patch server, dove gli mandi un hash della versione attuale del tuo file e ti rimanda una patch per aggiornarla con l'ultima? –
Fossil SCM ha un algoritmo di compressione delta implementato in C, e ho fatto una porta di esso su C# qui: https://github.com/endel/FossilDelta
Per creare il delta, è necessario fornire un byte[]
l'origine e la destinazione. Viene restituito come byte[]
, che è possibile applicare in un secondo momento.
byte[] origin = System.IO.File.ReadAllBytes ("old-file");
byte[] target = System.IO.File.ReadAllBytes ("new-file");
byte[] delta = Fossil.Delta.Create(origin, target);
Avere il delta, è possibile applicare le modifiche nel file originale come questo:
byte[] applied = Fossil.Delta.Apply(origin, delta);
penso che la pena ricordare che l'autore di questo algoritmo è lo stesso autore di SQLite - in modo che ha una certa credibilità.
- 1. Comprime una cartella utilizzando la compressione NTFS in .NET
- 2. Compressione multithread in C#
- 3. Django default = timezone.now + delta
- 4. Compressione IIS
- 5. R: Calcolo delta in un timeseries
- 6. Confronto di un delta temporale in python
- 7. Che cos'è un tempo Delta in LIBGDX
- 8. La migliore classe di compressione di .NET Framework?
- 9. BinaryFormatter applica una compressione?
- 10. Esiste un elenco conciso di delta .NET BCL da 4.0 a 4.0?
- 11. compressione componente
- 12. Delta indicizzazione - Ritardata Jobs non funziona
- 13. Iterate su Ruby Time oggetto con delta
- 14. MKCoordinateSpanMake: perché specificare longitudine e latitudine delta?
- 15. Rileva l'evento backspace e del delta "input"?
- 16. Come aggiungere delta a python datetime.time?
- 17. Thinking Sphinx - L'indicizzazione del Delta non funziona
- 18. assert_eq! con numeri in virgola mobile e delta
- 19. SVN Tortoise - Errore: Delta Source terminato in modo imprevisto
- 20. git svn: la sorgente Delta è terminata in modo imprevisto
- 21. resistenza di compressione e compressione nelle viste nidificate
- 22. non supportato TIFF Compressione
- 23. Compressione Memcache - buona/cattiva?
- 24. compressione Brotli multithreading
- 25. Compressione Zlib su MSP430
- 26. dissolvenza senza compressione
- 27. Compressione JavaScript client-dati
- 28. Compressione di archivio zip
- 29. compressione lossy PDF
- 30. Algoritmi di compressione dati
[xdelta] (http://xdelta.org/) è l'open source che ho visto usato più. Non sono sicuro di quanto sia facile chiamare da C#, comunque. – Rup
Grazie. Ho controllato il tuo link e trovato un altro collegamento (http://www.pobox.com/~skeet/csharp/miscutil), che ha c versione # decoder. Tuttavia, avrò bisogno anche di un encoder. – dubs