[.NET] Xml databinding project

Pagina: 1
Acties:

  • OMX2000
  • Registratie: Januari 2001
  • Laatst online: 21:30

OMX2000

By any means necessary...

Topicstarter
Ik heb nu een tijdje in .Net rondgesnuffeld, en ik ben een beetje teleurgesteld over de mogelijkheden van Xml. Ja het klopt MS heeft veel gedaan om XML te integreren, en het is ook op veel vlakken gelukt. Maar wat ik vooral een gemiste boot vind is het genereren van classes vanuit Schema's. Dit is wel mogelijk in Visual Studio, maar de classen die gegenereerd worden zijn gebaseerd op tabellen.
Wat ik dus wil is het volgende

1. Genereer een Schema voor de structuur van de Xml
2. Leid van deze schema's classes af, die de basis zijn voor classes waarin je business logica in zit.
3. De instanties van de classes kunnen makkelijk opgeslagen (serialised) worden in XML(DOM)...

Voor de duidelijkheid dit kan al wel in .Net (afgezien van punt 2)... Wat wil ik dan dus anders? Ik wil dat de classes die gegenereerd zijn makkelijk te inheriten/encapsulaten zijn, en te voorzien van business logica. Want dat is wat je dus in de praktijk doet. Je verzint de XML structuur, en dan zorg je dat je daar business logica omheen bouwt.

Zoals de Mighty Mbravenboer ;) mij al aangaf is Castor zoiets maar dan voor Java.

Zijn er hier dus mensen die zin hebben om zoiets op te zetten in .Net? En voordat hier een slotje op komt, ik wil dus geen mensen werven of zo, ik ben gewoon een .Net hacker "that wants to make the world a better place" ;)

Dè developers podcast in je moerstaal : CodeKlets Podcast


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mighty Mbravenboer
Ahum ;) . Heb je een nieuw superlatieven woordenboek aangeschaft? ;) .

Ik vind het een erg goed idee, maar ik zou wel even een goed begin maken. Zulke zaken vereisen natuurlijk een professionele aanpak en een goed overzicht van vergelijkbare tools.

Allereerst zou ik even heel goed rondkijken of er al niet mensen met dergelijke projecten bezig zijn. Er zijn enkele tientallen Java projecten die in deze richting gaan, dus je zou denken dat er al snel mensen zijn die het idee krijgen om dit naar C# om te zetten.

Als het blijkt dat er al een project is met een visie die bij die van jou past zou ik me daar bij aansluiten. Als je de eerste bent die de behoefte aan een dergelijke tool voor .NET heeft weten te ontdekken kan je natuurlijk zelf een project opzetten als je ook het idee hebt dat je voldoende tijd en motivatie hebt om volledig te ontwikkelen en daarna ook te onderhouden.

Als je uiteindelijk aan de slag gaat zou ik eerst heel veel aandacht besteden aan het onderzoeken en vergelijken van bestaande oplossingen waarvan de meeste waarschijnlijk voor Java zullen zijn. Wat zijn de goede aspecten van de diverse tools? Wat zijn de gebreken enz.

