Ich hatte ja damals mal aus dem Bauch heraus zum DevBattle aufgerufen, erinnert ihr euch noch? Die Resonanz war eher bescheiden, kann ich ja auch verstehen, nicht viele setzen sich nach der Arbeit noch hin und entwickeln an private Projekten. Nun denn, ich möchte heute meine Version vorstellen.
Das WM2010 Management
Die Features
Über das WM2010 Management kann man die Spielstände der einzelnen WMSpiele speichern. Für die Finalrunden werden die Gegner aus den Gruppen und den einzelnen Finalspielen automatisch ermittelt und für die nächste Begegnung eingetragen.
Des Weiteren findet man zu jedem Spiel links oberhalb das Datum und die Uhrzeit, an dem das Spiel stattfindet und rechts oben den Ort der Begegnung.
Die Ergebnisübersicht, zeigt den aktuellen Gruppenstand der Länder in dieser Tabelle.
Die Fenster öffnen sich mit einem FadeEffekt und sind rahmenlos im eigenen Design gehalten und können mittels Drag & Drop auf dem Desktop verschoben werden. Das Schließen eines Fensters erfolgt natürlich auch über ein Fading.
Die Applikation kann geschlossen und minimiert werden. Ein Klick auf den Ball oben rechts führt zurück zur Startseite. Eigentlich nichts dolles, musste aber implementiert werden, da kein vorausgewählter Style verwendet wurde.
Der Blick unter die Motorhaube
In der damaligen Ankündigung ging es ja darum, nicht nur das Tool zu entwickeln, sondern auch um das Beschreiben der Vorgehensweise. Hier möchte ich gerne meine Herangehensweise darstellen.
Die Planung
Die Planung begann recht früh, nämlich sogleich nach der Idee im März. (Viel Zeit blieb ja nicht). Ich aggregierte dazu erstmal Informationen rund um die Fussballweltmeisterschaft. Die am besten geeignete Wissensquelle fand ich – wie so fast immer – bei Wikipedia.
Das Datenbankdesign
Das Design der Datenbank plante ich schon recht früh, hab hab nicht wirklich alles verwendet (Spieler, Position). Hier das ADO-Modell:
SoftwareDesign
ADO Framework / Managementkomponente
In der Managementkomponente findet der Zugriff, über das ADO Framework, auf die SQL Datenbank statt. Hier stehen die CRUD Operationen zu den einzelnen Entities bereit.
Controller
Der Controller bereitet die Operationen für den WM2010 Manager auf und bietet für die Implementierung Methoden zum Ermitteln und Speichern von Datensätzen.
CodeBehind
In den vereinzelten CodeBehind-Dateien werden die Daten für die View (XAML) aufbereitet.
XAML
Die Darstellungsschicht. Diese Schicht dient ausschließlich zur Darstellung der Elemente.
GrafikDesign
Die Fahnen, der Rasen (Hintergrundbild), die WMIcons und die anderen kleinen Icons die im Design verwendet werden, werden namentlich in der Applikation mit einer Verlinkung genannt.
Das ganze dann Zusammengeschustert ergibt das gesehene Gesamterscheinungsbild.
Werkzeuge
- Photoshop CS3
- Visual Studio 2010 Express
- SQL Server 2008 Express
- SQL Server Management Studio 2008 Express
Versionierung
Zukunft
Angedacht für eine nächsten Version wären zum Beispiel folgende Anpassungen / Features:
- Refactoring!
- Tippspielintegration
- globales Hosten der Managementkomponente
- das Ermitteln der Ergebnisse über eine API
- Einbinden der Wikipedia API um Informationen zu Teams und Stadien darzustellen
Denkbar wäre auch das Streamen von Spielen (was der Hammer wäre) – aber hier spielt wahrscheinlich die Obrigkeit (Veranstalter) nicht mit :/
Fazit
Natürlich ist das ganze noch Verbesserungswürdig. Gerade zum Schluss fängt man dann doch an, das eine oder andere Workaround zu implementieren. Aber es gibt ja immer noch die Zeit “danach”, nicht wahr : ) Okay in diesem Falle hat man Zeit bis 2014 zur nächsten WM etwas gescheites draus zu machen, hehe.
Alles in allem kann ich sagen, es hat ne Menge Spass gemacht und plane schon wieder an etwas Neuem. Aber dieses mal ohne den Abgabedruck, jedenfalls wollte ich das in kommenden privaten Projekten vermeiden.
Nun, Euer Feedback ist gefragt, das WM2010 Management ist eingecheckt und kann gerne weiter verwendet werden (auch einzelne CodeTeile natürlich). Eine Erwähnung des Authors wäre natürlich Super ;)
Ich bin des Weiteren auch gerne zu größeren, privaten Teamprojekte bereit, bei denen ich mein KnowHow entfalten und natürlich auch von anderen lernen kann.
Offen
Leider bekomme ich das nicht gebacken, eine anständige Setup mit den entsprechenden Datensätzen der Datenbank zu bauen, vielleicht kann mir da ja jemand etwas unter die Arme greifen. Den ConnectionString in der app.conf muss auch für den Benutzer funktionieren. Kein Plan :/
Aber bevor ich es geschafft habe, wäre ich natürlich dankbar, wenn derjenige das Projekt auschecken und als Setup bauen könnte. Die SQL Scripte liegen in der Solution unter SolutionItems.
Download:
- Repository (write auf Anfrage)











Schöne App hast du da gebaut. Ich würde dir ja gerne etwas helfen aber ich setze kein GIT ein (und will es auch nicht :-) ) und das auschecken ist über die URL sehr mühsam (zumindest habe ich nichts gefunden wie man das mit einem klick downloaden oder auschecken kann). Kannst du mir hier einen Tipp geben?
Hallo Jörg,
vielen Dank für dein Interesse. Ich verwende dazu TortoiseGit, das bindet sich in das KontextMenu ein, von dem man aus bequem die Quellcodeverwaltung managen kann.
Aber wenn du sagst das du Git nicht einsetzen willst, welche Art von Versionierung verwendest du denn in deinen privaten Projekten?
Ich benutze Subversion ebenfalls mit Tortoise
Ja, ich hab mein VServer kürzlich abgegeben, da hätte ich das via Subversion versionieren können. Vielleicht hole ich mir aber irgendwann mal wieder eine Kiste, da könnte ich dann ein SubversionServer aufsetzen. Aber atm brauch ich nicht wirklich einen Server.
[...] Aber schaut selbst: WM2010 – Manager [...]
Kannst du deine Sourcen nicht mal als ZIP zum download irgendwo anbieten?
Ja klar, hier der Link
Super, vielen Dank. Ich schau bei Gelegenheit mal rein. Hast du dir mal überlegt es z.B. auf Codeplex.com als OpenSource Projekt zu hosten. Da wäre dann vieles einfacher :-)
Als Beispiel kannst du dir ja mal mein Projekt dort anschauen
http://wde.codeplex.com/
Gruß Jörg
Ja Jörg, hehe ich hatte mein Projekt da auch schon registriert, aber noch nicht freigeschalten. Weil ich die Grösse des Projektes nicht wirklich für angemessen hielt, hab ich es gelassen.