Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Mini-Umfrage: Wer von euch benutzt Transactions auf Windows? (https://www.delphipraxis.net/198485-mini-umfrage-wer-von-euch-benutzt-transactions-auf-windows.html)

Assarbad 6. Nov 2018 21:39

Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Mit Windows Vista wurden Transactions für verschiedene Dateisystemoperationen eingeführt. Wer von euch benutzt die aktiv in Programmen die von anderen Leuten als euch selbst benutzt werden? Beispiel MSDN-Library durchsuchenDeleteFileTransacted ...

Das Lustige ist ja, daß Microsoft die seit Windows 8 oder so schon wieder als "Deprecated" führt.

EWeiss 6. Nov 2018 21:51

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Zitat:

Das Lustige ist ja, daß Microsoft die seit Windows 8 oder so schon wieder als "Deprecated" führt.
Dann macht es keinen sinn weiterhin darüber nachzudenken, geschweige denn zu diskutieren.

gruss

Assarbad 6. Nov 2018 23:07

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Zitat:

Zitat von EWeiss (Beitrag 1417545)
Zitat:

Das Lustige ist ja, daß Microsoft die seit Windows 8 oder so schon wieder als "Deprecated" führt.
Dann macht es keinen sinn weiterhin darüber nachzudenken, geschweige denn zu diskutieren.

Doch, denn ein angeblicher Grund für die schnelle Abschaffung ist, daß es zu selten benutzt wurde. Daher diese Mini-Umfrage. Wenn du kein Interesse daran hast, brauchst du dich ja nicht beteiligen :zwinker:

jaenicke 7. Nov 2018 05:37

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Wir benutzen eine der genannten Alternativen, nämlich simples Ersetzen der Dateien. Sprich wir schreiben in eine temporäre Datei und benennen diese dann am Ende in den richtigen Dateinamen um. Ich sehe auch sonst in dafür in Frage kommenden Projekten niemanden, der dafür diese Transaktionen benutzt.

hoika 7. Nov 2018 06:42

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Hallo,
zusätzlich sollte man eine leere Datei mit dem richtigen Dateinamen erzeugen und exclusiv öffnen,
um zu verhindern, dass jemand während der Dateiarbeit den Dateinamen "kapert".
So macht es u.a. Firefox beim Download.

jobo 7. Nov 2018 06:45

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Ich nutze es nicht, ich kenne niemand, der es tut, aber:
bei dem Begriff "Transaction" zuckt es ja bei mir. Für mich ist das jedoch ein Datenbankbegriff. Darf man sich das unter Windows funktional ebenso vorstellen? Scheinbar nicht ganz, die API Doku aus dem Link scheint mir jedenfalls schon inkonstitente Zustände zu beschreiben:
The file is deleted after the last transacted writer handle to the file is closed, provided that the transaction is still active. If a file has been marked for deletion and a transacted writer handle is still open after the transaction completes, the file will not be deleted.
Vielleicht ist es auch noch zu früh für mich, aber der Grund der Abschaffung könnte ja auch ein Designproblem/ Fehlkonstruktion sein.

Whookie 7. Nov 2018 06:55

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Ich benutze die auch nicht und mache das so wie jaenicke.

Der schöne Günther 7. Nov 2018 08:03

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Als ich es fand war ich auch interessiert, aber schon vor Jahren war klar: Nein.

Schon vor vier Jahren sagte bereits ein schlauer Mann:
Zitat:

Zitat von himitsu (Beitrag 1279799)
ich ab nur noch nie gesehn, daß das wirklich jemand mal benutzt hätte

Ich denke die sind allerdings nicht erst seit Windows 8 deprecated. Und dass Microsoft etwas strongly recommended sehe ich auch nicht oft. Bei der Geschwindigkeit wie sich Windows in den letzten Jahren ändert würde ich mich auch nie im Leben darauf verlassen dass so etwas noch lange verfügbar bleibt.

Assarbad 7. Nov 2018 14:08

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Zitat:

Zitat von jaenicke (Beitrag 1417551)
Wir benutzen eine der genannten Alternativen, nämlich simples Ersetzen der Dateien. Sprich wir schreiben in eine temporäre Datei und benennen diese dann am Ende in den richtigen Dateinamen um. Ich sehe auch sonst in dafür in Frage kommenden Projekten niemanden, der dafür diese Transaktionen benutzt.

Nun wäre die Frage wie ihr die Dateien umbenennt. MSDN-Library durchsuchenMoveFileEx / MSDN-Library durchsuchenMoveFile wäre zwar scheinbar richtig, aber nur scheinbar. Denn wenn das fehlschlägt, wird intern ne Kopie versucht. Und schwupp ist deine vermeintlich atomare Aktion nicht mehr atomar. Das hier ist die einzige Methode wenn man sich an die Win32-API hält, wie man hier atomares Verhalten erreicht. Einzige Alternative dazu ist der Rückgriff auf die NT Native API an deren Verfügbarkeit für Delphianer ich selbst vor vielen Jahren gearbeitet habe.

ReactOS versucht das Verhalten von Windows bestmöglich nachzuempfinden und hier findest du die Implementierung von MoveFileExW ohne daß du WinDbg oder nen Disassembler bemühen müßtest. Speziell geht es um diese Zeile.

Das einzige Delphi was ich noch installiert habe ist in einer abgewrackten alten XP VM und das ist ein Delphi 7. Jetzt weeß ick natürlich nich ob sich das geändert hat, aber mit Delphi-Referenz durchsuchenRenameFile in SysUtils.pas aus Delphi-7-Zeiten benutzt du auch MoveFile. Haste also auch den Hut auf ...

Zitat:

Zitat von jobo (Beitrag 1417555)
Ich nutze es nicht, ich kenne niemand, der es tut, aber:
bei dem Begriff "Transaction" zuckt es ja bei mir. Für mich ist das jedoch ein Datenbankbegriff. Darf man sich das unter Windows funktional ebenso vorstellen? Scheinbar nicht ganz, die API Doku aus dem Link scheint mir jedenfalls schon inkonstitente Zustände zu beschreiben:
The file is deleted after the last transacted writer handle to the file is closed, provided that the transaction is still active. If a file has been marked for deletion and a transacted writer handle is still open after the transaction completes, the file will not be deleted.

Hmm, erstens: was anderes ist ein Dateisystem als eine Datenbank? Es ist eine domänenspezifische Datenbank, aber es ist eine Datenbank. Und bei der Registry (TxR) wärst du damit vielleicht auch ohne diese Erklärung damit d'accord gegangen. TxR scheint übrigens im Gegensatz zu den Dateisystemfunktionen nach wie vor ein Ding zu sein.

Zweitens: mir scheint du mißverstehst wie das normale MSDN-Library durchsuchenDeleteFile funktioniert. DeleteFile löscht nicht etwa, wie der Name es suggeriert, die Datei. Stattdessen setzt diese Funktion - übrigens mit der gleichen Methode die ich oben schon erwähnte (SetFileInformationByHandle) - ein Flag. Wenn die Funktion zum Aufrufer zurückkehrt muß die Datei noch lange nicht gelöscht sein (in NTFS kann das durchaus mal ein paar Sekunden dauern, wenn das System gerade "zu tun" hat). Wer mehr wissen will, schaut sich das hier an. Unter der Haube werkelt da NtSetInformationFile, welches Treiberentwicklern ein Begriff sein dürfte. SetFileInformationByHandle ist meines Wissens für die unterstützten Klassen eine 1:1-Abbildung der darunterliegenden NT Native API.

Kurzum DeleteFile ist ebensowenig atomar wie MoveFileEx. Hammer, oder? ;)

