[ vujkev @ 17.12.2008. 14:30 ] @
Hipotetičko pitanje

Server i klijent dele klasu "Nalog". Komunikacija server i klijent je urađena sa WCF i oba naravno napravljena u .NET-u

Code:

Public class Nalog
   Public ID as integer
   Public Name as string
   ......


što se tiče strane servera ovo se sasvim dovoljno, ali klijent bi trebao da ima neke dodatne elemente npr:
Code:

   Property Valid as boolean
   sub Obrisi
   sub Snimi


i sl.
Moje pitanje je kako proširiti funkcionalnost klase, a da i dalje može jednostavno da se pošalje/primi ka/od servera?
[ Aleksandar Ružičić @ 17.12.2008. 17:33 ] @
ne vidim u cemu je problem da na klijentu definises klasu koja ce da nasledi klasu Nalog, mada nisam radio u vb.netu ali kako je to oop jezik, extendovanje klase bi trebalo da radi bez problema u tom slucaju (naravno od servera bi mogao da primas i da mu saljes samo one podatke koji su definisani u Nalog klasi)
[ mmix @ 17.12.2008. 17:53 ] @
Extendovanje klase je ok resenje, nasledjivanje nije. Remoting generalno ima problema sa nasledjivanjem kad se objekat seta tamo-vamo zbog marshalovanja, tj ako na klijentu napravis Nalog2:Nalog i posaljes na server kao Nalog, server ce ga primiti kao Nalog i poslace nazad Nalog i izgubice se Nalog2 tip (dynamic cast u Nalog2 ce puci), a ako pokusas da posaljes direktno Nalog2 na server puci ce marshaling jer server ne zna za tu klasu. Po meni najbolje resenje je da se nekomplikuje mnogo vec da se sve marshal klase ukljuce i na klijntu i na serveru.
[ vujkev @ 17.12.2008. 21:15 ] @
Sve je to meni jasno, ali šta ako primera radi klasa Nalog u sebi ima i kolekciju objekata "Stavka". Ako svaki nalog ima npr 1000 objekata "Stavka" svako prebacivanje klase Nalog bi podrazumevalo i prebacivanje tih 1000 stavki. Moja ideja je da se na početku prebace svi nalozi, a da se stavke prebacuju po potrebi. To generalno nije problem da se napravi, ali ako u klijentu na 10 mesta treba da koristim objekat "Stavka" iz naloga onda na 10 mesta treba da proveravam da li sam "preuzeo" te podakte sa servera i po potrebi pokrenem preuzimanje.
Koliko vidim najlakše rešenje je da na klijent strani imam posebnu klasu Nalog
[Code]
Public class Nalog
Public Data as Common.Nalog
Public stavke as common.Stavke
Sub Snimi
Sub Obrisi
....
end class
[/code]

i da prilikom slanja i primanja od servera koristim "Data" property ove klase
[ Eurora3D Team @ 18.12.2008. 13:38 ] @
Nisam neki ekspert za NET ali mislim da bi moglo ovako
Definises osnovnu klasu (onoliko koliko je potrebno za server)
Izvedes prosirenu klasu cije ces objekte da koristis u klientu.
I pri komunikaciji serveru saljes baznu klasu (koja je deo izvedene) , znaci instancaobjekata.baza
Jel to moze tako u VB.Net-u?
[ vujkev @ 18.12.2008. 13:53 ] @
Kao što je mmix rekao nije problem poslati osnovnu klasu serveru već primiti osnovnu klasu od servera
Citat:
mmix:
Remoting generalno ima problema sa nasledjivanjem kad se objekat seta tamo-vamo zbog marshalovanja, tj ako na klijentu napravis Nalog2:Nalog i posaljes na server kao Nalog, server ce ga primiti kao Nalog i poslace nazad Nalog i izgubice se Nalog2 tip (dynamic cast u Nalog2 ce puci)
[ vbbojan @ 22.12.2008. 16:48 ] @
Pogledaj malo CSLA framework.

www.lhotka.net

CSLA ima upravo sjajno remoting resenje, a i na forumu
imas dosta materijala koji bi ti bio od koristi.

Mana CSLA je sto treba vremena da se prouci,
ali kasnije se to visestruko isplati.

Pozdrav,
Bojan