Abstracte zeep op vrijdagavond

Het nadeel van het aan elkaar knopen van al die online systemen (je weet wel ‘loocely coupled systems’) is dat als er eentje omvalt of onbereikbaar wordt, de anderen het vaak ook niet meer doen omdat ze van die ene afhankelijk zijn.

Vrijdagavond - Klik voor grotere versie Vrijdagavond - Klik voor grotere versie

Zo ook mijn “Who Is Online“-script waar ik gisteren over schreef. Daar wilde ik nog wat aan sleutelen, maar ik kreeg alleen nog maar een foutmelding. Het blijkt echter niet de Natschool-server te zijn die omgevallen is, maar de netwerkverbinding van Fontys zelf. Want ook de Fontys-website en de webmail liggen er uit. Eens kijken hoe lang het duurt voordat die weer up zijn. Het is tenslotte vrijdagavond. Er was een tijd dat dat betekende wachten tot maandagochtend 9 uur. Tegenwoordig is dat beter geregeld, maar het blijft natuurlijk een ondhandig tijdstip en een hogeschool kan zich nu eenmaal geen 24/7-uur systeembeheer veroorloven.
Dan maar even zo het verhaal over een extra laag die ik toegevoegd heb aan de communicatie met de webservices waardoor die een stuk eenvoudiger te benaderen zijn.

Natschool en Soap - Klik voor grotere versie

Zoals ik gisteren vertelde maak ik voor de communicatie tussen de ELO (Natschool)en mijn script gebruik van SOAP. Bij die communicatie gaat er steeds een redelijk complexe XML-structuur over de lijn, eerst met een verzoek (request) van mijn script naar de ELO en dan een antwoord (reponse) terug.

De structuren ga je niet helemaal met de hand ontleden en samenstellen. Afhankelijk van de gebruikte programmeertaal heb je daarvoor faciliteiten (commando’s) ingebouwd zitten die dat mogelijk maken.
Bij PHP4 (de taal die ik gebruik) is dat echter geen standaard ingebouwde mogelijkheid. Die kun je later toevoegen, maar dat gaat wat moeilijk als het niet je eigen server is.
NUSOAP is daar een oplossing/omweg voor. Het levert de benodigde functionaliteit namelijk in de vorm van een gewoon PHP-script dat je op waarschijnlijk elke server kunt gebruiken zonder wat te hoeven installeren.

De webservices die op het moment beschikbaar gesteld worden zijn in het algemeen bewust concrete beperkte handelingen. Het voordeel daarvan is dat het geheel flexibel blijft, het nadeel is dat je veel kleine stappen moet beschrijven. Je hebt dus bijvoorbeeld niet iets waarmee je kunt zeggen: “ga van huis naar het station”. Maar wel opdrachten als “ga links, ga rechts, ga rechtdoor”. In dat geval zul je een heleboel opdrachten moeten geven om bij het station te komen.

Soap zonder abstractielaag - Klik voor grotere versie

Hierboven zie je een voorbeeld van een stukje van de code.

Als je nu weet dat je een beperkt aantal van de beschikbare functionaliteiten wilt gebruiken, of een aantal van de beschikbaar gestelde functies altijd in combinatie of in een bepaalde volgorde wilt gebruiken, dan kun je een abstractielaag invoegen.

Soap met abstractie - Klik voor grotere versie

Het inloggen kost nu maar één (afhankelijk van hoe je telt zijn dat er twee) regel met code en het is klaar.

Natuurlijk is die complexere code niet echt weg. Die zit in een apart PHP-bestand waarnaar ik verwijs vanuit het PHP-script. Zodra je dat script beschikbaar zet zie je het voordeel:
* iedereen kan het lezen/vinden
* je hebt er zelf ook geen omkijken meer naar en loopt dus niet de kans dat je later nog nieuwe fouten introduceerd.

Het resultaat aan de buitenkant is hetzelfde. Intern liep het deze keer dus net wat anders.

Koppelingen - Klik voor grotere versie

Door dit nog verder uit elkaar te halen wordt het script niet sneller, maar je hebt het voordeel dat eenvoudiger te zien is wat je nodig hebt en/of wilt.

..wauw, typen van dit bericht (inclusief maken plaatjes en zo) duurde langer dan het weer in de lucht krijgen van de Fontys-websites en dus ook Natschool…en dat op een vrijdagavond… :-)