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.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro