Lista pecet@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [PECET] jeden plik na dwóch komputerach

To: pecet@man.lodz.pl
Subject: Re: [PECET] jeden plik na dwóch komputerach
From: miab <miwa14@wp.pl>
Date: Fri, 31 Oct 2014 14:17:55 +0100
W dniu 2014-10-31 o 13:12, Robert Winkler pisze:
W dniu 2014-10-31 o 11:22, R.e.m.e.K pisze:
Dnia Fri, 31 Oct 2014 10:11:11 +0100, Kamil napisał(a):

Obsługa bazy danych na Windows to nieporozumienie.

Accessa czy kazdej bazy?


Dotyczy jakiegokolwiek pliku do którego dostajesz się zdalnie.
Nie ważne czy odwołujesz się przez \\server\shared_folder\file.db
czy też najpierw zamapujesz \\server\shared_folder\ jako dysk u siebie
i poprzez zamapowany dysk odwołujesz się do niego.

Wszystko było dobrze w Windows 3.11 for Workgroup,
w Windows 95, 98, NT4, 2000 czy też XP.

CreateFile, ReadFile, GetWindowText to funkcje WinAPI
CreateFile, ReadFile pracują na uchwycie pliku, dla nich nie jest ważne
czy plik znajduje się lokalnie, czy zdalnie, zawsze działają tak samo.
Dopiero pod spodem, gdy jest to plik plik lokalny na dysku NTFS
zamieniane to jest na operacje NTFSa
czy jest to SCSI, system tłumaczy to na komendy SCSI,
gdy jest to plik zdalny do którego dostęp odbywa się przez WebDAV
zamieniane to jest na komendy HTTP
gdy jest to plik w sieci lokalnej zamieniane to jest na komendy SMB.
I tu jest właśnie problem, stare SMB posiadało funkcje zbliżone do tych
oferowanych przez dyski lokalne,
w SMB v2 wszystko to zostało usunięte i mamy tylko:
NEGOTIATE, SESSION_SETUP, LOGOFF, TREE_CONNECT,
TREE_DISCONNECT
CANCEL, CHANGE_NOTIFY, CLOSE, CREATE, FLUSH,
IOCTL, LOCK, QUERY_DIRECTORY, QUERY_INFO,
READ, SET_INFO, WRITE
ECHO, OPLOCK_BREAK

Nie ma już komendy SEEK, a był ona podstawową operacją
pozwalającą na poruszanie się wewnątrz pliku,
na pominięcie jego fragmentu i oczytanie tylko interesującej części.
Pracując z dyskiem lokalnym dysponujemy odpowiednikiem komendy SEEK,
dla dysków sieciowych za każdym razem gdy program używa seek
i próbuje odczytać lub zapisać kilka bajtów ze środka pliku
system musi to zasymulować przesyłając po sieci całość.
W końcu funkcja WinAPI SetFilePointer musi działać tak samo na każdym
systemie
a że w Windows 7 wymaga to przesłania po sieci całego pliku... trudno.

Klient tego nie umie czy serwer czy obydwaj (od Visty)?
Bo jak serwer to można by postawić XP SERVER albo Sambe na Linux-ie.

miab


<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>