C# DataBinding del 1 – hvilke resourcer skal du bruge…

Skrevet - Saturday, January 5th, 2008 kl. 21:23 | Kategori - * Kodning

Jeg er så heldig at jeg på arbejde har rimelig nem adgang til kurser og bøger om programmering. Som chefen siger: “Kan du bruge det til løsningen, så køber du det bare… hvis det er over 5k, må du godt lige sige det inden…”.

Først skylder jeg nok at nævne hvad projektet går ud på i korte træk – det bliver i lidt generelle vendinger, da vores konkurrenter også har adgang til internettet… Det er en applikation til transportvirksomheder for at styre deres booking og disponering. Der er ikke de store beregninger i det (endnu), men den er til gengæld meget datatung og der er store krav til samtidighed, dvs. at state ændrer sig ofte i dataenes levetid og datas levetid er meget kort.

Egentlig havde vi afskåret os selv fra databinding pga. nogle kendte bugs med det, samt at vi var lidt bekymrede for formattering og parsing af data frem og tilbage imellem lagene. Vi har valgt en 3-lags struktur, hvor forretningsobjekter ligger imellem brugerfladen og datalaget. Vi er dog nået frem til at det simpelthen er for besværligt og tidskrævende selv at skulle stå for parsing osv., så vi er gået tilbage til databinding.

Vi kører i version 2.0 af .NET frameworket i C#. Vi kunne egentlig godt gå op på version 3.5, men vi har lige et par deadlines der skal nås, og vi har derfor valgt at afvente. Der er kommet nogle lækre ting til i version 2.0 i forhold til 1.0 og 1.1 til databinding, men vores problem har været at de er utrolig dårligt dokumenterede, så det er først nu her sidst i 2007 at det er lykkedes mig at finde nogle gode resourcer og bøger til at lave det ordentligt.

Nå – til cremen – de bøger, jeg klart vil anbefale, hvis du skal i gang med databinding er:

De er begge meget velskrevne og meget grundige, fordi de er så koncentrerede om emnet. Data Binding-bogen er klart den mest nyttige i denne sammenhæng, men den anden er en rigtig god makker til den. Den fungerer perfekt som opslagsværk til nogen af de ting, man støder på som applikationsudvikler.

Der er nogle ting, som er temmelig vanskellige at styre ved databinding, når man ikke binder direkte på DataSets og/eller DataTables. Især DataGridViewet (som er næsten uundværligt) er skrevet til objekter der understøtter alle de rare interfaces for Data Binding (og de er implementeret i DataSet hhv. DataTable). Den side, hvor jeg endeligt fandt en nogenlunde implementation af IBindingListView (som giver understøttelse af avanceret filtrering, søgning og sortering) er BLW på SourceForge.Net – en uundværlig side, når der skal findes tredje-parts tilføjelser. Jeg har forsøgt mig med en af MS’s udvidede DataGridView-autofilter columns, men der var så mange bugs og uhensigtsmæssigheder i den, at jeg måtte opgive den.

Det fede ved IBindingListView-intefacet er, at når det først er implementeret på en generisk List<T>-klasse, er der kun ganske få interfaces tilbage, som er en god ide at tilføje på forretningsobjekterne. Så når det stykke arbejde er gjort, kan man tilføje så mange objekter man lyster uden at skulle lave alt det “kedelige” og tunge arbejde, det er at implementere søgning, filtrering og sortering af lister. Det gør det desuden ekstremt nemt at bruge fx SubSonic eller tilsvarende til at danne forretningsobjekterne på baggrund af databasen. Men mere om Interfaces i en anden og senere post. Dem kan man simpelthen ikke overvurdere betydningen af.

Feed | Trackback |

5 Comments
  1. nckjox said,

    September 11, 2008 at 10:07

    Fin artikel-serie. Tak for den. Særlig tak for dine henvisninger til bøgerne. Jeg vil selv anskaffe mig “Data Binding with Windows Forms 2.0″ på din anbefaling. Oplever samme problem som du beskriver, at det kan være vanskeligt at finde dokumentation om databinding. Ud over bøgerne du henviser til, hvilke andre andre ressourcer tænker du da på?

    BEMÆRK!!!
    Lige en lille rettelse. Linket til “C# DataBinding del 1 – DataGridView…” ender blindt. Jeg fandt selv frem til artiklen ved at skrive “http://goblincave.net/01/2008/c-databinding-del-2-datagridview….php” i adresselinjen. Det korrekte link er “http://goblincave.net/01/2008/c-databinding-del-2-datagridview-can%E2%80%99t-live-with-it%E2%80%A6-can%E2%80%99t-live-without.php”.

  2. GoblinHero said,

    September 22, 2008 at 9:02

    Tak for rettelsen – siden er opdateret til at pege på den korrekte side.

    Med hensyn til andre ressourcer, så bruger jeg meget tid på MSDN – og efter jeg er gået op på WPF, er der en række blogs, som beskriver meget detaljeret – især Beatriz Costa (www.beacosta.com) har nogle enormt gode artikler.

  3. nckjox said,

    September 25, 2008 at 7:22

    Et enkelt lille “men”. Når du alligevel er i gang med at rette, så refererer de andre sider i artikelserien blindt til “C# DataBinding del 2 – DataGridView…” (ups jeg skrev “del 1″ og ikke “del 2″ sidste gang, men du fandt ud af det)

  4. GoblinHero said,

    September 29, 2008 at 8:46

    Takker igen – det skulle være rettet nu.

  5. feassedub-online said,

    March 26, 2010 at 15:22

    Tak for de interessante oplysninger

Post a Comment