Anmelden
Ich möchte für die nächsten 30 Tagen angemeldet bleiben
Deutsch
Several pages in the usergroup are available in English. Click on english to visit these pages.

Blogs

14.03.2008
DNN-Modulprogrammierung - ein einfaches Beispiel (Schritt 0 - Einleitung) (Michael Tobisch)
Eigentlich wollte ich hier ein ganz anderes Beispiel zeigen, aber in einer der letzten Ausgaben des Internet-Magazins war ein Artikel, der zeigen sollte, wie einfach es ist, eine Web-Datenbank-Anwendung unter PHP und mySQL zu schreiben. Weil das dortige Beispiel wirklich so einfach war, verwende ich nun dieses, um zu demonstrieren, dass es nicht wesentlich aufwändiger ist, genau diese Anwendung als DNN-Modul zu realisieren. Nachdem das aber doch ein bisschen gar zu wenig ist, werde ich im Laufe dieses Blogs noch einige Erweiterungen hinzufügen – um letztendlich doch zu sowas zu kommen, was ich hier ursprünglich vor hatte.

Bleiben wir einmal bei diesem Beispiel. In der Datenbank sollen Kontakte gesammelt werden, und zwar – um den Aufwand minimal zu halten – Vorname, Nachname und E-Mail-Adresse. Keines dieser Felder darf NULL-Werte haben, und in der Anwendung gibt es folgende Möglichkeiten:

  • Anzeige aller Kontaktdaten
  • Abrufen eines Kontakts
  • Anlegen eines Kontakts
  • Bearbeiten eines Kontakts
  • Löschen eines Kontakts

Einfacher geht’s also wirklich nicht. Wir werden später die Tabelle noch um einige optionale Daten erweitern, auch um Daten die nicht unbedingt alle nur Textfelder enthalten.

Voraussetzungen

Ich habe in meiner Entwicklungsumgebung die Source-Variante von DNN 04.08.01 und MS SQL Server 2005 Express installiert. Als Entwicklungsumgebung kommt Visual Studio 2008 Express (Visual Web Developer 2008) zum Einsatz. Nachdem ich hier nicht vorhabe, irgendwelche SQL 2005-spezifischen "Schweinereien" zu verwenden, müsste aber alles mit SQL Server 2000 bzw. MSDE 2000 auch funktionieren, auch mit Visual Studio 2005 (bzw. Visual Web Developer 2005) sollte alles funktionieren. Dazu verwende ich noch das hier in der Usergroup zur Verfügung gestellte deutsche Sprachpaket.

Falls du eine niedrigere Version von DNN installiert hast, ist das auch kein Problem, 04.06.00 sollte es allerdings mindestens sein, weil ich die IHydratable-Schnittstelle implementieren werde. Falls deine Installation also darunter liegt kannst du diesen Schritt aber einfach weglassen, es sollte trotzdem funktionieren.

Wie man DotNetNuke lokal installiert, darauf will ich hier nicht näher eingehen. Es gibt dafür genügend Anleitungen im Web, z.B. DNN-Installation unter Windows Vista oder DotNetNuke Installation Guide (PDF). Auch hier im Forum gibt es dazu einige Beiträge.

Wie geht es weiter?

Die weiteren Blog-Einträge werden systematisch die Entwicklung eines DNN-Moduls zeigen. Ich habe dabei folgende Schritte geplant:

  1. Erstellen der Tabelle und der Gespeicherten Prozeduren
  2. Die Datenzugriffsschicht
  3. Die Geschäftsobjekte
  4. Die Präsentationsschicht - Kontakte anzeigen
  5. Die Präsentationsschicht - Kontakte einfügen, bearbeiten und löschen
  6. Die Präsentationsschicht - Das Layout

Das alles wird mit viel Source-Code und Screenshots gespickt sein, damit es auch gut nachvollziehbar wird. Die Source-Codes stehen auch zum Download zur Verfügung, damit man nicht alles aptippen muss - allerdings nur für angemeldete Benutzer.

(PS: Nachdem mich Sebastian - siehe unten - davon überzeugt hat, das SQL Server Management Studio aussen vor zu lassen, muss ich jetzt doch einiges ändern. Also bitte noch etwas Geduld, bis Sonntag sollte der erste Teil fertig sein.)

(PSS: Ich würde mir übrigens viele Kommentare wünschen - und Anregungen, wie sich der Modul entwickeln soll, nachdem wir einmal die grundlegenden Funktionen erstellt haben)

Kommentare: 9

Sebastian Leupold meint

man muss den ObjektBesitzer und den objektQualifier in der Datenbank nicht wissen, sondern in die Installationsscripte einfach die Variablen {databaseOwner} und {objectQualifier} verwenden (Achtung: Groß-/Kleinschreibung beachten!), dann werden die Objekte vom Installer richtig angelegt. Zum Entwickeln sollte man immer einen ObjectQualifier verwenden, so findet man Fehler am schnellsten.
# 14.03.2008 16:02

Sebastian Leupold meint

die Skripte führt man am besten auch in Host :: SQL aus (statt im Db-Managementstudio), da testet man gleich auch die Besonderheiten des Installers.
# 14.03.2008 16:04

Michael Tobisch meint

Hallo Sebasian,
das ist schon grundsätzlich richtig, und das mit Host SQL ist eine ganz einfache Möglichkeit, da hast du recht. Ich fang halt immer mit der Datenbank an, und da verwende ich das Management Studio. Dort würd es eben so gehen.

Ich gehe jetzt auch nicht davon aus, dass irgendjemand dieses simple Beispiel auf seiner Website nachprogrammiert, sondern daheim auf seinem Entwicklungs-PC - und da sollte er/sie wissen, was er/sie tut.
# 14.03.2008 16:13

Sebastian Leupold meint

Hallo Michael,
ich halte die Vorgehensweise gerade auch auf dem Entwicklungs-PC (mit lokaler DNN-Installation) für wichtig, nur so kann man alle Fallstricke testen (wie z.B. die SQL-Skripte immer UTF-8 kodiert abzuspeichern)
# 14.03.2008 16:23

Michael Tobisch meint

OK, du hast ja recht. Ich schreibe es um.
# 14.03.2008 16:47

Thomas K. meint

Huhu Michael Tobisch,

von mir ein super vielen Dank für das tolle Tutorial. Es hat mir echt den Einstieg in die Modulentwicklung erleichtert und dabei einige Fragenzeichen aufgelöst, die bei mir nach dem lesen des Buches "Professional DotNetNuke Module Programming" (Wrox) noch über meinen Kopf kreisten ...

DANKE !!!
lG
Thomas K.
# 03.12.2009 16:49

Michael Tobisch meint

Danke, Thomas! Sowas freut mich natürlich...
# 03.12.2009 18:54

Camal Cakar meint

Hallo Michael,
# 04.10.2010 10:52

Andreas Bretl meint

Hallo Michael, vielen Dank für das wirklich ausgezeichnete Tutorial. Ich habe nun schon einige Bücher und Tutirals zu sehen bekommen, Deines hat mir aber am Besten gefallen. Danke dass Du Dein Wissen an dieser Stelle mit uns geteilt hast ;) Viele Grüße, Andy
# 17.11.2010 14:32