Daarna kan je besluiten of je een geheel nieuwe codebase gaat opzetten of dat het misschien verstandiger is om de codebase van een open-source implementatie te pakken en deze om te zetten naar .NET (wat de benodigde tijd natuurlijk enorm verkleind).
Genereer een Schema voor de structuur van de Xml
Je bedoelt een W3C XML Schema voor een XML bestand? Dat is natuurlijk een probleem wat volledig losstaat van het XML-data-binding probleem. Misschien dat je daar dus beter een extern tooltje voor kunt gebruiken. Daarnaast is dit natuurlijk een vrij lastig probleem, want een schema (in wat voor schema-taal dan ook) beschrijft natuurlijk een hele klasse van XML documenten. Het document waaruit je een schema genereert is maar 1 element van deze klasse. Extreem voorbeeld: uit een willekeurig XHTML bestand is het niet zo zinvol om een XHTML schema te genereren.
Leid van deze schema's classes af, die de basis zijn voor classes waarin je business logica in zit.
Ah, dat is wel een interessant idee. Ik begrijp dat je deze klassen dus wilt gaan extenden om methoden en dergelijke toe te voegen. Dat is natuurlijk goed mogelijk, maar je moet dan ook aan kunnen geven welke instanties er aangemaakt moeten worden ipv de base-klassen.
De instanties van de classes kunnen makkelijk opgeslagen (serialised) worden in XML(DOM)...
Als je het zaakje toch gaat genereren kan je natuurlijk de moeite nemen om het goed te doen en dus SAX te gebruiken ipv DOM. De verschillen zijn natuurlijk niet zo groot (de object-structuur is in dit geval toch al in het geheugen) maar het is natuurlijk wel een leuke performance puntje wat je mee kan pikken :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Overigens wat ik nog wilde zeggen: bijna alle XML data binding oplossingen hebben nogal het probleem dat de gegenereerde klassen niet of slecht aangepast of uitgebreid kunnen worden en dat ze soms zelfs onplezierig 'aanvoelen'. Het is dus een flinke uitdaging om dat beter te doen :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 27-08 08:10
Op zondag 28 april 2002 21:33 schreef OMX2000 het volgende:

Zijn er hier dus mensen die zin hebben om zoiets op te zetten in .Net? En voordat hier een slotje op komt, ik wil dus geen mensen werven of zo, ik ben gewoon een .Net hacker "that wants to make the world a better place" ;)
Wij verzinnen Business logica (rules, facade) en trachten nadien de zaak in XML te gieten mbv xls. Ik snap wellicht niet helemaal waarom jij de andere kant in wil...

morgen nog een sover nadenken als we wat uitgeslapen zijn van het weekend

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
paulgielens: Wij verzinnen Business logica (rules, facade) en trachten nadien de zaak in XML te gieten mbv xls.
Kan je hier iets meer over vertellen? Hoe lees je de zaak in? Hoe genereer je XML? Op welke manier gebruik je XSL?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 27-08 08:10
Nou wij hebben een Data laag met wat sp's... hierachter heb ik een Common laag geschreven om alle gevonden data te vertalen naar objecten. De tabellen worden als het ware vertaald naar objecten welke in de business dienst doen. Op deze wijze zijn we dan dat verrekte relationele model af in onze applicatie. De data word middels DataTables in de Common opgevangen. Vanuit de Common word voor ieder object een xls sheet aangemaakt en wordt het object (data) via XML verstuurd naar de Business laag... van de Business gewoon via TLimb aan de Facade geknoopt waarna deze de data wederom als XML naar de client transporteert.

Maar hier heb ik een topic voor lopen waar overigens nog geen reacties op zijn...lees dit eens even
[topic=479871]

Momenteel giet ik dus alles in XML middels XLS (style stuff). Die common fungeert alleen als de geobjectiseerde data uit mijn rel db.

  • OMX2000
  • Registratie: Januari 2001
  • Laatst online: 21:30

OMX2000

By any means necessary...

Topicstarter
Op zondag 28 april 2002 23:11 schreef mbravenboer het volgende:

[..]

Ahum ;) . Heb je een nieuw superlatieven woordenboek aangeschaft? ;) .

Ik vind het een erg goed idee, maar ik zou wel even een goed begin maken. Zulke zaken vereisen natuurlijk een professionele aanpak en een goed overzicht van vergelijkbare tools.

Allereerst zou ik even heel goed rondkijken of er al niet mensen met dergelijke projecten bezig zijn. Er zijn enkele tientallen Java projecten die in deze richting gaan, dus je zou denken dat er al snel mensen zijn die het idee krijgen om dit naar C# om te zetten.

Als het blijkt dat er al een project is met een visie die bij die van jou past zou ik me daar bij aansluiten. Als je de eerste bent die de behoefte aan een dergelijke tool voor .NET heeft weten te ontdekken kan je natuurlijk zelf een project opzetten als je ook het idee hebt dat je voldoende tijd en motivatie hebt om volledig te ontwikkelen en daarna ook te onderhouden.

