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

Vase misljenje na postiran kod ...

[es] :: .NET :: Vase misljenje na postiran kod ...

Strane: 1 2

[ Pregleda: 6068 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Vase misljenje na postiran kod ...12.09.2006. u 23:56 - pre 214 meseci
Pozdrav,
Radim sa jednim Kinezom koji iz samo njemu poznatih razloga stalno nalazi zamerke u resenjima koje predlazem/implementiram itd. Polako mi se penje na .. zivac. Ali ajde, mozda sam i ja skrenuo pa vise ne znam sta pisem, pricam radim, pa mi treba "third party" misljenje iliti "reality check".

Na dole postiran kod tip je reagovao: "Vau zasto ti je kod tako komplikovan?" (u prevodu)
Code:

        /// <summary>
        /// Returns Data Table based on sql string
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="connString"></param>
        /// <returns></returns>
        public static DataTable GetDataTableBySqlString(string strSQL, string connString)
        {
        SqlConnection sqlConn = new SqlConnection(connString);
        // A SqlCommand object is used to execute the SQL commands.
        SqlCommand sqlCmd = new SqlCommand(strSQL, sqlConn);

            // A SqlDataAdapter uses the SqlCommand object to fill a DataSet.
            SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
    
            // Create and Fill a new DataTable.
            DataTable dt = new DataTable();
            sqlDa.Fill(dt);
            return dt;
        }


Ja sam mu odgovorio da mislim da ne moze jednostavnije.
Mozda moze drugacije (dinamicki sql unutar store procedure) ali to je van teme.

Ja mislim da on voli da se preserava.
Sta vi mislite?
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 00:32 - pre 214 meseci
Pa, svakako imas varijante da stvari kao sto je:
Code:

SqlConnection sqlConn = new SqlConnection(connString);
SqlCommand sqlCmd = new SqlCommand(strSQL, new SqlConnection(connString));

zamenis sa:
Code:

SqlCommand sqlCmd = new SqlCommand(strSQL, new SqlConnection(connString));


E sad, da li je na to mislio...
 
Odgovor na temu

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 00:52 - pre 214 meseci

Reako bih da nije,
Kad neko kaze da je kod komplikovan, ja to razumem kao kod ti ne valja, buduci da verujem da svaki problem mora imati jednostavno resenje. Ako je problem slozen onda ga treba razbiti u male jednostavne delove i parcijalno resavati. Ako je kod komplikovan znaci da problem nije propisno razbijen (uh kako volim tu rec).

Ali ajde cak i da je mislio na to sto si pomenuo, zar ta "optimizacija" stvarno doprinosi jednostavnosti pomenutog koda.

Bilo kako bilo ako zelis da procitas nesto iz baze, sumnjam da moze krace.

Pravo pitanje je kako odgovoriti na takve primedbe (citaj provokacije)?
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

spartak

Član broj: 5625
Poruke: 631
*.ptt.yu.



+3 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 01:03 - pre 214 meseci
Da mu ne smeta sto komentarises ocigledne stvari a u xml komentaru si se pristedeo maksimalno.

Moguce je da imas posla sa genijem koji shilji mnogo. Pitaj ga na sta je konkretno mislio, mozda je dobronameran i preporuci ti da stavis neki using () {} ili tako nesto. To da neko bolje zna posao od tebe, i da hoce da te poduci je od neprocenjive vrednosti.

Ako je samo smarac, onda u zdravlju i veselju trosi svoju platu i ignorisi ga potpuno. To ti je moj predlog.
 
Odgovor na temu

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 03:56 - pre 214 meseci
Citat:

Da mu ne smeta sto komentarises ocigledne stvari a u xml komentaru si se pristedeo maksimalno.


Evo, ovo vidim kao argumentovan prigovor, to je nelogicno. Iako tu imam mali otpor da sve trpam u xml komentar, zato sto posle x meseci/godina mozda i zaboravim sta konkretno pojedine linije rade (iako je to u ovom slucaju malo verovatno) pa onda volim da komentarisem stvari unutar bloka funkcije.

Citat:

Moguce je da imas posla sa genijem koji shilji mnogo. Pitaj ga na sta je konkretno mislio, mozda je dobronameran i preporuci ti da stavis neki using () {} ili tako nesto. To da neko bolje zna posao od tebe, i da hoce da te poduci je od neprocenjive vrednosti.


Pitao sam ga, na sto sam dobio nesto nemusto sto ne znam ni da ponovim, u svakom slucaju nakon sto je nastavio da davi dao je jedan validan predlog, a to je da zatvorim konekciju u finally bloku {}, sto sam i uradio, ali sto opet nema veze sa navodnom kompleksnoscu koda (vise sa efikasnoscu, s obzirom na potencijalne probleme nezatvorene konekcije).

Citat:

Ako je samo smarac, onda u zdravlju i veselju trosi svoju platu i ignorisi ga potpuno. To ti je moj predlog.


Hvala na predlogu iako je to malo teze i primeniti s obzirom na to da je tip "lead developer" koji usput budi receno nije glup.
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 07:05 - pre 214 meseci
Citat:
krul: Pitao sam ga, na sto sam dobio nesto nemusto sto ne znam ni da ponovim, u svakom slucaju nakon sto je nastavio da davi dao je jedan validan predlog, a to je da zatvorim konekciju u finally bloku {}, sto sam i uradio, ali sto opet nema veze sa navodnom kompleksnoscu koda (vise sa efikasnoscu, s obzirom na potencijalne probleme nezatvorene konekcije).


Koju konekciju? Ovu u GetDataTableBySqlString funkciji. Pa ti je nikad ni ne otvaras. Bar ne u ovom kodu koji si postovao. DataAdapter ce umesto tebe taj deo odraditi.
Evo snippeta iz SqlDataAdapter.Fill metode

Code:
  
            try
            {
                  DbDataAdapter.QuietOpen(connection1, out state1);
                  behavior |= CommandBehavior.SequentialAccess;
                  using (IDataReader reader1 = null)
                  {
                        reader1 = command.ExecuteReader(behavior);
                        if (datatables != null)
                        {
                              return this.Fill(datatables, reader1, startRecord, maxRecords);
                        }
                        return this.Fill(dataset, srcTable, reader1, startRecord, maxRecords);
                  }
            }
            finally
            {
                  DbDataAdapter.QuietClose(connection1, state1);
            }


i

Code:

private static void QuietClose(IDbConnection connection, ConnectionState originalState)
{
      if ((connection != null) && (originalState == ConnectionState.Closed))
      {
            connection.Close();
      }
}


Po meni bi jedino imalo smisla da je rekao da treba catch da implementiras i tu da uradis neki posao (mozda da vratis null iz f-je).
 
Odgovor na temu

kuzmam
ireland

Član broj: 46518
Poruke: 31
193.1.209.*



Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 09:27 - pre 214 meseci
Toplo ti preporucujem da nabavis i procitas sledecu knjigu,

Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

Kod u knjizi je doduse pisan u Javi, ali totalno je citljiv i za jednog .Net developera.
Verujem da ces nakon toga sam pisati mnogo bolji, optimizovaniji i citljiviji kod.

pozdrav
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 13:09 - pre 214 meseci
Citat:
krul: Hvala na predlogu iako je to malo teze i primeniti s obzirom na to da je tip "lead developer" koji usput budi receno nije glup.


Apsolutno nista ne fali tvom kodu (pod uslovom da je DataTable ono sto tebi treba, a i ta indentacija na prva dva reda koda ), u pitanju je jednostavno covek kome je neophodno da kinji ljude hijerarhijski ispod sebe da bi valjda sebi nahranio ego (a mozda i njegov sef njega ocenjuje kvantitativno po broju primedbi koje napravi, ko ce ga znati). Tako da u principu tebi ne treba knjiga o refactoringu nego knjiga "how to cope with problematic coworkers"
Najefikasniji nacin koji ja znam (ali ne pali bas uvek) je da smaraca smaras nazad. Ali ne kompleksna pitanja, nego hiljadu zasto, hiljadu zato... A zasto zatvoriti konekciju u finaly, a zasto msdn kaze da adapter sam zatvara konekciju, a zasto onda u finally opet, a zasto ovo, a zasto ono... Kao malo dete. Ono sto smaraci generalno ne vole to je da sami budu smarani, tako da je velika
sansa da ce preci na nekog drugog ko mu je jednostavniji za smaranje

Ovo sve pod uslovom da on stvarno jeste pametan kao sto ti tvrdis, ono sto se meni cini je da je on jednostavno otisao izvan svoje lige, da je verovatno "stari" vb6 programer koji je naucio C# sintaksu i bacen kao .net lead developer na osnovu vb6 iskustva iako ne zna sta je i kako radi dataadapter, pa jednostavno ventilira svoju frustraciju na vas i pokusava da promeni vas stil programiranja da ga sto je vise moguce prilagodi onome sto on zna a to je flat-model vb6 kod. Siguran sam da bi on bio najsrecniji i ne bi mu kod bio kompleksan da si ti otvorio DataReader i onda red po red kopirao podatke u tabelu Od takvih nema leka, morace projekat da propadne pa da njegovi sefovi vide da on ustvari nije dorastao toj situaciji.
Ako se pitas kako je ovo moguce, googlaj za "peter principle", dosta kompanija (narocito velikih) pati od ovog organizacionog defekta.



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

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 14:48 - pre 214 meseci
Citat:

Koju konekciju? Ovu u GetDataTableBySqlString funkciji. Pa ti je nikad ni ne otvaras. Bar ne u ovom kodu koji si postovao. DataAdapter ce umesto tebe taj deo odraditi.
Evo snippeta iz SqlDataAdapter.Fill metode


To sam prevideo, dok sam se "rvao" sa njim, ali i to je pokazatelj ili njegovog znanja ili stava.

Citat:

Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts


Iako se slazem sa mmix-om, volio bih da unapredim tehniku kodiranja citanjem pomenute knjige, hvala na predlogu.

Citat:

Apsolutno nista ne fali tvom kodu (pod uslovom da je DataTable ono sto tebi treba, a i ta indentacija na prva dva reda koda ), u pitanju je jednostavno covek kome je neophodno da kinji ljude hijerarhijski ispod sebe da bi valjda sebi nahranio ego (a mozda i njegov sef njega ocenjuje kvantitativno po broju primedbi koje napravi, ko ce ga znati). Tako da u principu tebi ne treba knjiga o refactoringu nego knjiga "how to cope with problematic coworkers"


E ovaj post je potvrda necega sto sam duboko osecam a nisam bio u stanju tako elokventno da izrazim. Ne zato sto me mmix opravdava vec jednostavno zato sto analizira postiranu funkciju sa aspekta svrhe te funkcije (da vrati datatable).
Kinezi inace (moje iskustvo) su veliki radnici ali im fali elegancija u resavanju problema. Tip ima cukalo ali je "usancen" fali mu fleksibilnost. Usput da kazem da nisam ponosan na funkciju koju sam postirao zbog toga sto se dinamicki query treba odradjivati zvanjem store procedure koja u sebi definise dinamicki sql. To je po mom iskustvom ogranicenom misljenju dobro iz dva razloga:
1. Sigurnost, sql injection.
2. Efikasnost, brzina izvrsavanja.

Svima hvala na komentarima.

P.S. Sto se tice identacije, ona je ispravna u source file-u ali se omaklo dok sam copy/paste
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 15:40 - pre 214 meseci
Citat:
krul:
1. Sigurnost, sql injection.


Znas mogao bi malo da ispravis f-ju protiv ovoga, mada ne znam koliko bi ti se svidelo resenje a i pretpostavljam kada bi kinez video da bi dobio otkaz

Mogao bi nesto poput ovoga

Code:

public static DataTable GetDataTableBySqlString(string connectionString, string sqlString, params object[] args)
        {
            SqlConnection cnn = new SqlConnection(connectionString);
            // A SqlCommand object is used to execute the SQL commands.
            SqlCommand cmd = new SqlCommand(sqlString, cnn);

            // adding parameters to command
            for (int i = 0; i < args.Length; i++)
            {                                    
                SqlParameter p = new SqlParameter();
                p.ParameterName = "@p" + i.ToString();
                p.Value = args[i];
                cmd.Parameters.Add(p);
            }

            // A SqlDataAdapter uses the SqlCommand object to fill a DataSet.
            SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);

            // Create and Fill a new DataTable.
            DataTable dt = new DataTable();
            dataAdapter.Fill(dt);
            
            return dt;
        }


posle pozivas ovako

Code:

GetDataTableBySqlString(myCnnString, "SELECT * FROM NekaTabela WHERE nekoPolje = @p0 AND nekoDrugoPolje = @p1 AND ...", 234, "neka vrednost");


Znaci morao bi samo da se dogovoris sam sa sobom da ce ti u SQL stringu svaki parametar nositi ime @pn (@p0, @p1...@pn) ili kako vec hoces mozes ispraviti po zelji naziv a isto tako i redosled parametara je bitan. Mada ovo i nije neki hendikep jer u OLEDB provajderu se koristi ovakav metod.

Pa sad.. ako si hrabar, sto rece mmix, smaraj ga
 
Odgovor na temu

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 16:48 - pre 214 meseci
Slazem se, Inace ja to pisem ovako:
Code:

   public static DataTable GetSomeList(string connString, int p1, int p2, int p3, int p4, string p5, string p6, string p7)
        {
            DataTable dt = new DataTable();
            SqlParameter[] parameters = { new SqlParameter("@DistrictID", SqlDbType.Int, 4),
                                          new SqlParameter("@p1", SqlDbType.Int, 4),
                                          new SqlParameter("@p2", SqlDbType.Int, 4),
                                          new SqlParameter("@p3", SqlDbType.Int, 4),
                                          new SqlParameter("@p4", SqlDbType.NVarChar),
                                          new SqlParameter("@p5", SqlDbType.NVarChar),
                                          new SqlParameter("@p6", SqlDbType.NVarChar),
            
            
            };

            parameters[0].Value = p1;
            parameters[1].Value = p2;
            parameters[2].Value = p3;
            parameters[3].Value = p4;
            parameters[4].Value = p5;
            parameters[5].Value = p6;
            parameters[6].Value = p7;
            try
            {
                DataSet ds = new DataSet();
                ds = SqlHelper.ExecuteDataset(connString, CommandType.StoredProcedure, "MojaStoreProcedura", parameters);
                dt = ds.Tables[0];
            }
            catch (Exception e){}
            return dt;
        }

Prva funkcija je davno napisana na pocetku projekta (dok jos nista nisam znao...;=)

i onda store procedura otprilike ovako:

Code:

Alter PROCEDURE MojaStoreProcedura
@p1 int = 0,
@p2 int = 0,
@p3 int = 0,
.
.
.
itd



AS
BEGIN
    DECLARE @SQLString NVARCHAR(2000)
        
    SET @SQLString = N' SELECT * FROM sometable  WHERE p1 = @p1 '
    
    IF (@p1>0)
        SET @SQLString = @SQLString + N' AND p1 = @p2 '
    
    IF (@p2>0)
        SET @SQLString = @SQLString + N' AND p1 =@p1 '
    
    .
    .
    .
    .
    itd

    DECLARE @ParmDefinition NVARCHAR(1000)
    SET @ParmDefinition = N'@p1 int,
                                @p1 int,
                @p1 int,
                @p2 int,
                @p3  NVARCHAR(50),
                @p4 NVARCHAR(50),
                @p5NVARCHAR(10)'
                .
                .
                .
                itd

        
    EXECUTE sp_executesql 
            @SQLString, 
            @ParmDefinition,
            @p1,
                    @p2,
            @p3,
            @p4,
            ... itd


    
END


i ne, nemam hrabrosti za smaranje, resio sam da ga trpim (citaj pravim se lud, da ti s u pravu) i da paralelno trazim drugi posao.
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 17:40 - pre 214 meseci
Huh, krul, mozda ti ipak malo ovde komplikujes

Nemam nameru da ti ispravljam kod ali mislim da si u ovom zadnjem postu napisao dosta viska koda a rekao bi i da ti je taj delimicno dinamicki SQL vise staticki nego dinamicki. (proveravas da li je svaki parametar prosledjen, u stvari proveravas da li je veci od 0 za int a za nvarchar ne vidim sta radis, pa ako jeste dodajes sa AND p1 = @p1, sto znaci da ti se parametri mogu pojavljivati samo u WHERE klauzuli sto ces priznati i nije mnogo dinamicno). Onda imas i fiksan broj parametara sa fiksnim tipovima (int i nvarchar) u GetSomeList. Moram priznati da ja licno ne bi tako radio, probaj da pozoves preko one prepravljenje f-je SP bez ovog dodatnog posla sa parametrima i videces da je dosta... kako bi rekao... elegantnije

Samo dodaj u GetDataTableBySqlString za komandu da je tip StoredProcedure
Code:

cmd.CommandType = CommandType.StoredProcedure;
 
Odgovor na temu

krul
Cardak ni na nebu ...

Član broj: 16060
Poruke: 85
*.bchsia.telus.net.



+1 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 18:13 - pre 214 meseci
Moguce,
Samo sam sledio uputsvo na sledecem sajtu:

The Curse and Blessings of Dynamic SQL

http://www.sommarskog.se/dynamic_sql.html

P.S. store procedura nije radna verzija, vec skica kako bi trebalo da izgleda store procedura koja se bavi dinamickim sql,
a nvar tipove pregledam na osnovu duzine len(@text)>0

P.S. I usput budi receno ta store procedura je dizajnirana da se bavi specificnom tablom/kontekstom za razliku od tvoje koja moze da procesira bilo koji prosledjeni sql.
Jednostavnost! Odlika genijalnosti
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Vase misljenje na postiran kod ...13.09.2006. u 19:30 - pre 214 meseci
Citat:
krul
Kinezi inace (moje iskustvo) su veliki radnici ali im fali elegancija u resavanju problema. Tip ima cukalo ali je "usancen" fali mu fleksibilnost.


Hmm, Kina je ogromna zemlja i uopste se ne slazem sa ovom generalizacijom. Ako izuzmemo njihovu dijasporu, sa milijardu i po stanovnika siguran sam da su stanovnici jedne provincije slicni stanovnicima dijametralne provincije koliko smo slicni mi i svedjani Ja iz mog iskustva i licnog kontakta sa Azijatima mogu da kazem da ih ima svakakvih, isto kao sto i nas ima svakakvih. Ti si samo bio lose srece pa si naleteo na njega Isto tako rigidnih tipova imas u svim ostalim rasama, npr moj kolega Englez koji je iskreno iznerviran cinjenicom da smo mi svi napustili IBM mainframe metodologiju i kome je AS400 odgovor na sva zivotna pitanja i koji nas samo bruka naokolo i uvlaci se sefovima u nadi da ce postati nas sef i naterati nas sve da radimo na AS400

Uopste, generalizacija (ponasanja) je losa stvar. Neki put se odredjeno ponasanje poklapa sa teritorijalnim granicama neke nacije/rase pa naizgled moze da se uspostavi korelacija, ali i u tim okolnostima ako postoji i jedan pripadnik te nacije/rase koji nije takav, generalizacija je nepravedna prema njemu/njoj. Ponasanje je funkcija kulture okruzenja, domaceg vaspitanja i stecenog iskustva a ti faktori se menjanju od stana do stana a kamoli od drzave do drzave ili od rase do rase. Iz tog razloga bih molio da se ovakve generalizacije izbegavaju, i kao iskazivanje dobrih osobina a narocito kao iskazivanje losih osobina. Dakle nisu kinezi nefleksibilni nego tvoj sef ima "chip on his shoulder", sto bi rekli ameri


Citat:
krul: Usput da kazem da nisam ponosan na funkciju koju sam postirao zbog toga sto se dinamicki query treba odradjivati zvanjem store procedure koja u sebi definise dinamicki sql. To je po mom iskustvom ogranicenom misljenju dobro iz dva razloga:
1. Sigurnost, sql injection.
2. Efikasnost, brzina izvrsavanja.


E sad, to sto sam reko da je kod OK, ne znaci da je superiska. Sve zavisi od primene. Ja licno smatram dinamicke SQL-ove davnom prosloscu. Izuzev u retkim slucajevima (kao sto je kompleksna pretraga preko desetina parametara ili kad se procesira toliko podaatka da je overhead data adaptera/dataseta neprihvatljiv), sve se moze zavrsiti kroz typed datasets i prekompajlirane stored procedure. Iako zahteva vise inicijalnog truda, DRASTICNO smanjuje trud pri odrzavanju i upgrade-u (definitivno provereno). Referenciranje polja po stringovima je jednostavno stvar proslosti.

Sto se tice tvoje liste vezane za SP sa dinamickim kodom:
1. Kreiranje dinamickog SQLa kroz stored proceduru te ne spasava od SQL injection-a. Ovo je prilicno rasprostranjena zabluda i nikako da skontam odakle potice ta prica.
2. Nije efikasnije. dinamicki SQL se ne moze prekompajlirati i svaki put se pravi query execution plan ispocetka. Sta vise ako su ti application i data server razlicite masine kreiranje SQL komande u stored proceduri trosi resurse SQL servera koji bi te resurse moga da iskoristi za nesto pametnije. Za ovu zabludu znam uzrok a to je u terminu "precompile". Za stored procedure to ne znaci da ce kod procedure biti preveden u binary code, to znaci da ce za svaki query iz procedure biti uradjen i kesiran execution plan, sama procedure se izvrsava kao script. Ako stored procedura dinamicki generise SQL text taj text se ne zna do momenta kad se poziva SQLExec i samim tim nema govora o kesiranju.

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

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 06:05 - pre 214 meseci
Prvo da prokomentarisem ovo

Citat:

sve se moze zavrsiti kroz typed datasets i prekompajlirane stored procedure.


Moram priznati da se sa ovim slazem. Evo za ovo neko kratko vreme koje radim sve sam uspeo da zavrsim sa typed dataset. Mada sam pre godinu dana vikao da mi se ne svidja typed dataset sve do pojave VS 2005. Pojavom TableAdapter-a sam naglo promenio misljenje.

Citat:

Ja licno smatram dinamicke SQL-ove davnom prosloscu.


mmix interesuje me tvoje misljenje onda za DLINQ. Tamo se C# sintaksa prevodi u SQL sintaksu, sto se na kraju manifestuje nekim dinamickim SQL-om ili preciznije receno SQL-om koji nije poznat da vremena izvrsavanja.
 
Odgovor na temu

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 271
*.lanaco.com.



+1 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 06:55 - pre 214 meseci
LINQ?Zna li iko sta je polifonic c#?MMIX?
logic_rabbit (MCAD,MCSD,MCT,MCTS-
Windows development,MCPD)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 12:23 - pre 214 meseci
Citat:
negyxo: mmix interesuje me tvoje misljenje onda za DLINQ. Tamo se C# sintaksa prevodi u SQL sintaksu, sto se na kraju manifestuje nekim dinamickim SQL-om ili preciznije receno SQL-om koji nije poznat da vremena izvrsavanja.


Hmm, moram priznati da nisam dirao ovo neko vreme, ali koliko se ja secam LINQ-a ti query-ji su deo jezika i obavljaju se nad typed izvorima podataka, sto implicira strong typing nad rezultatom, ne secam se da si mogao da napravis string sa querijem i onda da ga izvrsis korz LINQ (znam, mozes da napravis dinamicku klasu i da je emitujes, ali to je varanje ). DLINQ je valjda prosirenje LINQa za relational mapping SQL baze na objekte, i koliko znam dosta ljudi ih je ispljuvalo zbog nacina na koji su to uradili. Doduse, kao sto rekoh, long time no see, mozda se nesto promenilo da ja ne znam.

Generalno moj najveci problem sa dinamickim SQL-ovima su pocetnici koja moram da nadzirem i testiranje/odrzavanje. Meni je typed dataset (iako sporiji) bio blagoslov jer je gomila bagova sa pogresnim poljima resena kompajlerom i dovoljno mi je bilo da u uzdama drzim promene na SQLu i znam da sam siguran od bahatih juniora koje mrzi da iskucaju ime polja do kraja.

Citat:
logic_rabbit: LINQ?Zna li iko sta je polifonic c#?MMIX?


Kakve sad to ima veze sa ovom temom, polifonic C# (Cw) je eksperimentalni jezik sa "fabricki" ugradjenim asinhronim pozivima i implicitnom multi-threaded podrskom. Iskreno ne verujem da ce ikad videti svetlo dana...
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

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 12:51 - pre 214 meseci
Citat:
mmix: Hmm, moram priznati da nisam dirao ovo neko vreme, ali koliko se ja secam LINQ-a ti query-ji su deo jezika i obavljaju se nad typed izvorima podataka, sto implicira strong typing nad rezultatom, ne secam se da si mogao da napravis string sa querijem i onda da ga izvrsis korz LINQ


To sam i ja mislio dok nisam naleto na ovaj video (kada debugira program pokazuje kakav se SQL dobija pri konvertovanju iz LINQ-a). E sad nisam ga bas najbolje skontao sta je hteo da kaze. Da li se podaci salju bazi koja zatim vraca rezultat ili je taj sastavljeni SQL za svrhe debugiranja
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 14:55 - pre 214 meseci
Citat:
negyxo: To sam i ja mislio dok nisam naleto na ovaj video (kada debugira program pokazuje kakav se SQL dobija pri konvertovanju iz LINQ-a). E sad nisam ga bas najbolje skontao sta je hteo da kaze. Da li se podaci salju bazi koja zatim vraca rezultat ili je taj sastavljeni SQL za svrhe debugiranja


To je samo za svrhe debagovanja, primeti da iako je promenio Country u City, gornji spisak (sekvenca .NET poziva) se nije promenila. Sam DLINQ query je kompajliran pre startovanja i ne moze se menjati dinamicki u runtime-u (u suprotnom ode strong typing). SQL skripta koju je on menjao je automatski generisana u DLINQ query objektu za svrhu pribavljanja podataka na osnovu connection i schema informacija iz DataContext modela (slicno kao kad u sadasnjem TableAdapteru izaberes "generate SQL scripts" pri konfiguraciji), i promena koju je on pravio nije "vracena" nazad u query objekat. Interesuje me bas dal je moguce promeniti connection string u DataContext objektu, vidim da cu morati da skinem zadnji CTP

Hvala za link, vidim da ima novih stvari od kad sam ja zadnji put ovo gledao. Kao sto rekoh nemam problema sa tim da ljudi pisu query-e u kodu dok god ja dobijem strong typed checking Jos ako DLinq bude imao compile time validaciju modela, eto mene srecnog
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

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Vase misljenje na postiran kod ...14.09.2006. u 15:12 - pre 214 meseci
Citat:
mmix: ...ne moze se menjati dinamicki u runtime-u


Rekoh pa porekoh, sad nadjoh ovo na forumu:

Q8. What are our options for run-time definitions of queries?
A8. [KF] The May 2006 CTP includes support for this. See QueryExpression and the InteractiveQuery Sample (C#).

Vise o ovome kad pogledam te samplove...

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 :: Vase misljenje na postiran kod ...

Strane: 1 2

[ Pregleda: 6068 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

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