Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Upotreba statičke klase u ASP.NET

[es] :: .NET :: ASP.NET :: Upotreba statičke klase u ASP.NET

[ Pregleda: 2681 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Laki123

Član broj: 16706
Poruke: 98
*.adsl-1.sezampro.yu.



+4 Profil

icon Upotreba statičke klase u ASP.NET27.05.2010. u 09:06 - pre 168 meseci
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);
 
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: Upotreba statičke klase u ASP.NET29.05.2010. u 08:54 - pre 168 meseci
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)..


 
Odgovor na temu

Laki123

Član broj: 16706
Poruke: 98
*.adsl-1.sezampro.yu.



+4 Profil

icon Re: Upotreba statičke klase u ASP.NET29.05.2010. u 10:21 - pre 168 meseci
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
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: Upotreba statičke klase u ASP.NET29.05.2010. u 12:16 - pre 168 meseci
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..
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Upotreba statičke klase u ASP.NET29.05.2010. u 12:21 - pre 168 meseci
Pazite na threadsafety sa statickim klasama/metodama.
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ć
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Upotreba statičke klase u ASP.NET

[ Pregleda: 2681 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.