Als je uiteindelijk aan de slag gaat zou ik eerst heel veel aandacht besteden aan het onderzoeken en vergelijken van bestaande oplossingen waarvan de meeste waarschijnlijk voor Java zullen zijn. Wat zijn de goede aspecten van de diverse tools? Wat zijn de gebreken enz.

Daarna kan je besluiten of je een geheel nieuwe codebase gaat opzetten of dat het misschien verstandiger is om de codebase van een open-source implementatie te pakken en deze om te zetten naar .NET (wat de benodigde tijd natuurlijk enorm verkleind).
[..]

Je bedoelt een W3C XML Schema voor een XML bestand? Dat is natuurlijk een probleem wat volledig losstaat van het XML-data-binding probleem. Misschien dat je daar dus beter een extern tooltje voor kunt gebruiken. Daarnaast is dit natuurlijk een vrij lastig probleem, want een schema (in wat voor schema-taal dan ook) beschrijft natuurlijk een hele klasse van XML documenten. Het document waaruit je een schema genereert is maar 1 element van deze klasse. Extreem voorbeeld: uit een willekeurig XHTML bestand is het niet zo zinvol om een XHTML schema te genereren.
Die eerste stap is nodig om een schema te maken, dit valt niet onder het "project", daar zijn zoals je al zei veel tools voor te krijgen.
[..]

Ah, dat is wel een interessant idee. Ik begrijp dat je deze klassen dus wilt gaan extenden om methoden en dergelijke toe te voegen. Dat is natuurlijk goed mogelijk, maar je moet dan ook aan kunnen geven welke instanties er aangemaakt moeten worden ipv de base-klassen.
[..]
Juist, dit is wat je ik merkte wat ik in veel projecten steeds opnieuw moest doen. Er was dan wel een algemene manier van het accessen van XML bestanden gebouwd, maar je moet steeds weer classes maken waarvan de public properties 1-op-1 gelijk zijn aan de gegevens in XML.
Op zondag 28 april 2002 23:38 schreef paulgielens het volgende:

[..]

Wij verzinnen Business logica (rules, facade) en trachten nadien de zaak in XML te gieten mbv xls. Ik snap wellicht niet helemaal waarom jij de andere kant in wil...

morgen nog een sover nadenken als we wat uitgeslapen zijn van het weekend
Ik wil de andere kant op omdat dat leuker is ;)
Voorbeeldje, er is een desktop applicatie die meetgegevens offline opslaat. Om deze gegevens op te slaan zou je een database kunnen gebruiken, of als er niet gigabytes aan data is kun je het in XML doen. Hier bouw je dus een schema voor, wat gebruikt gaat worden om de gegevens te kunnen importeren naar de centrale database... Je zou nu kunnen gaan hacken en de gegevens die in de XML bestanden staan om te zetten in objecten/classes. Je doet dan dus eigenlijk dubbel werk, je hebt een schema gemaakt waar alle gegevens in staan, en dan verzin je classes waar alle data in kan staan. Dat wil je dus niet.
Wat dus ideaal zou zijn is dat je als het ware tegen de XML aan programmeert. Je zorgt dus dat objecten xml-aware zijn. Deze classes worden mbv een tooltje gegenereerd. Je moet dus wel aangeven wat nou objecten zijn in je schema.

Dè developers podcast in je moerstaal : CodeKlets Podcast


  • OMX2000
  • Registratie: Januari 2001
  • Laatst online: 21:30

OMX2000

By any means necessary...

Topicstarter
Even een link naar een hoofdstuk uit een Wrox boek... Ze hebben naar mijn mening het beste hoofdstuk uit het boek online gezet : http://www.wrox.com/Support/PDF/SampleChapter_5059.pdf

Gaat dus over XML-databinding, en het hoe en waarom ervan...

Dè developers podcast in je moerstaal : CodeKlets Podcast

Pagina: 1