Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.674 pregleda

Najnovija ↓

Upotreba statičke klase u ASP.NET 27.05.2010. u 10:06 · pre 200 meseci #1
Interesuje me da li je dobro koristiti statičku klasu za pristup bazi podataka (koje su prednosti i mane). U svojoj veb aplikaciji koristim sledeću klasu za rad sa bazom.

Code (csharp):
public static class Baza
{
    public static OleDbCommand KreirajKomandu(string KonekcijskiString)
    {
        string strKonekcija = ConfigurationManager.ConnectionStrings[KonekcijskiString].ConnectionString;
        OleDbConnection OleDbKonekcija = new OleDbConnection(strKonekcija);
        OleDbCommand komanda = OleDbKonekcija.CreateCommand();
        return komanda;
    }

    public static DataTable IzvrsiSqlUpit(OleDbCommand komanda)
    {
        DataTable rezultat = new DataTable();
        try
        {
            komanda.Connection.Open();
            OleDbDataReader citac = komanda.ExecuteReader();
            rezultat.Load(citac);
            citac.Close();
        }
        catch
        {}
        finally
        {
            if (komanda.Connection.State == ConnectionState.Open)
                komanda.Connection.Close();
        }
        return rezultat;
    }

    public static void IzvrsiSqlKomandu(OleDbCommand komanda) //update,insert,delete
    {
        try
        {
            komanda.Connection.Open();
            komanda.ExecuteNonQuery();
        }
        catch
        {}
        finally
        {
            if (komanda.Connection.State == ConnectionState.Open)
                komanda.Connection.Close();
        }
    }
}
 


U samom programu nije potrebno svaki put ponavljati kod za otvaranje i zatvaranje konekcije i korišćenje iste konekcije. Ovo je ujedno i jedna od prednosti korišćenja ovog pristupa.

Code (csharp):
OleDbCommand komanda = Baza.KreirajKomandu("KonekcijskiString");
komanda.Parameters.AddWithValue("Ime", TextBox1.Text);
komanda.Parameters.AddWithValue("Prezime", TextBox2.Text);
komanda.CommandText = "INSERT INTO Tabela(Ime,Prezime) VALUES(?,?)";
Baza.IzvrsiSqlKomandu(komanda);
 
Re: Upotreba statičke klase u ASP.NET 29.05.2010. u 09:54 · pre 199 meseci #2
Glavna osobina static class-a je da se ne mogu instacirati i da su u okviru nje dozvoljeni samo static members, tako da u 90% slucajeva nije pogodna za web aplikaciju u kombinaciji sa bazom podataka.

Zasto?

U opsteno, svaka poseta web aplikaciji i/ili web request web strane inicira brisanje page context objekata(starih) i kreiranje novih, tj http je stateless(ne pamti state stanje), da bi mogao da skalira hiljade paralelnih requesta, znaci brise klase. U ASP.NET-u ima razlicitih tehnika kako da se radi u view state-u,session state-u i application state-u....

Static class-e se ne mogu instacirati u opste,pa po paralelnim requestima u tvom slucaju DataTable rezultat ce uvek imati POSLEDNJU kolekciju podataka kroz sve web requeste.

Tesko se primeti u toku razvoja, npr: otvoris 2 paralelna requesta na strani razlicitom kolekcijom podataka, I req- grupa proizvoda A, II req- grupa proizvoda B, ako se potrefi tajming kod I requesta mozes dobiti listing B grupe proizvoda umesto A (kod static klasa).

E sad static klase se mogu koristiti na nivou cele web aplikacije(umesto app. settingsa), dok se za per client pristup koriste sesije kao container za objekte svih vrsta i citljivi su iz svih strana/view state-ova PO KLIJENTU(user-u)..


Re: Upotreba statičke klase u ASP.NET 29.05.2010. u 11:21 · pre 199 meseci #3
Zahvaljujem na odgovoru.
Nekako mi je logično sve to što si rekao, zato sam i imao dilemu da li je ovo dobar pristup.
Ovo pitanje sam postavio, zato što sam nailazio na slične primere, npr. u knjizi "Beginning ASP.NET E-Commerce in C# From Novice to Professional", kao i na stranici A simple 3-tier layers application in ASP.NET
Re: Upotreba statičke klase u ASP.NET 29.05.2010. u 13:16 · pre 199 meseci #4
Citat:
Ovo pitanje sam postavio, zato što sam nailazio na slične primere, npr. u knjizi "Beginning ASP.NET E-Commerce in C# From Novice to Professional", kao i na stranici A simple 3-tier layers application in ASP.NET


Bacio sam pogled, cini mi se da njihov kod pisan po uzoru na singleton pattern(mozda gresim), koji po meni neupotrebljiv u web aplikacijama, moje misljenje, osim kao static za globalne objekte, van konteksta requesta..

Inace slobodno eksperimentisi, pogledaj malo patterne, jer ce ti cela ova prica mnogo znaciti u samom radu..
Re: Upotreba statičke klase u ASP.NET 29.05.2010. u 13:21 · pre 199 meseci #5
Pazite na threadsafety sa statickim klasama/metodama.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme