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

webservisi i prenos TDataSet

[es] :: Pascal / Delphi / Kylix :: webservisi i prenos TDataSet

[ Pregleda: 2205 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

overflow
Goran Milosavljević
Integration & Internet Senior
Engineer @ Telenor
Beograd

Član broj: 396
Poruke: 345
*.vdial.verat.net.

ICQ: 106825659
Sajt: localhost


Profil

icon webservisi i prenos TDataSet04.11.2004. u 18:36 - pre 203 meseci
Napravim najjednostavniji webservis, funkciju koja treba da uzme TDataSet sa DB servera i vrati mi kao rezultat ... e sad, kada ja na klijentu uvezem wsdl (i tu funkciju) i pozovem je a rezultat (taj TDataSet) pokusam da dodelim nekom datasetu u mojoj aplikaciji dobijem gresku tipa: "Incompatible types: 'DB.TDataSet' and 'mojafunkcijawebservisa.TDataSet'"? Kako preneti ceo TDataSet, koji se dobija kao rezultat metode nekog webservisa...?
Sve sto je besmislenije, utoliko je bolje.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.149.eunet.yu.



+1 Profil

icon Re: webservisi i prenos TDataSet04.11.2004. u 20:59 - pre 203 meseci
Ako sam dobro razumeo to sto radis, mislim da silno gresis. Kako mislis da napravis funkciju koja preko mreze vraca TDataSet koji se nalazi u memoriji (i zasebnom procesu) nekog drugog racunara? To sto bi zeleo automatski da se radi trazi osobinu koja se zove serijalizacija objekta iliti zapakuj objekat na jednom racunaru i rekonstruisi ga na drugom, a sto u tom kontekstu koji ti zelis ne jos uvek nije po default-u u Delphi-u (a mislim da nece ni skoro).

Potrazi demoe u Delphi-u i na netu koji koriste web servise za prenos podataka izmedju application servera i klijenta - tj. omogucavaju pravljenje 3-tier (troslojnih)sistema.

Ili napravi server aplikaciju koja koristi trojku: dataset->provider-clientdataset, gde se TClientDataSet zapakuje u stream (TClientDataSet.SaveToStream()), pa se taj stream posalje preko mreze (uz pomoc Indy-a?) i na klijentu se otpakuje u njegovom TClientDataSet-u (TClientDataSet.LoadFromStream) i koristi.

Ili nabavi/kupi neki gotov framework za 3-tier (kao sto je npr. DataAbstract 3.0).
 
Odgovor na temu

overflow
Goran Milosavljević
Integration & Internet Senior
Engineer @ Telenor
Beograd

Član broj: 396
Poruke: 345
*.vdial.verat.net.

ICQ: 106825659
Sajt: localhost


Profil

icon Re: webservisi i prenos TDataSet05.11.2004. u 20:01 - pre 203 meseci
Citat:
To sto bi zeleo automatski da se radi trazi osobinu koja se zove serijalizacija objekta iliti zapakuj objekat na jednom racunaru i rekonstruisi ga na drugom, a sto u tom kontekstu koji ti zelis ne jos uvek nije po default-u u Delphi-u (a mislim da nece ni skoro).


Da li si 100% siguran u ovo (poslednje) sto si napisao?
Znaci ideja je da sve slogove itd. prvo serijalizujem u XML, a kada isti primim na klijentu deserijalizujem taj objekat (DataSet) XML.
Cudi me da Delphi nije automatizovao ovaj proces (u C# recimo ovako nesto je ok izvesti).
Sve sto je besmislenije, utoliko je bolje.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.195.EUnet.yu.



+1 Profil

icon Re: webservisi i prenos TDataSet06.11.2004. u 02:11 - pre 203 meseci
Vidis, ti pricas o serijalizaciji slogova. Ti kada zelis da preneses TDataSet, pokazivac na njega ne pokazuje na sirove slogove u memoriji vec na instancu klase koja sem sirovih slogova ima i jos gomilu privatnih podataka i jos stosta da ne ulazim sada u detalje. Ja sam mislio na pakovanje cele instance kada sam rekao serijalizacija. E sada kada pominjes samo slogove, to je druga prica. Zato i postoji SaveToStream() i LoadFromStream(), tako da mozes da posaljes podatke izmedju udaljenih racunara. Postoji upis podataka u XML i Binary formi. U principu je lako odraditi pakovanje-slanje-otpakivanje i moze preko web servisa gde se vrsi odgovarajuci prenos vec zapakovanih podataka. Dovoljno je jednom da napravis pomocne funkcije koje ce ti raditi onaj deo posla koji je uvek isti za bilo koji CDS i vec ce ti biti laka implementacija na dalje.

Necu ulaziti u to kako c# to radi jer i Delphi.NET moze sve to isto pa i bolje, znaci ovde je pitanje kako to uraditi na win32 platformi sto bezbolnije, tako da c# gubi win32 bitku 100% :)
 
Odgovor na temu

overflow
Goran Milosavljević
Integration & Internet Senior
Engineer @ Telenor
Beograd

Član broj: 396
Poruke: 345
*.vdial.verat.net.

ICQ: 106825659
Sajt: localhost


Profil

icon Re: webservisi i prenos TDataSet06.11.2004. u 08:31 - pre 203 meseci
Da li si video ovo:
Citat:

Znaci ideja je da sve slogove itd.


Nisam mislio samo na sirove slogove... i upoznat sam sa time da objekat tipa klase TDataSet ima jos stosta osim "sirovih slogova". Interesovale su me mogucnosti prenosa celog TDataSet-a, ali i sirovih slogova.
Sve sto je besmislenije, utoliko je bolje.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.128.eunet.yu.



+1 Profil

icon Re: webservisi i prenos TDataSet06.11.2004. u 13:17 - pre 203 meseci
Sirovi slogovi pakovanjem na opisani nacin, a tdataset preko podrske kroz TPersistent mehanizme, ali treba dodati podrsku da moze da stream-uje i slogove. Ako se koristi neki od standardnih mehanizama za pristup bazama (Dbx, Ibx, ADO) onda bi morao rucno da dodas podrsku za to. Problem je sa dataset-ovima koji nisu dvosmerni tj. nemaju ugradjen kes za podatke, kao sto je TSQLDataSet iz DBX palete. Zatim ima problema sa pratecim podacima kao sto su owner i parent polja tdataset-a (tu mislim na klase koje su izvedene iz tdataset-a), zatim konekcija na bazu itd. Zato mislim da je TClientDataSet prava stvar za tvoj problem. Ja je koristim za briefcase model rada, za razmenu podataka izmedju udaljenih racunara i za sinhronizaciju podataka izmedju nepovezanih sql servera (offline sinhronizacija). Sada samo treba da smislis elegantan i efikasan mehanizam da prosledjujes upakovane podatke.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: webservisi i prenos TDataSet

[ Pregleda: 2205 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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