Scenariu (Romanian)

Un scenariu obişnuit pentru un programator obişnuit
 
Aveţi sau este necesar să realizaţi o bază de date. Trebuie să dezvoltaţi o aplicaţie client care să folosească aceste date. Eventual aplicaţia ar trebui să acceseze datele printr-un XML Web Service, de la distanţă.
 
Deja vă gândiţi la multe proceduri stocate şi multe comenzi SQL, poate la folosirea unui SQL Helper… destul de mult de muncă…
 
Din experienţă ştiţi bineînţeles că ADO .NET şi NET Framework oferă suport pentru modul "deconectat" de acces la date (utilizând obiecte DataAdapter, DataSet şi eventual un XML Web Service). Desigur, ar fi deosebit de interesant dacă datele ar fi "cached" pe hard disk-ul maşinii client, pentru a obţine viteză mare la iniţializare. Iar clientul ar trebui poate să poată rula în diverse contexte de securitate (de exemplu, ca un Windows Forms User Control hosted în Internet Explorer).
 
Deja vă gândiţi la salvarea şi încărcarea (eventual utilizând serializăre/deserializare XML) a datelor în fişiere temporare pe discul local, operaţii ce trebuie efectuate cu grijă; este posibil să fie nevoie de o locaţie în "isolated storage" pentru a avea drepturi asigurate asupra fişierelor respective… mult de muncă…
 
Mai mult, ar fi bine ca modificările din baza de date să fie aduse periodic, în background (fără să influenţeze prea mult activitatea utilizatorilor), în DataSet-ul local al aplicaţiei, fără a deteriora eventualele modificări curente ale acestuia? Iar dacă s-a realizat şi data caching-ul pe hard disk-ul local această funcţie devine obligatorie (cel puţin odată, după încărcarea iniţială din cache-ul local). Şi totul trebuie să fie thread-safe, bineînţeles.
 
Deja vă gândiţi la DataAdapter.Fill() şi DataSet.Merge(dataSet), care par uşor de folosit, dar nu vor funcţiona în această formă, cu siguranţă! Trebuie sincronizări, lacăte, verificări, foarte mult cod… foarte mult de muncă…
 
Şi dacă tot există sincronizare în background dinspre baza de date înspre setul de date local, ar fi benefic ca modificările realizate de utilizatorul curent în DataSet să fie trimise înapoi spre baza de date, tot periodic (sau cel puţin odată, la final), şi de asemenea în background.
 
Deja vă gândiţi la DataAdapter.Update(changes), care pare uşor de folosit, dar nu va funcţiona în această formă, cu siguranţă! Desigur, degeaba apelăm doar DataAdapter.Update pentru fiecare tabel din DataSet, încât, atunci când există relaţii între entităţi, contează şi ordinea tabelelor la actualizare! Iar dacă relaţiile sunt circulate – şi să recunoaştem – orice bază de date cât de cât importantă conţine astfel de relaţii – contează chiar şi ordinea instanţelor entităţilor la actualizare! Dacă se ignoră ordinea, pur şi simplu crapă DataAdapter.Update. Testaţi! În plus, trebuie sincronizări, lacăte, verificări, extraordinar de mult cod… extraordinar de mult de muncă…
 
A, dar asta nu e tot. Interfaţa utilizator a aplicaţiei trebuie să fie uluitoare: grafică deosebită, layout dinamic, teme customizabile şi multe altele. Şi clientul vrea o prezentare (sau un prototip) peste 2 zile.
 
Deja vă gândiţi: Dar cum să mă concentrez la interfaţă când sunt atâtea de făcut înainte de asta! Ce prezentare vrea peste 2 zile, poate vrea să îi prezint documentaţia pe care trebuie s-o parcurg pentru a putea respecta cerinţele anterioare… Situaţie dificilă!…
 
Şi… bugetul proiectului (sau salariul dvs.) este mult mai mic decât ar trebui să fie!
 
Deja vă gândiţi: Renunţ! La proiect, la job, la ce-o fi. Mai bine mă apuc de agricultură.
 
Există o soluţie, totuşi
 

Înainte de a lua o decizie extremă, e bine să ştiţi totuşi: există un pachet software care vă poate ajuta foarte mult pentru realizarea proiectului dvs. la timp şi fără a depăşi bugetul: DlhSoft Smart Client Application Block.

 
Pachetul conţine două componente, DataManager şi WebDataManager, ce realizează în mod automat caching-ul local şi sincronizarea unui DataSet cu o sursă de date. Sursa de date poate fi specificată fie printr-o listă de obiecte DataAdapter – cazul componentei DataManager, fie printr-o referinţă XML Web Service ce suportă metode standard de acces la date (DataSet Get() şi void Update(DataSet changes)) – cazul componentei WebDataManager.
 
Model Conceptual
 
Odată ce aţi iniţializat un DataConnection, obiecte DataAdapter sau un XML Web Service capabil(e) să furnizeze date şi să aplice modificări (cel mai simplu, utilizând Visual Studio .NET), trebuie doar să instanţiaţi componenta DataManager, să stabiliţi proprietăţile acesteia şi DataSet-ul local va fi mereu populat cu datele din sursa respectivă, fără ca dvs. să trebuiască să scrieţi vreo linie de cod pentru a realiza aceasta!
 
Dvs. trebuie să vă concentraţi numai la la interfaţa utilizator, pentru care sursa de date este obiectul DataSet local!
 
Puteţi descărca DlhSoft Smart Client Application Block (beta 1) şi vizualiza documentaţie suplimentară pe situl DlhSoft.
 
Aplicaţie exemplu
 
Aplicaţia exemplu prezentată în imaginile de mai sus poate fi descărcată de pe situl DlhSoft.
 

About Sorin Dolha

My passion is software development, but I also like physics.
This entry was posted in Computere și Internet. Bookmark the permalink.

Add a reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s