php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack (1) Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 25.09.2008, 17:01   1 links from elsewhere to this Post. Click to view. #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Welches Entwurfsmuster für Netzwerkprotokollklasse?

Servus,

ich hab hier ne kleine Denkblockade, ich muss in PHP eine Implementation eines Netzwerkprotolls schreiben.

Dazu benötige ich eine Klasse mit die die Connection zum Server handelt und viele kleine Klassen die einen Befehl an den Server senden und dessen Antwort verarbeiten.

Soweit lässt sich das alles wunderbar über das Verhaltensmuster "Command" lösen.
Jetzt stellt sich mir allerdings die Frage wie ich von außen an die Antworten komme.
Wäre es sinnvoll die Befehle per Factory zu instanzieren wobei die Factory gleichzeitig die Befehle speichert als History oder soll das ganze so bleiben und die Befehle einfach nur um eine weitere Methode erweitert werden welche die Antwort des Servers zurückgibt?

Für ein paar Anregungen das vernünftig umzusetzen wäre ich dankbar.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.09.2008, 13:33   #2 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo HStev,

ich würde in dieser Angelegenheit nicht krampfhaft nach einem Pattern suchen, sondern etwas mehr Pragmatismus walten lassen. Was du brauchst ist:

* Eine Basis-Implementierung, die dir den Rahmen deiner API bereitstellt
* Verschiedene Commands, die über deren API konfigurierbar sind
* Standardisierte Basis-API, mit der man zu jedem Command jeweils ein Answer ziehen kann um die Antwort auf die jeweilige Anfrage abfangen kann

Aussen drum noch ein bischen Exception- und Error-Handling und fertig.

Beispiel:
PHP-Code:
class SendDataCommand extends AbstractCommand
{
   ...
}

$conn = new NetworkLayer();
$comm = new SendDataCommand();
$comm->set*('...');
$conn->executeCommand($comm);
$ans $conn->getAnswer();
echo 
$ans->getMessage(); 
... oder wie auch immer!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 26.09.2008, 14:25   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ja so in der Art hab ich das ja auch nur ich hab das Problem das meine Connection Klasse gleichzeitig die Command History verwaltet ... und da jedes Command die Connection im Construktor mitbekommt hab ich praktisch ein Array was immer auf sich selber zeigt ... beim Debuggen mit print_r oder var_export bekomme ich immer die Meldung das die Verschaltelung zu tief wäre.

Dazu kommt noch das die Connection Class gleichzeitig Connection Handler, Command History Container und Command Factory ist und ich denke mir das in kein gutes Entwicklungskonzept.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Alt 26.09.2008, 14:37   #4 (permalink)
Erfahrener Benutzer
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.592
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von HStev Beitrag anzeigen
beim Debuggen mit print_r oder var_export bekomme ich immer die Meldung das die Verschaltelung zu tief wäre.
Wenn du auf ner Testumgebungs arbeitest, kannst du ja mal deinem php ein xdebug gönnen, var_dump sollte dann imstande sein solche Verschachtelungen zu erkennen und nicht in die Unendlichkeit abzudrifften.
robo47 ist offline   Mit Zitat antworten
Alt 26.09.2008, 14:48   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
kannst du ja mal deinem php ein xdebug gönnen
xdebug ist drinn nur leider versteht sich das Eclipse Debug Plugin nicht mit dem xdebug
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Alt 26.09.2008, 15:14   #6 (permalink)
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.624
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Eclipse mit PDT + XAMPP mit Xdebug - Developer's Guide
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 26.09.2008, 16:24   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

so ist es eingerichtet aber Eclipse hängt bei 19% Launching
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Alt 27.09.2008, 10:10   #8 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.138
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
und da jedes Command die Connection im Construktor mitbekommt
Warum muss das so sein? Wenn das Command doch der Connection übergeben wird (siehe mein Code), muss dass doch nicht im Konstruktor passieren, sondern der abstrakte Command kann dafür mit einem setConnection() aufwarten.

Anders gesprochen: um wirklich absolut sicher zu gehen, sollte der Command nicht direkt von der Connection abhängen. So ein Design wäre im HTTP-Protokoll z.B. fatal.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 28.09.2008, 13:08   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Warum muss das so sein? Wenn das Command doch der Connection übergeben wird (siehe mein Code), muss dass doch nicht im Konstruktor passieren, sondern der abstrakte Command kann dafür mit einem setConnection() aufwarten.
Ja ich hab das so gemacht da die Connection Klasse die grundsätzliche Kommunikation mit den Server verwaltet. Also die Klasse stellt Methoden bereit die das Command senden und die Raw Daten empfängt die wieder an das Command zurückgegeben werden wo dann die eigentliche Verarbeitung der Antwort stattfindet.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Alt 09.10.2008, 17:41   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Anders gesprochen: um wirklich absolut sicher zu gehen, sollte der Command nicht direkt von der Connection abhängen. So ein Design wäre im HTTP-Protokoll z.B. fatal.
das must du mir noch mal genauer erläutern ich versuche grad das ganze anzupassen und erstelle mir dazu grad erstmal das UML aber mir will nicht so ganz einleuchten wozu das Comm Objekt dient ... wenn das Command die Connection bekommt sagen wir mal durch setConnection dann hängt es doch auch nicht von der Connection ab.

Das einzigste wo ich sage das es ein Fehler war ist die Command History direkt in der Connection feszuhalten.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/software-design/47682-welches-entwurfsmuster-fuer-netzwerkprotokollklasse.html
Erstellt von For Type Datum
Adventure PHP Framework - Literatur This thread Refback 02.12.2008 15:17

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche nach Entwurfsmuster, ~singleton + x Zergling-new PHP-Fortgeschrittene 22 17.08.2007 18:05
php Entwurfsmuster (DAO) madhatter PHP-Fortgeschrittene 1 17.07.2006 23:25
Entwurfsmuster: Wrapper Klasse Zergling-new PHP-Fortgeschrittene 24 11.03.2006 03:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
netzwerk protokoll vorlage, entwurfsmuster netzwerk, projektprotokoll vorlage, das protokoll vorlagen 5 klasse, netzwerk protokoll muster, netztwerk protokoll vorlage, eclipse php muster, projektprotokoll muster klasse 10, protokoll muster klasse 10, welches entwurfsmuster, protokoll vorlage 10 klasse, php entwurfsmuster mehrere benutzer gleichzeitig, entwurfsmuster protokoll, muster netzwerk protokoll, protokoll vorlage klasse 5, software protokoll vorlage, php entwurfsmuster, vorlage netzwerkprotokoll, entwurfsmuster viele klassen, xdebug xampp eclipse hängt

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum