Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuţii   




Cartea de oaspeţi   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


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:


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

webmaster@pcmagazine.ro

LG - Life´s Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro