IPRO - PC Magazine Romania, Mai 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB Servicii Web realizate cu ASP.NET
Accesul la fișiere
Mircea Scărlătescu
Orice aplicație de dimensiuni medii sau mari nu poate fi concepută fără
a se lua în calcul accesul la fișiere. Aplicațiile Web moderne nu fac rabat
de la această regulă, devenind necesare clase și metode de management al
fișierelor din directorul aplicației și nu numai. Devine evidentă această
necesitate dacă luăm exemplul aplicațiilor Web care permit accesul remote
(de la distanță) la un calculator. De oriunde din lume, cu o parolă și un
nume_utilizator puteți să accesați resursele PC-ului dvs. și să efectuați
operații asupra fișierelor. Fără a intra în detalii, trebuie să punem în
evidență faptul că la o astfel de aplicație, și în general la lucrul cu fișiere
via Web, componenta securității devine determinantă în cadrul proiectării.
Trebuie ca un utilizator să nu aibă drepturi asupra fișierelor care ar putea
afecta aplicația, sau și mai rău sistemul care o găzduiește.
ASP.NET folosește o serie de clase care aparțin platformei .NET și care permit
accesul la fișierele serverului Web (în funcție de drepturile de acces, bineînțeles)
la nivelul la care permit și aplicațiile desktop. Vom considera în continuare
un exemplu pentru a observa mecanismul lucrului cu fișiere.
.NET folosește clase distincte pentru lucrul cu fișiere binare și text.
Acest fapt implică o fiabilitate sporită a aplicațiilor, dar și o modalitate
mai
ușoară de lucru pentru programatori. Spațiul de nume care este necesar
a fi importat în aplicația noastră pentru a utiliza funcțiile specifice este
System.IO. Precizăm că ne vom ocupa aici de fișiere de tip text, pentru
ca
studiul lucrului cu fișiere binare să rămână în sarcina cititorului. Există
numeroase documentații, începând cu MSDN dar și www.asp.net, site-ul oficial
al limbajului ASP.NET.
O primă clasă pe care o amintim aici este FileStream, clasă care este în
esență o legătură între locația fizică a fișierului pe hard și aplicația
pe care o vom realiza. Ea include metode de prelucrare a fișierelor,
precum operații de ștergere, mutare, redenumire, etc. Principalele clase
care
lucrează cu fișiere de tip text sunt StreamReader și StreamWriter. O
clasă foarte
importantă este File, care permite apelul unor metode care pot fi apelate
fără a se realiza mai întâi o instanță a clasei. Un exemplu edificator
pentru folosirea clasei File este următorul:
Imports System.IO
Dim existFisier as Boolean
existFisier=File.Exists("C:\PC Magazine\Mai\Articol.txt");
E ușor de intuit că această secvență de cod stabilește dacă fișierul C:\PCMagazine\
Mai\Articol.txt există pe calculatorul gazdă. Clasa File conține multe metode
pe care vă invităm să le descoperiți singuri în cadrul documentației, aici
vom mai aminti funcții ca: AppendText, Copy, Delete, Move, SetAtributes etc.
Să trecem acum la prezentarea aplicației-model pe care o vom realiza. Să
presupunem că dorim să realizăm un serviciu Web care să conțină două metode:
una care să primească ca parametru un șir de caractere (string), să verifice
dacă un fișier cu acea denumire se găsește în directorul aplicației și
să întoarcă un string cu date despre acel fișier. Un astfel de serviciu Web
ar fi foarte folositor în exemplul de administrare a unui calculator remote
prezentat mai sus. Al doilea serviciu, primește la fel ca mai înainte un
șir de caractere și analizează dacă acest șir denumește un director și,
dacă
da, întoarce o listă cu datele despre fișierele din acest director.
Prima metodă se va ocupa deci de căutarea unui fișier. În primul rând,
se vor lua măsurile pentru a impiedica utilizarea greșită a metodei,
și anume
se va analiza parametrul în care este transmis numele. Dacă nu se transmite
un nume (șir de lungime 0) sau dacă fișierul cu numele specificat nu
există, se vor "arunca" excepții ce sunt "prinse" conform mecanismului de tratare
a erorilor .NET
Dacă numele transmis în parametru (adică valoarea lui) există ca fișier
pe sever, atunci se returnează răspunsul cerut de serviciul web. Analog,
căutarea
unui director se realizează prin analizarea parametrului și, dacă acesta
este corect, atunci se trimit ca răspuns datele cerute.
Sursa completă a serviciului Web este prezentă pe CD-ul PC Magazine.
Cele două metode întorc ca rezultat un șir de caractere. În programul
complet sunt de remarcat și cele 3 clase din finalul codului sursă:
acestea reprezintă
ierarhia de clase excepție (derivate din clasa Exception) care sunt
necesare pentru buna funcționare a aplicației. Despre cum funcționează
sistemul
de generare și "prindere" a excepțiilor ați putut citi în numărul
trecut al
revistei, deci
vă recomandăm acel material, dar și documentații de specialitate.
Codul este ușor de urmărit și de înțeles, odată ce sunt cunoscute metodele
utilizate
mai sus. Această aplicație se poate considera ca un punct de plecare
pentru studiul
funcțiilor de lucru cu fișiere în ASP.NET.
În articolul următor vom trece la un aspect deosebit de important
în cadrul realizării aplicațiilor în ASP.NET: formulare Web, o
componentă de bază
a oricărei aplicații profesionale.
Try
If name = "" Then
Dim noStringE As New NoStringException("Nu ati introdus un parametru valid")
Throw noStringE
Else
Directory.SetCurrentDirectory("C:\Inetpub\wwwroot\PCMagazineMai")
Dim checkExistFile As Boolean
checkExistFile = File.Exists(name)
If checkExistFile = False Then
Dim noFileE As New FileNotFoundException("Fisierul specificat nu exista!")
Throw noFileE
Else
Dim fInfo As New FileAttributes()
fInfo = File.GetAttributes(name)
Return "Fisierul a fost gasit! Atribute: " + fInfo.ToString
End If
End If
Catch e As NoStringException
Return (e.Message)
Catch e As FileNotFoundException
Return (e.Message)
End Try
End Function
Link-uri utile:
|