SlideShare uma empresa Scribd logo
1 de 27
1
Prof. Dr. rer. nat. Claus Brell, Wirtschaftsinformatik, Forschungsinstitut GEMIT
(Geschäftsprozessmanagement & IT), Kompetenzzentrum CLAVIS
(Informationssicherheit) Hochschule Niederrhein.
Mail: claus.brell@hs-niederrhein,de , Twitter: https://twitter.com/clausbrell
Web: https://cbrell.de , https://cbrell.de/naturwatch , http://claus-brell.de
Webservices
2Motivation: Warum Webservices?
1 geheim: Algorithmen, die betriebswirtschaftliche wertvolles Know-How
enthalten, können vor dem Nutzer versteckt werden.
2 billiger betreiben: Wartung, Leistungsskalierung und Rollout sind für
Webservices einfach.
3 mehrfach nutzen: Webservices können ggf. in mehreren
Anwendungssystemen gemeinsam verwendet werden.
4 robust: Die Verteilung komplexer Anwendungen auf lose gekoppelte
Komponenten erhöht i.d.R. die Robustheit.
5 HR: Personen mit unterschiedlichen Kompetenzen können an der
Entwicklung beteiligt werden.
3z.B. AJAX: asynchrone Kommunikation mit Webservices
HTML
Browser, Client
CSS
Webserver
http
Java-
script
jQuery
PHP
node.js
Java-
script
.NETJava
.NET
JavaJEE
REST
SOAP
TCP / IP
Websockets
4z.B. AJAX: asynchrone Kommunikation mit Webservices
Asynchronous JavaScript and XML (AJAX) ist ein Konzept der asynchronen
Kommunikation zwischen Browser und Webserver über http.
XML kann, muss aber nicht.
Häufig: JSON.
Häufig: Webservice in PHP (79 % aller Internetseiten)
Client (Javasript-Programm im Browser) stellt eine Anfrage an den
Webservice (PHP-Programm auf dem Webserver).
Der Webservice „tut“ etwas (Berechnung oder Datenbankabfrage oder ...).
Das Ergebnis wird an den Client zurück übertragen.
Bei asynchroner Kommunikation: Client kann auf Eingaben reagieren,
während auf Antwort gewartet wird.
5
Java-
script
z.B. .NET Client: synchrone Kommunikation mit Webservices
HTML
Browser, Client
CSS
Webserver
http
jQuery
PHP
node.js
Java-
script
.NETJava
.NET
JavaJEE
REST
SOAP
TCP / IP
Websockets
6z.B. .NET Client: synchrone Kommunikation mit Webservices
Der gleiche Webservice wie für AJAX kann von einem .NET Client genutzt
werden.
Der Client (.NET-Konsolen-Programm) stellt eine Anfrage an den Webservice
(PHP-Programm auf dem Webserver).
Der Webservice „tut“ etwas (Berechnung oder Datenbankabfrage oder ...).
Das Ergebnis wird an den Client zurück übertragen.
Bei synchroner Kommunikation: Client wartet auf Rückmeldung des Servers
und reagiert nicht auf Eingaben.
7Anwendungsbeispiel BMI-Rechner
BMI (Body Mass Index) ist ein Indikator, ob eine Person normalgewichtig,
untergewichtig oder übergewichtig ist.
BMI wird berechnet aus der Körperlänge in m und dem Gewicht in kg mit
BMI=mit Körpergewicht/(Körperlänge zum Quadrat)
Typischerweise liegt der BMI zwischen 20 und 26.
Im Anwendungsbeispiel wird die Berechnung im Webservice ausgeführt.
Der Webservice wird in PHP programmiert.
Verwendet wird der Webservice von einem HTML-Formular und einem .NET-
Konsolenprogramm.
8Beispiel BMI-Rechner-Webservice in PHP
9Beispiel BMI-Rechner-Webservice in PHP
<?php
$cm=$_GET['cm']; //1
$m=$cm/100;
$kg=$_GET['kg'];
$bmi=$kg/$m/$m; //2
echo $bmi; //3
?>
//1 In der URI übergebener Parameter steht in der Servervariablen
$_GET. $_GET ist ein Array mit den Variablennamen als Keys. Der
Inhalt wird einer „normale“ Variable $cm zugewiesen.
//2 Der BMI wird berechnet mit Körpergewicht/Körperlänge^2 und der
Variablen $bmi zugewiesen.
// 3 mit echo wird der BMI zurückgegeben.
10bmirechnerWS.php mit dem Browser testen
11bmirechnerWS.php mit dem Browser testen
bmirechnerWS.php benötigt eine Laufzeitumgebung.
Ein Webserver mit PHP-Modul ist eine solche Laufzeitumgebung.
bmirechnerWS.php muss in das Dokumentenverzeichnis des Webservers
geladen werden.
bmirechnerWS.php kann dann im Browser direkt getestet werden mit
http://<serveradresse>/<verzeichnis>/bmirechnerWS.php?cm=190&kg=85
Die Aufrufparameter werden in der URI mit „cm=190“ festgelegt.
Mehrere Parameter werden durch „&“ getrennt.
Hinter dem Dateinamen des Webservices steht ein „?“ vor den Parametern.
12bmirechnerWS.php mit einem HTML-Formular testen
13bmirechnerWS.php mit einem HTML-Formular testen - Topologie
Webserver
bmiformular.htmlBrowser
bmirechnerWS.php
14bmirechnerWS.php mit einem HTML-Formular testen –
Use Case Diagramm
BMI-Rechner
Gewicht und Größe
eingeben
BMI ablesen
Nutzer
15bmirechnerWS.php mit einem HTML-Formular testen –
Ablauf aus Sicht des Nutzers (eEPK)
Nutzer möchte
BMI berechnen
Seite aufrufen
Seite geladen
Daten eintragen,
absenden
Skript ist
aufgerufen
BMI berechnen,
zurücksenden
BMI ist
berechnet
Nutzer
bmiformular.html
Nutzer
bmiformular.html
Nutzer
bmirechnerWS.php
16bmirechnerWS.php mit einem HTML-Formular testen
Der BMI-Rechner besteht aus zwei Komponenten: einem PHP-Skript und
einer HTML-Seite, mit der das Skript bequem aufgerufen werden kann.
Der Nutzer lädt die HTML-Datei von einem Webserver, trägt die Parameter
Gewicht und Körpergröße in das HTML-Formular ein und drückt den
„absenden“-Button.
Dadurch wird das PHP-Skript aufgerufen und die Parameter an das PHP
Skript übergeben.
Das Skript berechnet den BMI.
Die Ausgabe des Skriptes (der BMI als Fließkommazahl) wird an den
Browser zurückübertragen und angezeigt.
17Komponentenbasiertes System aus .NET-Client und PHP-Script –
Topologie
Webserver
.NET
Konsolen-
programm
bmirechnerWS.php
18Komponentenbasiertes System aus .NET-Client und PHP-Script –
Ansicht des Client-Bildschirms (Windows Konsole)
19C# Quelltext
20C# Quelltext
Rahmen
using System;
using System.Net;
using System.IO;
namespace bmiClient
{
class Program
{
static void Main(string[] args)
{
..... Inhalt der Methode Main
}
}
}
21C# Quelltext
Inhalt der Methode Main
WebClient myClient = new WebClient();
string url = "https://cbreXXXXXXXXXXXXXXXX/bmirechnerWS.php?";
Console.WriteLine("BMI Rechner Clientrn##################");
Console.WriteLine("Gewicht in kg eingeben:");
string kg=Console.ReadLine();
Console.WriteLine("Größe in cm eingeben:");
string cm = Console.ReadLine();
string parameter="kg="+kg+"&cm="+cm;
Stream data = myClient.OpenRead(url+parameter);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
data.Close();
reader.Close();
Console.WriteLine("Ihr BMI: "+s);
Console.ReadKey();
22C# Quelltext
Erläuterungen
Das Programm enthält nur den Code, der für das Funktionieren erforderlich
ist.
Es werden keine Fehler abgefangen.
Der Zugriff auf den Webservice erfolgt synchron.
1. Ein Objekt für den Internetzugriff wird erzeugt:
WebClient myClient = new WebClient();
Dazu wird der Namensraum using System.Net benötigt.
2. In der Variablen url wird die Internet-Adresse des Webservice gespeichert:
string url = "https:// .......
3. Programmzeilen der Form
Console.WriteLine("BMI .....
geben etwas auf dem Bildschirm aus.
23C# Quelltext
Erläuterungen
4. Mit ReadLine werden zeilenweise Eingaben eingelesen:
string kg=Console.ReadLine();
5. Für die Verbindung zum Webservice wird ein Handle data benötigt und
damit ein lesender Zugriff mit dem Handle reader eröffnet:
Stream data = myClient.OpenRead(url+parameter);
StreamReader reader = new StreamReader(data);
6. Die Rückgabe des Webservice wird in die Variable s gelesen:
string s = reader.ReadToEnd();
7. Alle Verbindungen werden wieder geschlossen:
data.Close();
reader.Close();
24C# Quelltext
Erläuterungen
8. Das Ergebnis wird mit Führungstext auf der Konsole ausgegeben:
Console.WriteLine("Ihr BMI: "+s);
9. Damit sich das Konsolenfenster nicht sofort schließt, wartet das Programm
auf einen Tastendruck:
Console.ReadKey();
25Noch nicht behandelt: asynchrone Zugriffe
Webservices sollten über synchrone Zugriffe angesprochen werden.
Ein asynchroner Zugriff kann insbesondere bei komplexeren
komponentenbasieren Anwendungssystemen die Robustheit erhöhen.
Asynchroner Zugriff auf einen Webservice über eine HTML-Seite mit
Javascript: AJAX.
Asynchroner Zugriff auf einen Webservice aus .NET: Webzugriff in einen
Arbeitsthread auslagern.
26Lesenswert
1. HTML lernen: de.selfhtml.org
2. PHP lernen: www.selfphp.de
3. Arbeiten mit der WebClient-Klasse: https://docs.microsoft.com/de-
de/dotnet/api/system.net.webclient?view=netframework-4.7.2
27(Verständnis-) Fragen
1. Warum kann es sinnvoll sein, Komponenten eines Anwendungssystems
auf Client-Rechner und Webservices zu verteilen?
2. Wie kann ein einfacher Webservice programmiert werden?
3. Was ist der Vorteil bei der Programmierung des Clients, wenn man
Webservices einsetzt?
4. Was ist der Unterschied zwischen synchronen und asynchronen Zugriffen
auf Webservices?

Mais conteúdo relacionado

Semelhante a Webservices - was ist das und wie programmiert man sie

CMS und E-Mail-Marketing verbinden
CMS und E-Mail-Marketing verbindenCMS und E-Mail-Marketing verbinden
CMS und E-Mail-Marketing verbindenTWT
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaQAware GmbH
 
Best practise 5 anwendungsfälle der google analytics api
Best practise 5 anwendungsfälle der google analytics apiBest practise 5 anwendungsfälle der google analytics api
Best practise 5 anwendungsfälle der google analytics apie-dialog GmbH
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservicesxxtesaxx
 
Xybermotive vorstellung (de) 112014
Xybermotive vorstellung (de) 112014Xybermotive vorstellung (de) 112014
Xybermotive vorstellung (de) 112014Hans-Chr. Brockmann
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickClaus Brell
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous IntegrationMilena Reichel
 
Web Content-Management-Systeme the Past - the Present - the Future
Web Content-Management-Systeme the Past - the Present - the FutureWeb Content-Management-Systeme the Past - the Present - the Future
Web Content-Management-Systeme the Past - the Present - the FutureAlexander Loechel
 
Windows Server 8 - eine Vorschau
Windows Server 8 - eine VorschauWindows Server 8 - eine Vorschau
Windows Server 8 - eine VorschauDigicomp Academy AG
 
Echtzeit virtualisierung von twitter &amp; co.
Echtzeit virtualisierung von twitter &amp; co.Echtzeit virtualisierung von twitter &amp; co.
Echtzeit virtualisierung von twitter &amp; co.Stefan Witwicki
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionQAware GmbH
 
Transfact_Broschuere_DE
Transfact_Broschuere_DETransfact_Broschuere_DE
Transfact_Broschuere_DEHeiko Martin
 
MVHS: So realisieren Sie Ihren Webauftritt erfolgreich
MVHS: So realisieren Sie Ihren Webauftritt erfolgreichMVHS: So realisieren Sie Ihren Webauftritt erfolgreich
MVHS: So realisieren Sie Ihren Webauftritt erfolgreichThomas Kraehe
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonMichael Hofmann
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionQAware GmbH
 

Semelhante a Webservices - was ist das und wie programmiert man sie (20)

CMS und E-Mail-Marketing verbinden
CMS und E-Mail-Marketing verbindenCMS und E-Mail-Marketing verbinden
CMS und E-Mail-Marketing verbinden
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
 
Best practise 5 anwendungsfälle der google analytics api
Best practise 5 anwendungsfälle der google analytics apiBest practise 5 anwendungsfälle der google analytics api
Best practise 5 anwendungsfälle der google analytics api
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservices
 
Xybermotive vorstellung (de) 112014
Xybermotive vorstellung (de) 112014Xybermotive vorstellung (de) 112014
Xybermotive vorstellung (de) 112014
 
Webtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer ÜberblickWebtechnologien - ein kurzer Überblick
Webtechnologien - ein kurzer Überblick
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
Web Content-Management-Systeme the Past - the Present - the Future
Web Content-Management-Systeme the Past - the Present - the FutureWeb Content-Management-Systeme the Past - the Present - the Future
Web Content-Management-Systeme the Past - the Present - the Future
 
Windows Server 8 - eine Vorschau
Windows Server 8 - eine VorschauWindows Server 8 - eine Vorschau
Windows Server 8 - eine Vorschau
 
Echtzeit virtualisierung von twitter &amp; co.
Echtzeit virtualisierung von twitter &amp; co.Echtzeit virtualisierung von twitter &amp; co.
Echtzeit virtualisierung von twitter &amp; co.
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
 
Transfact_Broschuere_DE
Transfact_Broschuere_DETransfact_Broschuere_DE
Transfact_Broschuere_DE
 
MVHS: So realisieren Sie Ihren Webauftritt erfolgreich
MVHS: So realisieren Sie Ihren Webauftritt erfolgreichMVHS: So realisieren Sie Ihren Webauftritt erfolgreich
MVHS: So realisieren Sie Ihren Webauftritt erfolgreich
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 

Mais de Claus Brell

Vortrag Substitution Beteiligung KI 200911
Vortrag Substitution Beteiligung KI 200911 Vortrag Substitution Beteiligung KI 200911
Vortrag Substitution Beteiligung KI 200911 Claus Brell
 
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020Claus Brell
 
Empirische Methoden 3 Auswertung 200502
Empirische Methoden 3 Auswertung 200502Empirische Methoden 3 Auswertung 200502
Empirische Methoden 3 Auswertung 200502Claus Brell
 
Empirische Methoden 1 Erkenntnistheorie 200501
Empirische Methoden 1 Erkenntnistheorie 200501Empirische Methoden 1 Erkenntnistheorie 200501
Empirische Methoden 1 Erkenntnistheorie 200501Claus Brell
 
Wissensmanagement
WissensmanagementWissensmanagement
WissensmanagementClaus Brell
 
Informationssicherheitsmanagment
InformationssicherheitsmanagmentInformationssicherheitsmanagment
InformationssicherheitsmanagmentClaus Brell
 
Projektmanagement 200420
Projektmanagement 200420Projektmanagement 200420
Projektmanagement 200420Claus Brell
 
Funktionshierarchiebaum 200409
Funktionshierarchiebaum 200409Funktionshierarchiebaum 200409
Funktionshierarchiebaum 200409Claus Brell
 
Zieldiagramm 200409
Zieldiagramm 200409Zieldiagramm 200409
Zieldiagramm 200409Claus Brell
 
Baumstruktur 200409
Baumstruktur 200409Baumstruktur 200409
Baumstruktur 200409Claus Brell
 
Flussdiagramme 200407
Flussdiagramme 200407Flussdiagramme 200407
Flussdiagramme 200407Claus Brell
 
2 1b-prozessmodellierung-eepk-erweiterung-200406
2 1b-prozessmodellierung-eepk-erweiterung-2004062 1b-prozessmodellierung-eepk-erweiterung-200406
2 1b-prozessmodellierung-eepk-erweiterung-200406Claus Brell
 
2 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-2004062 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-200406Claus Brell
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Claus Brell
 
Organigramm - Modellierung mit ARIS 200327
Organigramm - Modellierung mit ARIS 200327Organigramm - Modellierung mit ARIS 200327
Organigramm - Modellierung mit ARIS 200327Claus Brell
 
Leichter imkern-191110
Leichter imkern-191110 Leichter imkern-191110
Leichter imkern-191110 Claus Brell
 
Wirtschaftsinformatik Basics für Betriebswirte und Ingenieure
Wirtschaftsinformatik Basics für Betriebswirte und IngenieureWirtschaftsinformatik Basics für Betriebswirte und Ingenieure
Wirtschaftsinformatik Basics für Betriebswirte und IngenieureClaus Brell
 
Raspberry Pi Lehrerworkshop
Raspberry Pi LehrerworkshopRaspberry Pi Lehrerworkshop
Raspberry Pi LehrerworkshopClaus Brell
 
Motivationstheorien 190524
Motivationstheorien 190524Motivationstheorien 190524
Motivationstheorien 190524Claus Brell
 
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikClaus Brell
 

Mais de Claus Brell (20)

Vortrag Substitution Beteiligung KI 200911
Vortrag Substitution Beteiligung KI 200911 Vortrag Substitution Beteiligung KI 200911
Vortrag Substitution Beteiligung KI 200911
 
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020
Poster brell-kuron-muelder-ki-substituiert-akteurbeteiligung-lwda2020
 
Empirische Methoden 3 Auswertung 200502
Empirische Methoden 3 Auswertung 200502Empirische Methoden 3 Auswertung 200502
Empirische Methoden 3 Auswertung 200502
 
Empirische Methoden 1 Erkenntnistheorie 200501
Empirische Methoden 1 Erkenntnistheorie 200501Empirische Methoden 1 Erkenntnistheorie 200501
Empirische Methoden 1 Erkenntnistheorie 200501
 
Wissensmanagement
WissensmanagementWissensmanagement
Wissensmanagement
 
Informationssicherheitsmanagment
InformationssicherheitsmanagmentInformationssicherheitsmanagment
Informationssicherheitsmanagment
 
Projektmanagement 200420
Projektmanagement 200420Projektmanagement 200420
Projektmanagement 200420
 
Funktionshierarchiebaum 200409
Funktionshierarchiebaum 200409Funktionshierarchiebaum 200409
Funktionshierarchiebaum 200409
 
Zieldiagramm 200409
Zieldiagramm 200409Zieldiagramm 200409
Zieldiagramm 200409
 
Baumstruktur 200409
Baumstruktur 200409Baumstruktur 200409
Baumstruktur 200409
 
Flussdiagramme 200407
Flussdiagramme 200407Flussdiagramme 200407
Flussdiagramme 200407
 
2 1b-prozessmodellierung-eepk-erweiterung-200406
2 1b-prozessmodellierung-eepk-erweiterung-2004062 1b-prozessmodellierung-eepk-erweiterung-200406
2 1b-prozessmodellierung-eepk-erweiterung-200406
 
2 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-2004062 1a-prozessmodellierung-epk-einfuehrung-200406
2 1a-prozessmodellierung-epk-einfuehrung-200406
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
 
Organigramm - Modellierung mit ARIS 200327
Organigramm - Modellierung mit ARIS 200327Organigramm - Modellierung mit ARIS 200327
Organigramm - Modellierung mit ARIS 200327
 
Leichter imkern-191110
Leichter imkern-191110 Leichter imkern-191110
Leichter imkern-191110
 
Wirtschaftsinformatik Basics für Betriebswirte und Ingenieure
Wirtschaftsinformatik Basics für Betriebswirte und IngenieureWirtschaftsinformatik Basics für Betriebswirte und Ingenieure
Wirtschaftsinformatik Basics für Betriebswirte und Ingenieure
 
Raspberry Pi Lehrerworkshop
Raspberry Pi LehrerworkshopRaspberry Pi Lehrerworkshop
Raspberry Pi Lehrerworkshop
 
Motivationstheorien 190524
Motivationstheorien 190524Motivationstheorien 190524
Motivationstheorien 190524
 
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
 

Webservices - was ist das und wie programmiert man sie

  • 1. 1 Prof. Dr. rer. nat. Claus Brell, Wirtschaftsinformatik, Forschungsinstitut GEMIT (Geschäftsprozessmanagement & IT), Kompetenzzentrum CLAVIS (Informationssicherheit) Hochschule Niederrhein. Mail: claus.brell@hs-niederrhein,de , Twitter: https://twitter.com/clausbrell Web: https://cbrell.de , https://cbrell.de/naturwatch , http://claus-brell.de Webservices
  • 2. 2Motivation: Warum Webservices? 1 geheim: Algorithmen, die betriebswirtschaftliche wertvolles Know-How enthalten, können vor dem Nutzer versteckt werden. 2 billiger betreiben: Wartung, Leistungsskalierung und Rollout sind für Webservices einfach. 3 mehrfach nutzen: Webservices können ggf. in mehreren Anwendungssystemen gemeinsam verwendet werden. 4 robust: Die Verteilung komplexer Anwendungen auf lose gekoppelte Komponenten erhöht i.d.R. die Robustheit. 5 HR: Personen mit unterschiedlichen Kompetenzen können an der Entwicklung beteiligt werden.
  • 3. 3z.B. AJAX: asynchrone Kommunikation mit Webservices HTML Browser, Client CSS Webserver http Java- script jQuery PHP node.js Java- script .NETJava .NET JavaJEE REST SOAP TCP / IP Websockets
  • 4. 4z.B. AJAX: asynchrone Kommunikation mit Webservices Asynchronous JavaScript and XML (AJAX) ist ein Konzept der asynchronen Kommunikation zwischen Browser und Webserver über http. XML kann, muss aber nicht. Häufig: JSON. Häufig: Webservice in PHP (79 % aller Internetseiten) Client (Javasript-Programm im Browser) stellt eine Anfrage an den Webservice (PHP-Programm auf dem Webserver). Der Webservice „tut“ etwas (Berechnung oder Datenbankabfrage oder ...). Das Ergebnis wird an den Client zurück übertragen. Bei asynchroner Kommunikation: Client kann auf Eingaben reagieren, während auf Antwort gewartet wird.
  • 5. 5 Java- script z.B. .NET Client: synchrone Kommunikation mit Webservices HTML Browser, Client CSS Webserver http jQuery PHP node.js Java- script .NETJava .NET JavaJEE REST SOAP TCP / IP Websockets
  • 6. 6z.B. .NET Client: synchrone Kommunikation mit Webservices Der gleiche Webservice wie für AJAX kann von einem .NET Client genutzt werden. Der Client (.NET-Konsolen-Programm) stellt eine Anfrage an den Webservice (PHP-Programm auf dem Webserver). Der Webservice „tut“ etwas (Berechnung oder Datenbankabfrage oder ...). Das Ergebnis wird an den Client zurück übertragen. Bei synchroner Kommunikation: Client wartet auf Rückmeldung des Servers und reagiert nicht auf Eingaben.
  • 7. 7Anwendungsbeispiel BMI-Rechner BMI (Body Mass Index) ist ein Indikator, ob eine Person normalgewichtig, untergewichtig oder übergewichtig ist. BMI wird berechnet aus der Körperlänge in m und dem Gewicht in kg mit BMI=mit Körpergewicht/(Körperlänge zum Quadrat) Typischerweise liegt der BMI zwischen 20 und 26. Im Anwendungsbeispiel wird die Berechnung im Webservice ausgeführt. Der Webservice wird in PHP programmiert. Verwendet wird der Webservice von einem HTML-Formular und einem .NET- Konsolenprogramm.
  • 9. 9Beispiel BMI-Rechner-Webservice in PHP <?php $cm=$_GET['cm']; //1 $m=$cm/100; $kg=$_GET['kg']; $bmi=$kg/$m/$m; //2 echo $bmi; //3 ?> //1 In der URI übergebener Parameter steht in der Servervariablen $_GET. $_GET ist ein Array mit den Variablennamen als Keys. Der Inhalt wird einer „normale“ Variable $cm zugewiesen. //2 Der BMI wird berechnet mit Körpergewicht/Körperlänge^2 und der Variablen $bmi zugewiesen. // 3 mit echo wird der BMI zurückgegeben.
  • 10. 10bmirechnerWS.php mit dem Browser testen
  • 11. 11bmirechnerWS.php mit dem Browser testen bmirechnerWS.php benötigt eine Laufzeitumgebung. Ein Webserver mit PHP-Modul ist eine solche Laufzeitumgebung. bmirechnerWS.php muss in das Dokumentenverzeichnis des Webservers geladen werden. bmirechnerWS.php kann dann im Browser direkt getestet werden mit http://<serveradresse>/<verzeichnis>/bmirechnerWS.php?cm=190&kg=85 Die Aufrufparameter werden in der URI mit „cm=190“ festgelegt. Mehrere Parameter werden durch „&“ getrennt. Hinter dem Dateinamen des Webservices steht ein „?“ vor den Parametern.
  • 12. 12bmirechnerWS.php mit einem HTML-Formular testen
  • 13. 13bmirechnerWS.php mit einem HTML-Formular testen - Topologie Webserver bmiformular.htmlBrowser bmirechnerWS.php
  • 14. 14bmirechnerWS.php mit einem HTML-Formular testen – Use Case Diagramm BMI-Rechner Gewicht und Größe eingeben BMI ablesen Nutzer
  • 15. 15bmirechnerWS.php mit einem HTML-Formular testen – Ablauf aus Sicht des Nutzers (eEPK) Nutzer möchte BMI berechnen Seite aufrufen Seite geladen Daten eintragen, absenden Skript ist aufgerufen BMI berechnen, zurücksenden BMI ist berechnet Nutzer bmiformular.html Nutzer bmiformular.html Nutzer bmirechnerWS.php
  • 16. 16bmirechnerWS.php mit einem HTML-Formular testen Der BMI-Rechner besteht aus zwei Komponenten: einem PHP-Skript und einer HTML-Seite, mit der das Skript bequem aufgerufen werden kann. Der Nutzer lädt die HTML-Datei von einem Webserver, trägt die Parameter Gewicht und Körpergröße in das HTML-Formular ein und drückt den „absenden“-Button. Dadurch wird das PHP-Skript aufgerufen und die Parameter an das PHP Skript übergeben. Das Skript berechnet den BMI. Die Ausgabe des Skriptes (der BMI als Fließkommazahl) wird an den Browser zurückübertragen und angezeigt.
  • 17. 17Komponentenbasiertes System aus .NET-Client und PHP-Script – Topologie Webserver .NET Konsolen- programm bmirechnerWS.php
  • 18. 18Komponentenbasiertes System aus .NET-Client und PHP-Script – Ansicht des Client-Bildschirms (Windows Konsole)
  • 20. 20C# Quelltext Rahmen using System; using System.Net; using System.IO; namespace bmiClient { class Program { static void Main(string[] args) { ..... Inhalt der Methode Main } } }
  • 21. 21C# Quelltext Inhalt der Methode Main WebClient myClient = new WebClient(); string url = "https://cbreXXXXXXXXXXXXXXXX/bmirechnerWS.php?"; Console.WriteLine("BMI Rechner Clientrn##################"); Console.WriteLine("Gewicht in kg eingeben:"); string kg=Console.ReadLine(); Console.WriteLine("Größe in cm eingeben:"); string cm = Console.ReadLine(); string parameter="kg="+kg+"&cm="+cm; Stream data = myClient.OpenRead(url+parameter); StreamReader reader = new StreamReader(data); string s = reader.ReadToEnd(); data.Close(); reader.Close(); Console.WriteLine("Ihr BMI: "+s); Console.ReadKey();
  • 22. 22C# Quelltext Erläuterungen Das Programm enthält nur den Code, der für das Funktionieren erforderlich ist. Es werden keine Fehler abgefangen. Der Zugriff auf den Webservice erfolgt synchron. 1. Ein Objekt für den Internetzugriff wird erzeugt: WebClient myClient = new WebClient(); Dazu wird der Namensraum using System.Net benötigt. 2. In der Variablen url wird die Internet-Adresse des Webservice gespeichert: string url = "https:// ....... 3. Programmzeilen der Form Console.WriteLine("BMI ..... geben etwas auf dem Bildschirm aus.
  • 23. 23C# Quelltext Erläuterungen 4. Mit ReadLine werden zeilenweise Eingaben eingelesen: string kg=Console.ReadLine(); 5. Für die Verbindung zum Webservice wird ein Handle data benötigt und damit ein lesender Zugriff mit dem Handle reader eröffnet: Stream data = myClient.OpenRead(url+parameter); StreamReader reader = new StreamReader(data); 6. Die Rückgabe des Webservice wird in die Variable s gelesen: string s = reader.ReadToEnd(); 7. Alle Verbindungen werden wieder geschlossen: data.Close(); reader.Close();
  • 24. 24C# Quelltext Erläuterungen 8. Das Ergebnis wird mit Führungstext auf der Konsole ausgegeben: Console.WriteLine("Ihr BMI: "+s); 9. Damit sich das Konsolenfenster nicht sofort schließt, wartet das Programm auf einen Tastendruck: Console.ReadKey();
  • 25. 25Noch nicht behandelt: asynchrone Zugriffe Webservices sollten über synchrone Zugriffe angesprochen werden. Ein asynchroner Zugriff kann insbesondere bei komplexeren komponentenbasieren Anwendungssystemen die Robustheit erhöhen. Asynchroner Zugriff auf einen Webservice über eine HTML-Seite mit Javascript: AJAX. Asynchroner Zugriff auf einen Webservice aus .NET: Webzugriff in einen Arbeitsthread auslagern.
  • 26. 26Lesenswert 1. HTML lernen: de.selfhtml.org 2. PHP lernen: www.selfphp.de 3. Arbeiten mit der WebClient-Klasse: https://docs.microsoft.com/de- de/dotnet/api/system.net.webclient?view=netframework-4.7.2
  • 27. 27(Verständnis-) Fragen 1. Warum kann es sinnvoll sein, Komponenten eines Anwendungssystems auf Client-Rechner und Webservices zu verteilen? 2. Wie kann ein einfacher Webservice programmiert werden? 3. Was ist der Vorteil bei der Programmierung des Clients, wenn man Webservices einsetzt? 4. Was ist der Unterschied zwischen synchronen und asynchronen Zugriffen auf Webservices?