Diskuze: Zabezpečení cloudového souboru proti zápisu z jiné instance
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Semafor, mutex, fronta zpráv, sdílená paměť ... Záleží, jestli je ten cloudy jen jako file server a nebo s tím souborem komunikuješ skrz něco.
EDIT: V případě toho druhého by ti neměl OS dát 2 handly pro jeden file, ale netuším, jestli to takhle platí, i když je to vzdáleně a ten proces neběží v tom OS
Ten tvůj nápad bych rozšířil o kontrolu data toho souboru - ten druhý soubor, který indikuje by jsi měnil třeba každých 30s, takže pokud by uživatel aplikaci zavřel násilně, datum souboru by se přestalo updatovat.
Ty by jsi tedy jen kontroloval, jestli ten druhej soubor (indikující, že je ten soubor otevřený) buďto neexistuje nebo je starší než třeba minutu.
Ty různé počítače spolu nemají šanci komunikovat, jediné, co sdílejí je adresář s tím souborem, který updatuje cloudová aplikace, která funguje jako všechno ostatní- Dropbox, Google Drive, OneDrive...
Mno, ja bych ten "hlidaci" soubor povysil na XML, kde bys ukladal nazev
otevreneho souboru, datum a cas otevreni a datum zavreni souboru. Pri otevreni
souboru by se aktualizovala hodnota casu a data otevreni a hodnota zavreni by
byla null. Jestlize by user tvuj softik vypl nasilim, jak tento stav rozeznas od
toho, kdy ten soubor bude mit otevreny hodiny, nebo dny v kuse? Pak pri pokusu k
otevreni souboru, jez ma datum otevreni a zaroven zavreni ==null, vytvoris jeho
kopii... Takto to ma treba OneDrive. Tak nebo tak by na tento stav mel nejdrive
tvuj soft upozornit a ty bys mel kontaktovat usera na druhe strane, pripadne
schvalit vytvoreni kopie... A bylo by to pouzitelne i na vice souboru v jednom
adresari
Pak do toho XML jeste muzes zakomponovat nejaky atribut "ziju" vcetne data a
casu zapisu "ziju". Toto datove razitko aktualizovat kazdou minuti. Jestlize pak
aktualni cas je vetsi o 1 a vice minut, nez cas v razitku "ziju", softik nekdo
vypnul
Takže už to mám zprovozněné. Funguje to tak, jak je naznačeno výše, jen LOCK soubor přímo v adresáři se ukázal býti nevhodným, tak jsem si na freehostingu udělal primitivní API. Víceméně zprostředkovává zápis k tomu souboru. Takže každých 30 s se pošle request na ten server s tím, že je to pořád aktivní. Samozřejmě je tam víc souborů, takže každému server na začátku přiřadí jedinečné Id, které se uchovává v souboru v adresáři vedle kýženého souboru.
Zobrazeno 8 zpráv z 8.