REST-basierte Web-Services mit PHP (1) REST nutzt direkt die HTTP-Operationen Daher ist es (vgl. SOAP) einfacher, einen REST-basierten Webservice direkt mit PHP zu implementieren. Einige PHP-Frameworks, oder s.g. Micro-Frameworks existieren: Slim, TONIC, Zend, Phalcon Beispiel Slim path_to_ws/index.php: <?php require 'Slim/Slim.php'; \Slim\Slim::registerAutoloader(); $app->get('/hello/:name', function ($name) { echo "Hello, $name"; }); $app->run();?> GET path_to_ws/hello/fritz HTTP /1.1 Hello FRITZ Mit Aufruf der path_to_ws/index.php wird Webservice initialisiert. Weitere Requests (GET,PUT, POST, ) auf path_to_ws/[operation[/ressource]] lösen Operationen aus, die von der Anwendungsklasse $app behandelt werden. Peter Sobe 49
REST-basierte Web-Services mit PHP (2) Fortsetzung des Beispiels Slim path_to_ws/index.php: <?php require 'Slim/Slim.php'; \Slim\Slim::registerAutoloader(); $app->get('/hello/:name', function ($name) { echo "Hello, $name"; }); $app->post('/eintragen/:name', function ($name) { // auslesen $app->request->getbody(); // Eintrag in Datei oder Datenbank anlegen echo eingetragen: $name"; }); $app->get ('/anzeigen/:name', function ($name) { // auffinden $name in Datei oder Datenbank // Inhalt $daten erzeugen echo anzeigen: $name, $daten"; }); $app->run();?> Peter Sobe 50
Zusammenfassung - Web Services (1) Web Services sind ein Paradigma für kooperative Anwendungen im Client/Server-Stil Die offene Web-Standards und Web-Protokolle zur Kommunikation benutzen Die Service-Beschreibung und die Nachrichten sind in XML kodiert Zur Erzeugung und Verarbeitung der Nachrichten können XML- Verarbeitungs-Tools benutzt werden, z.b. innerhalb PHP Typisch ist die Nutzung vorgefertigter Plattformen zur Interaktion via SOAP-Web-Services, z.b. PHP-SOAP. Alle XML-Nachrichten werden hinter einem Interface versteckt. Die Nutzung erfolgt als RPC. Peter Sobe 51
Fortsetzung: Zusammenfassung - Web Services (2) Plattformen für REST-Web-Services sind eher auf Behandlung der einzelnen Operationen ausgelegt. Eine Operation kann sich auf eine oder alle Ressourcen beziehen. Web-Services sind eine Technologie für eine neue Generation komplexer und verteilter Softwaresysteme, den s.g. serviceorientierten Architekturen Web-Services sind ein Teil der Cloud-Computing-Technologie Peter Sobe 52
Cloud-Computing (1) Definition von Gartner David W. Cearley and David Mitchell Smith: Key Attributes Distinguish Cloud Computing Services, March 2009: Cloud computing is a style of computing where scalable and elastic IT-enabled capabilities are delivered as a service to external customers using Internet technologies. Cloud computing is positioning itself as a promising platform for delivering infrastructure (IaaS), platform (PaaS), and software (SaaS) as services. 53
Cloud-Computing (2) Kern-Technologien: Virtualisierung Prozessorknoten (Virtual Machines) virtuelle Netzwerke (VPN, Tunnel) Virtuelle Speicherressourcen (Netzwerk-Blockgeräte, -Dateisysteme) serviceorientierte Architektur ortsunabhängige und gut erprobte Interfaces (Web-browser, Web Services) automatisierte Operation (Self-X wird angestrebt) Self-X: Self-Organization, Self-Explaining, Self-Configuration, Self-Healing (Begriffe kommen aus der Forschungsrichtung Organic Computing ) 54
Cloud-Computing (3) Service Paradigmen Hardware as a Service Infrastructure as a Service - Low Level, virtualisierte Ressourcen (Speicher, Netzwerk, Virtuelle Maschinen) Software as a Service Data as a Service Zusammenfassung in Platform as a Service 55
Cloud-Computing (4) Hardware as a Service Dieser Begriff wurde ca. 2006 geprägt, als schnelle Fortschritte bei der Virtualisierung von Hardware gemacht wurden. Nutzer können IT-Hardware on-demand über das Internet ausleihen. Das Spektrum reicht von einzelnen virtuellen Prozessorknoten (Hosts) bis hin zu gesamten Data-Centers und Anwendungssoftware Konzept: Dynamische Erzeugung virtueller Ressourcen, Erlaubnis für den Nutzer zum Einloggen und zur Nutzung der Ressourcen für Berechnungen, Speicherung, Web-Hosting Kombination mit virtualisiertem Speicher (Storage, wie z.b. Festplatten-Images) und Snapshots der virtuellen Maschinen 56
Cloud-Computing (5) Hardware-as-a-Service ergibt als Kombination verschiedener virtualisierter Hardware-Komponenten eine virtualisierte Infrastruktur Vergleich: Virtualisierte Infrastruktur Eigene Infrastruktur Bereitstellung Vorteil: flexibler, u.u. kostengünstiger Nachteil: Abhängigkeit vom Cloud-Provider 57
Beispiele für Cloud-Computing-Systeme Amazon Cloud (EC2, S3 mit SOAP- und REST-Schnittstellen, zusätzlich eine s.g. Mechanical Turk API ) Google Cloud - Google Apps: Email, Office, für Unternehmen ca. 40/Nutzerkonto/Jahr als klassische Software as a Service -Anwendung - Google app engine - deployment von Web Anwendungen in der Cloud Microsoft Azure - Platform as a Service, Ausführungsplattform Salesforce - Enterprise Management, vergleichbar mit SAP Eucalyptus freie Cloud-System-Implementierung, Interface angelehnt an Amazon EC2, S3 58
Beispiele für Cloud-Computing-Systeme Closed-Platform Clouds: Die meisten Cloud-Computing-Systeme werden von Provider- Gesellschaften bereitgestellt, welche das System selbst betreiben und nicht an Kunden verkaufen. Lediglich die Dienste (Nutzung) werden nach außen geöffnet. Benutzung ist öffentlich, Plattformen sind aber geschlossen On-premises Cloud: Das System erlaubt eine Installation auf der eigenen Infrastuktur Beispiel: Eucalyptus (open source) Microsoft kündigte On-premises Cloud für firmenspezifische Lösungen an (2010) 59
Amazon Web Services (AWS) AWS Konzept Verschiedene HaaS-Services: Compute resources (VMs) Storage (block storage, object storage, data base) Network, Content-Delivery Infrastructure Diese Services können einzeln, aber auch in Verbindung zueinander genutzt werden (Infrastructure), z.b. VMs und Storage AWS sind so gestaltet, dass eine Plattform geschaffen werden kann. mehrere VMs können über Network Service verbunden werden VMs können mit Storage verbunden werden Berechnungsergebnisse per Content-Delivery-Plattform (Web) darstellbar 60
Amazon Web Services Storage, REST AWS Simple Storage S3 - Cloud Storage REST, Beispiel-Request zur Erzeugung eines s.g. Buckets htw (vergleichbar mit Verzeichnis in einem Dateisystem): Request: PUT / HTTP/1.1 Host: htw.s3.amazonaws.com Content-Length: 0 Date: Wed, 01 Mar 2009 12:00:00 GMT Authorization: AWS 15B4D3461F177624206A:xQE0di... Response: HTTP/1.1 200 OK x-amz-id-2: YgIPIfBiKa2bj0KMg95r/0zo3emzU4... x-amz-request-id: 236A8905248E5A01 Date: Wed, 01 Mar 2009 12:00:00 GMT Location: /htw Content-Length: 0 Connection: close Server: AmazonS3 61
Amazon Web Services Storage, SOAP SOAP: Beispiel zur Erzeugung eines Buckets HTW". Request (ohne Envelope): <CreateBucket xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <Bucket>HTW</Bucket> <AWSAccessKeyId>1D9FVRAYCP1VJEXAMPLE=</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </CreateBucket> Response (ohne Envelope): <CreateBucketResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01"> <CreateBucketResponse> <Bucket>HTW</Bucket> </CreateBucketResponse> </CreateBucketResponse> 62
Ein AWS-Anwendungsbeispiel Amazon Web Services Quelle: aws.amazon.com 63