[WPF] Data tussen client en server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • XiniX88
  • Registratie: December 2006
  • Laatst online: 11-09 06:58
Probleem
Voor mijn stage moet ik een manier vinden om data tussen een client applicatie en de database te krijgen. Deze database hoeft echter niet binnen het netwerk te draaien. Wat men niet wil is de database service op het internet zetten.

Verder moet er een manier worden gevonden om te zorgen dat de DataGrid niet direct alle rows opvraagt, omdat dit in sommige gevallen + 1 milj records zijn.

Wat mag ik gebruiken
Alles, liefst wel gebaseerd op WPF, maar daar kan elke toolset (Telerik / devExpress) voor gebruikt worden.

devExpress heeft wel een server mode, waarbij men zegt data in delen op te halen (echter heb ik nog geen manier gevonden om te kijken of dit waar is). Verder krijg ik LinqInstantFeedback niet werkend, waardoor dus elke keer als hij data ophaalt, de complete GUI freezed.

Telerik heeft eenzelfde idee met een QueryableCollectionView:
http://www.telerik.com/co...rmance-on-large-data.aspx

Wat heb ik geprobeerd
Vandaar dat ik dacht aan de WCF Data service (OData) (ADO.NET Entity Data Model), echter, in het verleden werkte dit niet, nu krijg ik het wel aan de gang, alleen niet de InstantFeedback.

Verder zover ik zie bied mijn service XML files aan waarin de volledige dataset staat (mits ik niet limit met: SetEntitySetPageSize("*", 25)) echter als ik limit laat de dataset binnen b.v. devExpress alleen de eerste pagina zien.

Edit: http://devexpress.com/Products/NET/ORM/ Bijna XPO vergeten, alleen kan ik hier weinig informatie over vinden, hoe dit in zijn werk gaat. Echter vond ik hier een post: http://community.devexpre...rchive/2006/05/05/85.aspx waarbij de devver zelf niet positief over zijn opzet was.

Wat ik dus zoek
Een oplossing om data van een database over het internet te kunnen versturen, waarbij data operations grotendeels op de server worden uitgevoerd, waardoor men alleen een subset van de data hoeft te sturen.

Ik wil WPF gebruiken voor zowel een internet app (XBAP) als een normale client, XBAP het liefst draaiend in partially trust mode, waardoor de client geen certificate nodig heeft om het te kunnen runnen, waardoor ik dus liever een OData a like oplossing prefereer.

Little sidenote
De modellen gecreeerd door WCF, kunnen zover ik zag niet worden aangepast. Met ASP.NET gebruikte ik voorheen ModelValidation, dmv reflection op models, iemand enig idee hoe dit mooi op te lossen als ik toch mn queries op de server wil laten runnen. DataGrids zelf dan niet aanpasbaar maken? En vanaf de verkregen modellen MVVM gebruiken om verder te gaan?

[ Voor 13% gewijzigd door XiniX88 op 09-02-2011 09:18 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je zult dus moeten zorgen dat je je data-laag en waarschijnlijk ook een deel van je business laag ( Anders ontkom je er niet aan om af en toe grote hoeveelheden data te versturen ) te verservicen.

Hoe je die service implementeerd is in principe niet zo belangrijk voor je front-end. Maar aangezien je met MS technologie werkt is het voor de hand liggend om deze service met WCF te maken.

Je zult dus eerst eens goed na moeten denken welke functionaliteiten en data je nodig hebt om je front-end te kunnen implementeren. Daar maak je dan een leuke interface beschrijving van, en die implementeer je in een WCF service.

[ Voor 23% gewijzigd door Woy op 09-02-2011 09:57 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • XiniX88
  • Registratie: December 2006
  • Laatst online: 11-09 06:58
Om makkelijk te beginnen is dat een list of employees, en de details per employee.

GET /Persons() doet WCF als ik in server mode werk, wat er nu dus voor zorgt dat er 300.000 rows over het netwerk gaan. Ik zoek hiervoor dus een zuinige manier, iets wat WCF op het moment niet lijkt.

Ik zou dus een gridcontrol willen die hier zuiniger mee om springt, of deze laag zelf schrijven, als dat gridcontrol (door de DataContext, waar die mee om gaat) vraagt welke rows die wil hebben.

Alleen heb ik nog geen manier gevonden dit te doen.

Misschien dat ik je bericht volkomen fout begrijp, maar lijsten met overzichten zijn nodig, ik wil dus graag dat dit zuinig wordt opgevraagd ipv direct alles. Verder heeft WCF een aantal nadelen, bij bijvoorbeeld devExpress: http://community.devexpre.../74864/256052.aspx#256052

Ik hoop dus dat er een manier is dit of zelf te schrijven o.i.d. maar ben dus opzoek naar oplossingen die gebruikt kunnen worden, echter heb ik zelf nog geen doeltreffende gevonden.