[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Hallo Andreas,
    ich würde gerne auf eine weitere Technologie, in der sich bei uns keiner auskennt (Python), verzichten.

    Eine schöne Webservice Lösung in nativem RPG fände ich toll.

  2. #14
    Registriert seit
    Nov 2020
    Beiträge
    331
    Hi Dieter,

    Das verstehe ich auch sehr gut.
    Ergänzend sei hier nur angemerkt, dass die Kunden bei denen ich es im Einsatz habe sich ebenfalls großteils nicht mit Python auskennen.
    Ich habe ihnen das Grundgerüst installiert und der Rest ist Copy/Paste wodurch man sich auf das SQL konzentrieren kann.
    Somit war es für die Kollegen einfacher dort eine Änderung/Erweiterung durchzuführen als PHP, Java oder IWS ... so wie ja auch bei deinem Beispiel jetzt :-)
    Außerdem verwende ich Python nur für die Schnittstelle zur Web-Welt. Alles andere bleibt in SQL/RPG.

    Auch das Generieren oder Auslesen von JSON/XML ist ein 1 Zeiler.
    Ich bin ein Fan von SQL und RPG, jedoch im Vergleich zu (z.B.) Python benötigt man viel mehr Aufwand und ist viel komplexer ein JSON/XML.

    Ich sag nur, dass ihr immer wieder in Zukunft in solche Sackgassen kommen werdet und dann viel Aufwand betrieben wird dort wieder raus zu kommen.
    Ist natürlich immer eine Frage von Kosten/Nutzen und ob man das ganze langfristig betreiben will (Stichwort: Nachwuchs), oder nur bis zur Ablöse irgendwie am Leben erhalten möchte.

    Ich beschäftige mich seit sehr langer Zeit, sehr viel mit WebServices. Wenn ich einen alternativen Hinweis für dein Problem hier hätte, würde ich ihn dir gerne liefern.

  3. #15
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Vielen Dank für deine ehrliche Antwort, Andreas.

    Wenn ich deine Lösung richtig verstehe, sähe es folgendermaßen aus:

    1. Jemand (z.B. Du) installiert ein bisschen Software auf unserem System. Damit müssten wir uns nicht rumschlagen.
    2. Wir zusammen würden (sehr kleine) Python Scripte erstellen, die uns den "Webservice-Kram" vom Hals halten. In so einem Script (was man einfach kopieren und anpassen kann) können SQL-Anweisungen ausgeführt werden.
    3. Die Scripte können Clobs oder Blobs zurückliefen.
    4. Ich nehme mal an, dass wir den IWS dann nicht mehr brauchen würden. Es würde je Service ein Python Script erstellt und als SBMJOB ausgeführt?
    5. Die Jobs könne ich debuggen (ich meine nicht das Python, sondern das, was im SQL aufgerufen wird (UDF, RPG). Oder läuft das in einer "merkwürdigen" Umgebung, wo man nicht rankommt?


    Habe ich das grob so korrekt verstanden?

  4. #16
    Registriert seit
    Nov 2020
    Beiträge
    331
    @1: Genau, entweder habt ihr jemanden mit Erfahrung mit Python, ansonsten unterstütze ich gerne

    @2: Genau, im Prinzip ist es immer der gleiche Aufbau:
    • Funktion erstellen (z.B. hier get_active_jobs(subsystem))
    • Die gewünschte Route (URL-Pfad) dafür festlegen (@app.route)
    • Funktions-Code selbst


    cnxn = pyodbc.connect('DSN=*LOCAL')
    cursor = cnxn.cursor()


    @app.route('/get-active-job/', methods=['GET', 'POST'])
    def get_active_jobs(subsystem):

    cursor.execute("Select job_name, subsystem, job_type, thread_count, cpu_time, function_type, FUNCTION, job_status \
    from table(QSYS2.ACTIVE_JOB_INFO(SUBSYSTEM_LIST_FILTER=>upper(?))) t", subsystem)

    rows = cursor.fetchall()

    return jsonify(result)



    Diesen Block kannst du kopieren. Statt SELECT kannst du auch einen CALL absetzen (dadurch auch RPG direkt aufrufen) ... halt alles was SQL unterstützt.

    @3: CLOB & Co sind kein Problem. Hab ich auch in Verwendung. Python & ODBC handeln das automatisch.

    @4: Genau, kein IWS. Man kann (und sollte) einen vorgelagerten Webserver verwenden (Apache oder NGINX).
    Dieser leitet die Anfragen weiter an den Applikation Server (Python).
    Ist beim IWS genauso. Dadurch können im WebServer diverse Konfigurationen vorgenommen werden, wie Berechtigungen und Verschlüsselung (HTTPS) und der Applikations Server braucht sich nur um die Verarbeitung kümmern.

    Du kannst die Funktionen in diverse Skripts verteilen (am Besten mit entsprechender Ordnerstruktur je Bereich).

    Grundsätzlich können die unterschiedlichen Requests alle unter dem gleichen Applikations-Server laufen.
    Man kann aber auch mehrere WebServer und/oder mehrere Applikations-Server verwenden wenn man will. Es muss halt die Python App (das Grundgerüst) mehrfach kopiert werden.

    @5: Zunächst gibt es die Möglichkeit vom Logging. Du kannst alles im Python in ein Log ausgeben lassen.
    Für mich reicht das aus um damit den SQL Aufruf nachzustellen und ggf. interaktiv zu debuggen.
    Ansonsten verbindet sich Python via ODBC mit der DB2. Dadurch sind das normale Jobs in der QUSRWRK.
    Um diese Jobs direkt zu debuggen gibt es mehrere Möglichkeiten. Man könnte z.B. im RPG ein DSPLY mit Antwort-Aufforderung einbauen. Dadurch steht der Job auf MSGW und man kann sich via STRSRVJOB verbinden und mit STRDBG debuggen.

    In der Regel reicht jedoch das Logging aus. Im IWS hab ich ja gar kein Logging, bis auf das was der IWS von sich aus ausgibt.

  5. #17
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Als weitere Alternative wird auch Node.js unterstützt. Hier ist die Unterstützung genauso native und die Node.js-Community ebenso groß.
    Es kommt ja immer nur darauf an, die richtigen Externen Mitarbeiter zu finden, die einem die Probleme abnehmen. Ich lebe davon seit 1997.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #18
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Vielen Dank an euch beide!

    Ich werde das hier mal ansprechen. Mal sehen, ob wir einen der er beiden Wege gehen.

  7. #19
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Node.js läuft native auf der IBM i, ein zusätzlicher Web-Server ist nicht erforderlich, da Node.js Web-Requests behandeln kann, genauso auch wie auch DB-Zugriffe.
    Man braucht auch keine Angst vor Performance haben. Mein Kunde betreibt einen Web-Shop, der 1000de JSON-Abfragen sowie Order-Uploads pro Minute schafft, ohne die ERP-Software zu beeinträchtigen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #20
    Registriert seit
    Nov 2020
    Beiträge
    331
    Node.js wird genauso wie Python oder mittlerweile auch PHP über die Open Source Produkte (YUM) installiert.

    Einen eigenen Webserver zu verwenden hat nichts mit der Sprache zu tun. Keine Sprache verlangt dies. Der eigene Webserver hat security technischen Hintergrund, zur Abtrennung zwischen der Web-Welt und der App.
    Deshalb hab ich oben geschrieben "Man kann (und sollte)". Es ist ein schlechtes Design wenn man HTTP Konfigurationen (z.B. SSL mit Zertifikaten) in die Applikation einbaut. Das wird auch überall so empfohlen, selbst bei internen WebApps.

    Node.js hab ich früher auch benützt und sogar Schulungen gehalten.
    Bis zum Zeitpunkt als während einer Schulung ein Kunde ein Update benötigt hat, was darauf zur Folge hatte, dass danach gesamt Node.js nicht mehr funktionierte.
    Kein Downgrade oder neu installation von Node.js hat dabei geholfen. Das ging soweit, dass auch Profound (welches auch Node.js verwendete) nicht mehr funktionierte. Das BackUp für die gesamte Partition musste her. (Zum Glück alles "nur" auf der Dev).
    Der Erfinder von Node.js hat später dann Deno ins Leben gerufen, da es mit Node.js in einigen Punkten Probleme gab. Bei Deno meinte er, habe er alle Fehler, die er bei Node.js gemacht habe, beseitigt.

    Das schöne an Python ist, es ähnelt in einigen Punkten RPG.
    Es hat sehr viele einfache Features, wodurch man sich viel Code ersparen kann und es auch sehr schnell ist.
    Möchte ich eine Sprache mit super Performance wo ich jeder Millisekunde
    hinterher weine, würde ich in Rust bzw. auf der IBM i sowieso RPG nehmen.

  9. #21
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Nochmals danke für eure Ausführungen. Man lernt nie aus.

    Ich spreche das bei uns an.

  10. #22
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Somit geht es Node.js wohl so wie vielen anderen Produkten (Siverlight, Flash, ...) auch.
    Viel verprochen aber wohl nicht ausgereift genug. Und wenn es dann noch nur von Einem abhängt umso schlimmer.
    Ich nutzer eher pur Java, das hat sich über die Jahrzehnte auch nach Updates äußerst stabil erwiesen.
    In wie weit es da auch entsprechende JSONServerunterstützung gibt weiß ich auch nicht.
    Aber wie so oft auf der IBM i, es gibt viele Wege.

    Ich warte immer noch auf eine .Net-Core (früher Framework) Implementation auf der IBM i.
    Schließlich gibts das schon für Mac, Android, IOS, Linux.
    Da könnte man dann mal tatsächlich Komponenten entwickeln, die überall laufen können.
    Mal sehen, wie lange sich IBM da noch wehrt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #23
    Registriert seit
    Feb 2017
    Beiträge
    43
    Bin grade über den Thread hier gestolpert.. Aber unter HTTPS ist doch alles bis auf der Host in der URL verschlüsselt. Also ein GET ist genauso verschlüsselt wie jede andere HTTP Methode.

  12. #24
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Zitat Zitat von manuel.marcos Beitrag anzeigen
    Bin grade über den Thread hier gestolpert.. Aber unter HTTPS ist doch alles bis auf der Host in der URL verschlüsselt. Also ein GET ist genauso verschlüsselt wie jede andere HTTP Methode.
    Ich glaube, ich verstehe deinen Beitrag nicht. Verschlüsselung war hier nie ein Problem, denke ich.

Similar Threads

  1. IWS Server mit SQL und Multirow JSON/XML als Input
    By Andreas_Prouza in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 18-01-23, 14:30
  2. IWS nested JSON bei POST Aufruf mit SQL verarbeiten
    By ismiavoiwuascht in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-10-21, 21:17
  3. HTTPS Aufruf mit JSON Input
    By derMuller in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-17, 11:05
  4. Parameternamen bei Webservice REST im JSON-Format
    By Flappes in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 01-06-17, 08:01
  5. Abstimmung_neu:Server-Based-Computing
    By Burgy Zapp in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 17-12-01, 01:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •