Thread Entwicklung kleiner bis mittlerer Webapplikationen: Entwicklungsmodell? (5 answers)
Opened by Ronnie at 2004-06-28 10:56

Ronnie
 2004-06-28 10:56
#29283 #29283
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich habe vor gut einem Jahr mit der Perl-Programmierung begonnen. Damals wollte ich nur ASCII-Daten aus einer Messwerterfassung in eine .csv-Datei wandeln, die das Auswertungsprogramm auch versteht. Perl war damals das optimale Werkzeug, weil ich schnell Erfolge erzielen konnte ohne großen Einarbeitungsaufwand. Ich hatte ein paar sed- und awk-Kenntnisse und konnte meine Aufgabe innerhalb weniger Tage lösen. Das selbe Problem würde heute keine fünf Minuten in Anspruch nehmen.

Intranet-Applikationen sind seit Jahren ein Thema in dem Unternehmen für das ich arbeite, also folgte der nächste Schritt. Die Entwicklung einfacher CGIs. Ich hatte vorher schon mit ASP.NET experimentiert, aber mir fehlte der Unterbau an Wissen um effektiv damit zu arbeiten. Außerdem setzen wir zum größten Teil Linux auf den Servern ein, und Geld für einen kommerziellen Datenbankserver wollte auch keiner ausgeben. Zu diesem Zeitpunkt existierte noch kein mySQL-.NET-Dataprovider. Ein MySQL auf einem der Debian-Server zu installieren war aber eine Sache von Minuten.

Die ersten CGIs waren dann entsprechend. Eine HTML-Seite mit dem Formular und das CGI zur Verarbeitung der Daten. Natürlich verwendete ich die obligatorischen HERE-Dokumente. Mit der Entdeckung von DBI machte ich aber zügig Fortschritte. Die ersten kleineren Web-Applikationen kamen zustande. Unsere Mitarbeiter-Datenbank entwarf ich zu diesem Zeitpunkt.

Ein großer Schritt war dann das Verständnis von Referenzen und verschachtelten Datenstrukturen. Dies war die Vorraussetzung zum Einsatz von HTML::Template, das ich bis heute verwende. Zu diesem Zeitpunkt habe ich angefangen auch etwas kompliziertere Anwendungen anzugehen und Erweiterungen zu älteren Projekten zu schaffen. Auswertungen zur Mitarbeiter-Datenbank, waren das erste wofür ich HTML::Template eingesetzt habe.

Das letzte Vierteljahr habe ich mich langsam mit OOP und Perl auseinandergesetzt. Die Hauptschwierigkeit ist für mich - mich mit Themen auseinanderzusetzen an denen ich früher einmal gescheitert bin. Ich habe mal drei Wochen lang in C++ Klassen für Stack und Queue auf Grundlage von verketteten Listen mit Zeigern programmiert. Das war wärend meiner Techniker-Ausbildung und das Ende all meiner C/C++ Bestrebungen. Okay, es hat zum Schluss funktioniert aber der Aufwand stand in keinem Verhältnis zum Ergebniss.

Jetzt überarbeite ich die Mitarbeiter-Datenbank. Eigentlich programmiere ich sie komplett neu. Der erste Schritt war die Trennung von Datenbankzugriff und dem Rest. Ich habe eine Klasse geschrieben die (noch unvollständig) sämtliche Zugriffe auf Tabellen der Datenbank übernehmen soll. Als Option für die Zukunft betrachte ich hier Class::DBI - aber jetzt wollte ich es erstmal selbst probieren. Der Konstruktor stellt die Verbindung zur Datenbank her und erzeugt ein Datenbankhandle. Sämtliche Zugriffe auf die Datenbank erfolgen dann über Objekt-Methoden.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package db_staff;
use YAML qw (LoadFile);
use DBI;

#
# Constructor
#

sub new {
 my $class = shift;
 $class = ref($class) || $class;
 my $self = {};
 $self->{dbh} = &connect_to_db();
 bless($self, $class);
 return $self;
}

#
# Helper
#

sub connect_to_db {
 my $config = LoadFile('conf/conf.yaml');
 my $dbh = DBI->connect ("DBI:mysql:host=$config->{db_host};database=$config->{db_database}",
  $config->{db_user}, $config->{db_pass}, {PrintError => 0, RaiseError => 1})
  or die "Failed to connect via DBI:$!\n";
 return $dbh;
}

# yada yada yada


Ich kann die selbe Klasse für das CGI verwenden, genauso wie um Excel-Sheets mit Spreadsheet::WriteExcel zu erzeugen, oder die Daten in einer TK-Applikation zu nutzen. Natürlich wäre das auch mit einem klassischen Modul möglich.

Ich denke ich werde sämtliche HTML bezogenen Dinge ebenfalls in eine Klasse stecken. Hier ist weniger der Vorteil dass ich es an mehreren Stellen verwenden kann, als dass ich eine saubere Trennung zwischen Datenbank, Applikation und Präsentation erreichen kann. Die eigentliche Applikation - das CGI - wird dadurch relativ kompakt und übersichtlich. Dies erhöht auch die Wartbarkeit zu einem späteren Zeitpunkt.

Wer es bis hier hin durchgehalten hat, fragt sich jetzt wo mein Problem den ist, oder? Ich suche Verbesserungsmöglichkeiten! mod_perl steht schon auf der TODO-Liste, aber ich denke das es noch das eine oder andere gibt was man verbessern kann. Mir geht es mehr um die Konzepte als die konkrete Implementierung. Ich würde mich freuen von euch zu hören, wie ihr solche Applikationen entwickelt.

Gruss,
Ronnie

View full thread Entwicklung kleiner bis mittlerer Webapplikationen: Entwicklungsmodell?