06 January 2011 BizzBingo Robert Muehsig

image

Es waren einmal ein paar Entwickler auf einem Microsoft WebCamp und es war die Idee geboren einer "Bullshit-Bingo-Online-Version” als Demo MVC Projekt. Alles Open Source natürlich. Unseren ersten Meilenstein haben wir erreicht... Ausprobieren unter www.bizzbingo.de / www.bizzbingo.com :)

Kurze Vorgeschichte

Auf dem WebCamp in München im Juni gab es am zweiten Tag eine Aufgabe zu meistern: Ein Demo MVC WebApp sollte entwickelt werden. Das Team was sich damals zusammengefunden hat - zu 4/5 Kollegen von mir und Torsten Hufsky kommt ebenfalls aus Dresden:

Ehrlich gesagt kamen wir an diesem Tag nicht wirklich weit, aber die Ideen waren da - und auch das Projekt wurde auf Codeplex eingestellt. Die Idee dreht sich um "Bullshit/Buzzword Bingo” - nur als richtiges "Online Spiel”. Davon sind wir heute noch weit entfernt, aber es ist wie gesagt nur ein kleines Hobbyprojekt.

Nach dem WebCamp ist die Entwicklung etwas "eingeschlafen”, jedoch haben Ken und ich weitergebastelt um mal ein paar Techniken auszuprobieren.

Technik / Architektur

Als Datenspeicher dient eine Microsoft SQL Datenbank und als "Frontend Framework” für die Webkomponente ASP.NET MVC 3 - das ganze gehostet auf Windows Azure / SQL Azure. Als "Architektur” wollen wir uns an CQRS ranwagen.

Momentan ist es aber ungefähr so geworden - wir greifen (noch) auf eine Datenquelle zu, auch wenn die Idee eigentlich von CQRS war dass Queries auf eine Art "Cache” gehen.

image

Commands: Delete / Create / Update
Queries: Read

Hier mal ein paar Frameworks die wir einsetzen.

Applikations-Frameworks:

  • ASP.NET MVC 3
  • .NET 4.0
  • Entity Framework für Datenzugriff
  • Castle Windsor für IoC
  • jQuery
  • FEM CSS Grid

Test-Frameworks:

  • NUnit
  • Moq fürs Mocking

Build / Deployment:

  • Powershell zum Deployen der SQL Scripts
  • MSBuild
  • Azure SDK

Sonstiges:

  • Azure SDK wird aktuell noch in keinem Projekt genutzt, nur für das Hosting wie hier beschrieben.
  • NDepend für Codeanalyse
  • TeamCity als Buildserver
  • Die Tests sind nach dem Vorbild von Thomas Bandts Blogpost entstanden - genauere Details wie wir Tests bei uns strukturieren folgen später, oder ihr schaut einfach selber nach ;).

Die Solution

image

Hier seht ihr die aktuelle Solution - den aktuellsten Stand findet ihr auch auf unserer Codeplex Seite.

Web = MVC Frontend


Queries / QueryHandlers = "Read” Befehle
Commands / CommandsHandlers = "Schreibende” Befehle


Data = Entity Framework & Mapping zum Model


Model = POCOs


Installer = IoC Konfiguration

 

Viel Zeit haben wir auch für die Tests aufgewendet. Kleine Besonderheit bei den "Unit Tests”:

  • Data.Tests gehen gegen die Datenbank und testen die Repositories. Dabei wird wenn nötig automatisch die Datenbank über SQL Scripte, welche sich im Database Ordner befinden ausgeführt.
  • IntegrationTests machen einen gesamten Systemtest und gehen von den Controllern aus - "WebTests” oder richtige "BrowserTests” sind es also nicht.
  • Beide Tests erstellen zum Anfang einen Testdatenbank mit einem konsistentem Stand - aufbauend auf SQL Scripten.

Was kann die Website nun?

Besucher sehen ein zufällig generiertes Set an "Buzzwords”:

image

Wenn man nun in einem Meeting ist liegt es nun an dem Benutzer selber auf die Wörter zu klicken (ja, man kann bescheissen... muss man ja aber nicht.)

image 

Sobald 4 Wörter in einer Reihe getroffen wurden hat man das Spiel gewonnen:

image

Momentan kann man nicht mehr machen... außer das die englisch und deutsch unterstützen. Man muss sich zudem nicht anmelden.

Warum wir einen Postback durchführen? Weil wir eigentlich noch mehr Ideen haben und richtig "Online Spielen” wollen. Ja - ein Postback ist heutzutage nicht mehr zeitgemäß, reicht uns momentan aber.

Source Code?

image

Wir nehmen CodePlex (und somit den TFS) als Source Control und arbeiten darauf. Den Source Code könnt ihr euch gerne hier anschauen.

Ausprobieren? Feedback?

Ausprobieren könnt ihr es hier. Feedback könnt ihr in unserem UserVoice Forum geben. Wir werden auf alle Fälle weiterbasteln und vielleicht kann es ja dem einen oder anderen auch helfen. Einige Blogposts werde sich bestimmt in Zukunft darum drehen und genauere Aspekte betrachten, wie z.B. Unit Testing oder wie wir Database Tests machen.


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!