Und "schlimmer" noch, bei näherer Betrachtung ist die vermeintliche Inkonsistenz nicht so inkonsistent wie du meinst. Transaktionen geben ja Garantien. Wenn nun also eine Datei, bspw. durch einen anderen Prozeß, zum Löschen vorgemerkt wird, dann

(Ach ja, intern benutzt MoveFile MoveFileEx, also falls hier jemand mitliest und MoveFile benutzt und sich in Sicherheit wog, dem kann ich diesen Zahn umgehend ziehen :zwinker: ... siehe oben)

Zitat:

Zitat von jobo (Beitrag 1417555)
Vielleicht ist es auch noch zu früh für mich, aber der Grund der Abschaffung könnte ja auch ein Designproblem/ Fehlkonstruktion sein.

Jain. Aber ReFS unterstützt keine Transaktionen, somit sind sie allein auf NTFS beschränkt. Wenn man das als Fehlkonstruktion von ReFS sehen will, dann wäre das halt eine mögliche Sichtweise.

Zitat:

Zitat von Der schöne Günther (Beitrag 1417565)
Ich denke die sind allerdings nicht erst seit Windows 8 deprecated.

Quellen? Da es mit Windows Vista eingeführt wurde, bliebe dazwischen ja nur Windows 7.

Zitat:

Zitat von Der schöne Günther (Beitrag 1417565)
Und dass Microsoft etwas strongly recommended sehe ich auch nicht oft.

Dann mußt du mehr Doku lesen :zwinker:

Zitat:

Zitat von Der schöne Günther (Beitrag 1417565)
Bei der Geschwindigkeit wie sich Windows in den letzten Jahren ändert würde ich mich auch nie im Leben darauf verlassen dass so etwas noch lange verfügbar bleibt.

Das ist nun auch wieder wahr, jupp.

Okay, also bisher keiner der es benutzt. Alles klar. Danke für die Rückmeldungen! :thumb:

API 7. Nov 2018 19:55

AW: Mini-Umfrage: Wer von euch benutzt Transactions auf Windows?
 
Ich würde gerne wissen, wozu diese Umfrage dient? Danke für eine kurze Info.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz