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:
|