morpheus72 Geschrieben 1. August 2007 Teilen Geschrieben 1. August 2007 Hallo, ich habe mir für die Projektarbeit folgendes ausgewählt : wir haben einen Kunden der auf einem Windows Rechner mit Terminal-emulation Klinikbestellungen in Dateiform empfängt. Von diesem Rechner aus muss ein Programm Die Dateien öffnen den Empfänger in der Datei ermitteln und dann die Bestellungen auf verschiedene Server verteilen. Auf den Servern muss ein anderes Programm die Dateien öffnen , SQL-Abfragen auf unsere Warenwirtschaft durchführen, Kundennummern ermitteln, und dann eine Datei erstellen die unsere Schnittstelle verarbeiten kann. Ich würde beide Programme schreiben die a.) die Daten auf die Server verteilt , b.) die Dateien auf den Server in ein anderes Format umwandelt. Die Programme selbst werden über INI-Files konfiguriert, d.h. darin stehen die Poll-Zeiten , wann sich das Programm selbst beenden soll , wohin welche Dateien verteilt werden usw. Alle Aktionen sollen geloggt werden und die Dateien die Verarbeitet wurden sollen nach erfolgreicher Verarbeitung noch gezippt werden. Ich möchte das Projekt in Perl unter Windows realisieren und habe bei der Realisierung freie Hand ! Ist das ausreichend als Projekt ? gruß morpheus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 1. August 2007 Teilen Geschrieben 1. August 2007 Hallo, ich könnte mir schon vorstellen, dass das, wenn man es fachlich schön ausformuliert ausreichen würde. Ich persönlich würde das ganze zwar vielleicht, damit es auf jeden Fall durch den PA kommt es so machen: Datei vom Kunden hochgeladen -> parsen und in eine Datenbank z.B.mySQL schreiben Die Datenbank kannst Du nun entweder direkt z.B. per ODBC anzapfen oder, was ich viel eleganter finde, einen Dienst per SOAP zur Verfügung stellst, über den dann das WWS die passenden Daten selbstständig sucht, z.B. Stored Procedure innerhalb des WWS. Ich würde den Weg eher so gehen, da der Server, auf dem die Kundendatei liegt, ja wohl von außen erreichbar ist, somit ist es eine Sicherheitslücke, wenn dieser Server die anderen benachrichtigt, also aktiv die Verbindung aufbaut (meistens, wenn der Server in einer DMZ steht, kann er eh in das interne LAN keine Verbindung aufbauen). Darum müsste dann WWS aus dem LAN in die DMZ die Verbindung aufbauen, da meist der HTTP(s) Port offen ist und SOAP von HTTP gekapselt wird, musst Du Dir darüber dann keine großen Gedanken machen. Mit SOAP bist Du zusätzlich cross-plattform und es gibt fertige Komponenten (unter Win MS-SOAP ist ab dem 2000er Office dabei) für die Anbindung. Die Idee ist dann eben, die hochgeladene Datei schon in ein Resultset zu verwandeln und zur Verfügung zu stellen, dann kannst Du die Daten nämlich direkt in das WWS schreiben und musst Dich nicht um Datenformate (passende Typenbindung) kümmern. HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morpheus72 Geschrieben 1. August 2007 Autor Teilen Geschrieben 1. August 2007 Hallo Flash, viel zu kompliziert gedacht. Der Terminalrechner und die verschiedenen Server stehen alle bei dem Kunden. Die Rechner sind nach außen durch eine Sonicwall geschützt, die Administration macht und will "nur" der Kunde machen ! Der Rechner der die Klinikbestellung fallen läßt schreibt die Datei ins Dateisystem., d.h. ich brauch nur noch die Datei zu verarbeiten, bzw. zu verteilen. kein Internet dazwischen. Die Programme pollen die Verzeichnisse alle 60s. Direkt in die WWS zu schreiben würden die 70h bei weitem überschreiten. Denn aus der umgewandelten Datei , die dann der Kunde über unsere Schnittstelle weiterverarbeitet zur , Rechnung bzw. Lieferschein der dann auch gleichzeitig Bestände reduziert und Bestellungen auslöst werden so mal grob geschätzt 30 Tabellen angesprochen. aber Danke für die Anregung ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 1. August 2007 Teilen Geschrieben 1. August 2007 Hallo, Morpheus, viel zu kompliziert gedacht. Der Terminalrechner und die verschiedenen Server stehen alle bei dem Kunden. Die Rechner sind nach außen durch eine Sonicwall geschützt, die Administration macht und will "nur" der Kunde machen ! Sorry, nur zum Verständnis, d.h. der Kunde hat Terminal und seine Server im gleichen Subnetz? Bzw. Die Rechner sind alle vernetzt? Denn wenn ich hier vom Rechenzentrum ausgehe unsere Terminal-Server stehen in einer DMZ, auf das interne LAN komme ich nämlich vom TS nicht, dafür muss ich über einen zweiten gesonderten Rechner springen, der im Router nämlich das Recht hat ins interne LAN Verbindungen aufzubauen. Aber ich gehe davon aus, dass der Kunde alle Server in einem Subnetz hat. Der Rechner der die Klinikbestellung fallen läßt schreibt die Datei ins Dateisystem., d.h. ich brauch nur noch die Datei zu verarbeiten, bzw. zu verteilen. kein Internet dazwischen. Die Programme pollen die Verzeichnisse alle 60s. Was heißt hier "verteilen"? Wenn ich das so sehe, kommt doch die Bestellung auf einem Rechner an, soll dort aufbereitet werden, und dann an die andere Rechner "gesendet" werden. Ich meine was setzt Du dafür ein !? Welche Protokolle? Genau hier würde auch meine Frage ansetzen (und genau so Fragen wurden mir bei der Prüfung gestellt), wie sicher ist die Übertragung. Deswegen der Vorschlag mit SOAP, da Du hier einfach auf HTTP+SSL setzen kannst und dir darüber keine Gedanken machen musst. Ich verstehe noch nicht was Du mit "pollen" meinst? Ich würde hier die Fragen stellen, warum muss ein "Programm" alle 60s schauen, ob da ne Datei ist, vor allem auch hier die Frage "Sicherheit": Nehmen wir an, Datei wird hochgeladen, es sind erst 5 kByte in der Datei geschrieben, Dein Programm sieht, wunderbar, da ist ne Datei und beginnt sie zu verarbeiten, welchen Stand sieht dann später den WWS? Wie kannst Du sicherstellen, dass die Datei vollständig vorhanden ist, bevor Dein Programm sie verarbeitet? Auch hier ein Bsp aus PHP: Du könntest ein Webform realisieren, dass die Datei entgegen nimmt und sobald sie da ist, die Verarbeitung anstoßen. Direkt in die WWS zu schreiben würden die 70h bei weitem überschreiten. Denn aus der umgewandelten Datei , die dann der Kunde über unsere Schnittstelle weiterverarbeitet zur, Rechnung bzw. Lieferschein der dann auch gleichzeitig Bestände reduziert und Bestellungen auslöst werden so mal grob geschätzt 30 Tabellen angesprochen. Also bei meinem Projekt war ich mit 58 Tabellen dabei (habe eben noch mal nachgeschaut). Meine Frage bzw. mein Vorschlag zielte darauf ab, warum setzt Du nicht auf bekannte Schnittstellen. Welche Kommunikation (Berechtigungen) musst Du zwischen den Servern beachten bzw. evtl selbst realisieren? Welche Schnittstellen hat Euer WWS? Warum verwendest Du nicht eine vorhandene Schnittstelle bzw. erweiterst diese? Versteh das jetzt bitte nicht falsch, aber für mich hört sich das ein bisschen danach an, Kunde läd Textdatei (CSV) hoch, Programm nimmt die Textdatei und schreibt sie nur in eine ander Textdatei um, Datei wird per Copy auf ein anderes Verzeichnis kopiert, Datei wird vom WWS gelesen und verarbeitet. Würde mich über eine Antwort freuen HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morpheus72 Geschrieben 1. August 2007 Autor Teilen Geschrieben 1. August 2007 Hallo flash, Hallo, Morpheus, Sorry, nur zum Verständnis, d.h. der Kunde hat Terminal und seine Server im gleichen Subnetz? Bzw. Die Rechner sind alle vernetzt? Denn wenn ich hier vom Rechenzentrum ausgehe unsere Terminal-Server stehen in einer DMZ, auf das interne LAN komme ich nämlich vom TS nicht, dafür muss ich über einen zweiten gesonderten Rechner springen, der im Router nämlich das Recht hat ins interne LAN Verbindungen aufzubauen. Aber ich gehe davon aus, dass der Kunde alle Server in einem Subnetz hat. Den Netzwerkaufbau des Terminals / AS400 System sind mir nicht im Detail bekannt. Grob habe ich das ganze im PDF dokumentiert. Was heißt hier "verteilen"? Wenn ich das so sehe, kommt doch die Bestellung auf einem Rechner an, soll dort aufbereitet werden, und dann an die andere Rechner "gesendet" werden. Ich meine was setzt Du dafür ein !? Welche Protokolle? Genau hier würde auch meine Frage ansetzen (und genau so Fragen wurden mir bei der Prüfung gestellt), wie sicher ist die Übertragung. Deswegen der Vorschlag mit SOAP, da Du hier einfach auf HTTP+SSL setzen kannst und dir darüber keine Gedanken machen musst. Ist Zustand des Kunden ist zur Zeit : Klinik löst eine Bestellung aus , Auf dem Drucker (angeschlossen am Terminal) in der Apotheke kommt ein Blatt Papier mit den Bestelldaten raus. Die Bestellung beinhaltet die Station und die Positionen die bestellt werden. Abhängig von der Station die bestellt, werden jetzt die Bestellpositionen händig in die WW eingedaddelt. Das einzige was geändert wird auf der AS400 Seite , dass anstatt ein Blatt Papier gedruckt wird, eine Datei erstellt wird. Ich verstehe noch nicht was Du mit "pollen" meinst? Ich würde hier die Fragen stellen, warum muss ein "Programm" alle 60s schauen, ob da ne Datei ist, vor allem auch hier die Frage "Sicherheit": Nehmen wir an, Datei wird hochgeladen, es sind erst 5 kByte in der Datei geschrieben, Dein Programm sieht, wunderbar, da ist ne Datei und beginnt sie zu verarbeiten, welchen Stand sieht dann später den WWS? Wie kannst Du sicherstellen, dass die Datei vollständig vorhanden ist, bevor Dein Programm sie verarbeitet? Auch hier ein Bsp aus PHP: Du könntest ein Webform realisieren, dass die Datei entgegen nimmt und sobald sie da ist, die Verarbeitung anstoßen. alle 60s schauen ob da eine Datei ist seh ich nicht als Problem, wenn eine Datei gefunden wurde, kann ich 2s warten und mir nochmal die Erstellungszeit der Datei anschauen und vergleichen ob sich die Zeit verändert hat oder gleich geblieben ist, daß sollte nicht das Problem sein. Aber ! Beim Kunden einen Webserver zu installieren finde ich in diesem Fall mit Kanonen auf Spatzen geschossen, da die Kommunikation ja "intern" stattfindet. Perl kann man auch einsetzen ohne Webserver und ist in diesem Fall echt Klasse und schnell. Also bei meinem Projekt war ich mit 58 Tabellen dabei (habe eben noch mal nachgeschaut). Meine Frage bzw. mein Vorschlag zielte darauf ab, warum setzt Du nicht auf bekannte Schnittstellen. Welche Kommunikation (Berechtigungen) musst Du zwischen den Servern beachten bzw. evtl selbst realisieren? Welche Schnittstellen hat Euer WWS? Warum verwendest Du nicht eine vorhandene Schnittstelle bzw. erweiterst diese? Der Kunde geht wenn die Dateien von mir verarbeitet wurden, in sein Rechnungsprogramm ruft den Punkt "Fremdabverkauf" auf und schon bekommt er alle Rechnungen (Dateien) und deren Positionen zur Auswahl angezeigt. Wählt diese aus, und finito. Versteh das jetzt bitte nicht falsch, aber für mich hört sich das ein bisschen danach an, Kunde läd Textdatei (CSV) hoch, Programm nimmt die Textdatei und schreibt sie nur in eine ander Textdatei um, Datei wird per Copy auf ein anderes Verzeichnis kopiert, Datei wird vom WWS gelesen und verarbeitet. Würde mich über eine Antwort freuen HTH Phil versteh ich nicht falsch, deshalb hab ich ja gefragt was andere darüber denken. Ich arbeite in einer Abteilung die sich zu 95% mit Reverse Engineering beschäftigt, d.h. wenn ein Kunde unsere Software kauft schaue ich wie wir an die Daten kommen um unsere WW zu füttern. Dabei müsssen wir auch oftmals binär auf die Dateien zugreifen, viele Systeme arbeiten noch mit ISAM-Dateien unter unix/linux. Vielleicht wäre ja sowas ein Projekt. Wieviele Stunden sollte die "reine" Programmierung ausmachen ? Gruß und Danke morpheusGrob_Zeichnung.pdf Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 1. August 2007 Teilen Geschrieben 1. August 2007 N'Abend Morpheus, Den Netzwerkaufbau des Terminals / AS400 System sind mir nicht im Detail bekannt. Grob habe ich das ganze im PDF dokumentiert. Ist Zustand des Kunden ist zur Zeit : Klinik löst eine Bestellung aus , Auf dem Drucker (angeschlossen am Terminal) in der Apotheke kommt ein Blatt Papier mit den Bestelldaten raus. Die Bestellung beinhaltet die Station und die Positionen die bestellt werden. Abhängig von der Station die bestellt, werden jetzt die Bestellpositionen händig in die WW eingedaddelt. Das einzige was geändert wird auf der AS400 Seite , dass anstatt ein Blatt Papier gedruckt wird, eine Datei erstellt wird. Okay, d.h. auf der AS400 liegt nun eine Datei mit Daten, ich stelle mir das mal wie eine CSV Datei vor. alle 60s schauen ob da eine Datei ist seh ich nicht als Problem, wenn eine Datei gefunden wurde, kann ich 2s warten und mir nochmal die Erstellungszeit der Datei anschauen und vergleichen ob sich die Zeit verändert hat oder gleich geblieben ist, daß sollte nicht das Problem sein. Das kann ich nicht so beurteilen, aber wenn ich mir das hier im RZ anschaue, 2s sind bei uns eine lange Zeit, teilweise habe ich schon extrem viele veränderte Daten. Sorry, habe nie mit einer AS400 gearbeitet. Aber ! Beim Kunden einen Webserver zu installieren finde ich in diesem Fall mit Kanonen auf Spatzen geschossen, da die Kommunikation ja "intern" stattfindet. Was heißt "intern"?? Ich habe nun eine Datei auf der AS400 und was passiert nun. Nach den vorher gehenden Posts, läuft das WWS auf anderen Server, wie bekommen die WWS Server die Daten aus der Datei? Perl kann man auch einsetzen ohne Webserver und ist in diesem Fall echt Klasse und schnell. Kann ich bei PHP auch. Man kann als Webserver auch fertige Pakete einsetzen (MAMP, LAMP, WAMP). Der Kunde geht wenn die Dateien von mir verarbeitet wurden, in sein Rechnungsprogramm ruft den Punkt "Fremdabverkauf" auf und schon bekommt er alle Rechnungen (Dateien) und deren Positionen zur Auswahl angezeigt. Wählt diese aus, und finito. Dieser Schritt findet auf dem WWS statt, oder? Aber hier fehlt noch der Schritt von der hoch geladenen Datei, die verändert wurde zum WWS? Ich arbeite in einer Abteilung die sich zu 95% mit Reverse Engineering beschäftigt, d.h. wenn ein Kunde unsere Software kauft schaue ich wie wir an die Daten kommen um unsere WW zu füttern. Mein Betrieb hatte noch mit Cobol-Altlasten zu kämpfen. Also eine Konvertierung, also von Cobol-Daten in das neue DBMS wurde vom PA, genauso wie einen komplexere Report, der mehrere Daten aus verschiedenen Tabellen zusammen trägt (er wirklich recht komplex), mit "es fehlt die fachliche Tiefe) abgelehnt. Für mich klingt das immer noch sehr nach Daten aus der einen Textdatei in die andere konvertieren, so dass es passt. Wo ist dann, die in dem Projekt geforderten Entscheidungen, oder die verschiedenen zu diskutierenden Lösungsstrategien? Dabei müsssen wir auch oftmals binär auf die Dateien zugreifen, viele Systeme arbeiten noch mit ISAM-Dateien unter unix/linux. Was heißt "binär"? Für ISAM Dateien (es sind ja eigentlich Dateien, die auch von mySQL verarbeitet werden können), gibt es eine definierte Schnittstelle mit der man die Daten als Tabellen ansprechen kann (jedenfalls nach meinem Wissen). Ich kann mir nicht vorstellen, dass Du selbst mit einem Parser durch die Dateien gehen musst und soweit ich weiß, sind doch die ISAM Dateien Textdateien und keine binär Dateien. In meinem Projekt mussten verschiedene Lösungsansätze für das Problem diskutiert werden und die "wirtschaftlichste" habe ich dann genommen. Zusätzlich musste ein ERD und GUI Design mit kompletter Rechteverwaltung dazu. Meine Datenübertragungsschnittstelle war multithreading programmiert, weil ich schnell große Datenmengen hin und her bewegen musste. Die Schnittstelle war komplett OOP. Zusätzlich musste ich mir noch einen zeitnahen Abgleich einfallen lassen, da die Daten annährend Echtzeit aus der einen in die andere Datenbank übertragen werden musste. Wieviele Stunden sollte die "reine" Programmierung ausmachen ? Also ich habe die offiziellen Stunden verbraten, habe mich danach gehalten was uns der Lehrer empfohlen hat. Wenn wir von realer Zeit sprechen, dann gehe mal locker von dem doppelten bis dreifachen aus. Ich habe mich da sehr an meinen Lehrer gehalten und mich haben sie mit dem Thema "Testverfahren" bekommen ;-( Kannst Du ggf. auch mal per ICQ melden, wenn Du mehr Infos brauchst Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.