งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

3# SOAP SIMPLE OBJECT ACCESS PROTOCOL AND 4# OVERVIEW WEB SERVICE BY PHP Suranglutch Chaokoksoohng Informatics BUU.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "3# SOAP SIMPLE OBJECT ACCESS PROTOCOL AND 4# OVERVIEW WEB SERVICE BY PHP Suranglutch Chaokoksoohng Informatics BUU."— ใบสำเนางานนำเสนอ:

1 3# SOAP SIMPLE OBJECT ACCESS PROTOCOL AND 4# OVERVIEW WEB SERVICE BY PHP Suranglutch Chaokoksoohng Informatics BUU.

2 Bind | SOAP: Simple Object Access Protocol Service Registry Service Provider Service Requestor Publish Bind Find UDDI SOAP WSDL

3 SOAP in a nutshell “SOAP is a protocol specification for invoking methods on servers, services, components and objects. SOAP codifies the existing practice of using XML and HTTP as a method invocation mechanism. The SOAP specification mandates a small number of HTTP headers that facilitate firewall/proxy filtering. The SOAP specification also mandates an XML vocabulary that is used for representing method parameters, return values, and exceptions.” [DevelopMentor]  Like XML-RPC, SOAP was developed to be a platform and language independent method of passing information between services, objects, and servers.  Provides a simple standardized mechanism for moving structured information.

4 What is SOAP?  Protocol ในการสื่อสารกันระหว่าง Application  กำหนดรูปแบบในการส่งผ่านข้อความโดยผ่าน เครือข่ายอินเทอร์เน็ต  ไม่ขึ้นกับ Platform และภาษาคอมพิวเตอร์ที่ พัฒนา  มีโครงสร้างแบบ XML  SOAP Message เป็นข้อความที่ใช้ส่งผ่าน เครือข่ายอินเทอร์เน็ต และเมื่อใช้ร่วมกับ เว็บ สามารถส่งผ่าน Firewall ได้ไม่ยาก  ได้รับการดูแลโดย W3C

5 SOAP Messaging Client Application Client Application Service Application Service Application HTTP SOAP Message Internet HTTP SOAP Message

6 Where did it come from?  Microsoft, UserLand, DevelopMentor, IBM, Ariba, Commerce One, Compaq, HP, IONA, Lotus, SAP ~ Submitted to W3C May  XML based protocol  Intended to be a simple wire-protocol for exchange of info. Largest use may be over Internet HTTP.

7 W3C  July 9, 2001 W3C Releases First Public Working Draft for SOAP Version 1.2  Working draft produced by the XML Protocol Working Group.  Specification can be found:

8 Motivation  Many Distributed applications communicate using remote procedure calls (RPC) between distributed objects like DCOM and CORBA.  HTTP isn’t designed for those objects, so RPC calls aren’t easily adapted to the Internet.  Security problems exist for those methods of RPC, so most firewalls and proxy servers are set to block this traffic.  HTTP is supported by all Internet browsers and servers, so SOAP presents a nice protocol for doing RPC.

9 SOAP suds SOAP IS:  Lightweight communication protocol  For communication between applications one-way, request/response, multicast, etc..  Designed to communicate via HTTP  Not tied to any component technology  Not tied to any programming language  Based on XML  Simple and extensible

10 Loose Coupling หลักการออกแบบ Application ที่ เน้นการปรับ เข้ากับสิ่งที่เปลี่ยนแปลงไปได้โดยง่าย (Agility)  ลดความขึ้นต่อกัน ระหว่างองค์ประกอบ เพื่อให้มีความคล่องตัว เป็นเป้าหมายของ SOA

11 Loose Coupling in SOA Heterogeneous Technologies // Tightly Coupled  SOA ใช้ Standardized Interface แทนการใช้ Standardized Code  อิสระในการพัฒนา Service ด้วยเทคโนโลยีใดก็ได้ ได้ Technology Decoupling โดยยอมเสีย Interface Coupling Data Exchange // all platforms  SOA ใช้รูปแบบข้อมูลที่อิสระกับเทคโนโลยี  หลีกปัญหา Low-Level Data-Type Compatibility Published Schema // Easy to find all service  Service Directory ช่วยในการตกลงเรื่องการ ให้บริการอย่าง Dynamic Delayed Binding // Can change Version, no new compile – no new application  Binding ทำตอนเรียกใช้ Service และยึด Standardized Interface  การเปลี่ยนแปลง Service Implementation ไม่ กระทบผู้ใช้

12 General (Basic) Structure SOAP Message  Envelope Defines the content of the message  Header (optional) contains header information  Body contains call and response information

13 SOAP Message Structure SOAP Header SOAP Body SOAP Envelope XML Message (RPC or Doc) SOAP Message XML Message SOAP Message ≠ XML Message

14 SOAP Messaging Client Application Client Application Service Application Service Application HTTP SOAP Message Internet HTTP SOAP Message

15 SOAP with Attachment (SwA)  SOAP มักจะมี XML Message อยู่ในส่วน Body  SwA เป็นทางเลือกในการส่ง XML Message ขนาดใหญ่มาก หรือ Message ที่ไม่ได้เป็น XML-based เช่น รูปภาพ Binary ขนาดใหญ่ หรือแฟ้มเสียง MP3 ขนาดใหญ่ เป็นต้น  ใช้ MIME multipart/related media type และการอ้างอิงโดย URI ในส่วนต่าง ๆ ของ MIME ถึง Attachment ที่ต้องการ  ได้รับการดูแลโดย W3C

16 SwA Structure MIME-Version:1.0 Content-Type:Multipart/Related;boundary=MIME_boundary;type=text/xml; start=“http://myURL/soap/attachments/fileupload1” --MIME boundary Content-Type:text/xml;charset=utf-8 Content-Transfer-Encoding:8bit Content-ID: … … Content-Type:image/gif Content-Transfer-Encoding:binary Content-ID: …gif image Part 1 SOAP Message Part 2 Attachment Image

17 Envelope  MUST be associated with SOAP envelope namespace:  SOAP serialization namespace: Encoding Style attributes can contain a URI describing how the data should be serialized.  SOAP message MUST NOT contain a DTD or Processing Instructions.

18 SOAP Namespaces  The SOAP envelope has the namespace identifier “http://www.w3.org/2001/06/soap-envelope”  The SOAP serialization has the namespace identifier "http://www.w3.org/2001/06/soap-encoding"  The SOAP mustUnderstand fault namespace identifier "http://www.w3.org/2001/06/soap-faults"  The SOAP upgrade namespace identifier "http://www.w3.org/2001/06/soap-upgrade"

19 Header  Optional. If present, must immediately follow the SOAP Envelope XML element followed by any header entries. Often contains meta-information regarding the method call.  Actor attribute  who should process message  mustUnderstand attribute  how to process(default is “0” if not present) 5

20 Body  Message to exchange. Most often for RPC calls and error reporting.  Immediate child element of SOAP Envelope XML element (follows Header, if present).  Contains serialized method arguments.  Remote method name is used to name the method call’s XML element and must immediately follow the SOAP body opening XML tag.

21 That’s the basics…example A simple SOAP XML document requesting the price of soap. Lever2000

22 SYNTAX RULES  MUST be encoded using XML  MUST have a SOAP Envelope  CAN have a SOAP header  MUST have a SOAP Body  MUST use the SOAP Envelope namespace  MUST use the SOAP Encoding namespace  Must NOT contain a DTD reference  Must NOT contain XML Processing

23 ERRORS: SOAP Fault Element  Error messages from a SOAP application are carried inside a Fault element.  Must appear as an element w/in the element and can only appear once in a SOAP message.  Fault sub elements: MUST: --code identifying the error, for use by the software MUST: --error as a string MUST(Apps not acting as ultimate destination of SOAP message) --who caused the error MUST(if contents of Body could not be successfully processed) --specific error information  Fault Codes: VersionMismatch Invalid namespace for the SOAP Envelope Element MustUnderstand A child element of the Header element, with the mustUnderstand attribute set to “1”, was not understood Client The message was incorrectly formed or contained incorrect information. Server There was a problem with the server so the message could not be process  Example: env:MustUnderstand SOAP Must Understand Error

24 Easy Transport….HTTP  Why HTTP? HTTP has a request/response model allowing SOAP to embed request parameters in HTTP request, and SOAP response parameters into HTTP responses.  HTTP apps MUST use the media type “text/xml” when including SOAP entity bodies in HTTP messages. Content-Type: text/xml; charset=“utf-8”  SOAP HTTP Header info  Basicly…sending XML formatted messages across the network using HTTP.

25 Part of the HTTP payload  Commonly used with HTTP protocol (response/request model) thereby making it very scalable.  SOAPAction HTTP Header Field. SOAPAction: “Some-URI”  Firewall access? Most firewalls/proxies are opened to port 80 for HTTP giving SOAP a widely used transport protocol across distributed systems. The SOAPAction HTTP header field allows firewalls/proxys to filter SOAP messages if desired.  Security? No security has been implemented with SOAP, but consider HTTPS/SSL.

26 Stock Quote example embedded in an HTTP POST Request  POST /StockQuote HTTP/1.1 Host: Content-Type: text/xml; charset=“utf-8”  SOAP HTTP Header info Content-Length: nnnn SOAPAction: “Some-URI”  SOAP HTTP Header info SUNW  Sent from the client to the service. First few lines are HTTP headers and SOAP HTTP headers. Followed by the SOAPAction HTTP header and SOAP Envelope XML element. The SOAP Body contains application defined element(s), as defined by the service.

27 Stock Quote Response example embedded in HTTP Response HTTP/ OK Content-Type: text/xml; charset=“utf-8”  SOAP HTTP Header info Content-Length: nnnn 5.00

28 Client/Server…  In order for SOAP to work, the client must have code running that is responsible for building the SOAP request.  In response, a server must also be responsible for understanding the SOAP request, invoke the specified method, build the response message, and return it to the client.  These details are up to you.  There already exist SOAP implementations for languages such as Perl and Java.

29 SOAP box  Inherently stateless if it uses HTTP for transport.  Doesn’t implement security. However transport with HTTP allows for SSL and HTTPS at the application level.  SOAPAction HTTP header field allows your firewall to filter SOAP method invocations/deny SOAP processing altogether. Firewall filters SOAP packets based on the object name, particular method, or a combo of the two.

30 SOAP for RPC  Design goals of SOAP: simplicity & extensibility.  RPC with XML allows for uniform representation of remote procedure calls and responses.  You’re not limited to HTTP protocol binding…just a natural choice for the request/response model.

31 W3C Working Draft: 1.3 Examples of SOAP Messages “The first example shows a simple notification message expressed in SOAP. The message contains the header block "alertcontrol" and the body block "alert" which are both application defined and not defined by SOAP. The header block contains the parameters "priority" and "expires" which may be of use to intermediaries as well as the ultimate destination of the message. The body block contains the actual notification message to be delivered.” Example T14:00:00-05:00 Pick up Mary at school at 2pm

32 Publish | Web Services Description Language: WSDL Service Registry Service Provider Service Requestor Publish Bind Find UDDI SOAP WSDL

33 Web Services Description Language (WSDL)  WSDL ได้รับการออกแบบพัฒนาโดย กลุ่มบริษัทผู้ผลิต ได้แก่ Microsoft, Ariba, IBM และบริษัทผู้ผลิตอื่น ๆ อีก กว่า 20 บริษัทร่วมกันสนับสนุน  ข้อกำหนด WSDL ได้รับการส่งต่อไปให้ W3C (World Wide Web Consortium) ดูแลปรับปรุงต่อไป  WSDL เป็นเสมือน De Facto Standard ในปัจจุบันสำหรับการพัฒนา Web Services

34 WSDL Main Components  Data types  Message  Operation  Port type  Binding  Port  Service

35 Data Type and Message  ส่วน Data Type เป็นส่วนที่ใช้ อธิบาย Data แต่ละชนิดที่มีใช้และ อ้างอิงถึงใน WSDL  การอธิบาย Data Type นั้นจะทำ โดยใช้ XML Schema  ส่วน Message เป็นการกำหนดชุด ของข้อมูลที่ใช้ในการส่งเป็น Input Parameter และชุดข้อมูลที่ใช้ใน การตอบกลับของบริการ Web Service

36 Operation and Port Type  ส่วน Operation เป็นการกำหนดชื่อ Operation พร้อมรายละเอียดการ ส่งข้อมูลนำเข้า Input Message เข้าสู่การทำงาน และอธิบายผลลัพธ์ ที่ได้ว่าเป็น Output Message ใด  ส่วน Port type เป็นการจัดกลุ่มของ Operation ที่มีอยู่ใน Web Service โดยเรียกได้ว่าเป็น Set of Operations ที่ได้รับการจัดรวมกลุ่ม เพื่อใช้ในการทำ Binding ต่อไป

37 Binding, Port and Service  ส่วน Binding กำหนดให้กลุ่ม Operation ที่ มีอยู่ใน Port Type ใด ๆ สามารถให้บริการ ผ่านทาง Transport ใดได้บ้าง นั่นหมายถึง Port Type หนึ่ง ๆ สามารถจะให้บริการผ่าน Transport ได้หลายชนิด  Transport ใน Web Service มักจะใช้ HTTP  ส่วน Port กำหนดตำแหน่ง Address ที่ ผู้ใช้บริการจะเข้ามาใช้บริการจาก Web Service ได้ โดยกำหนด Endpoint Address เข้ากับส่วน Binding ใด ๆ ที่มีอยู่  ส่วน Service เป็นกลุ่มของ Port ที่ระบุ Endpoint Address สำหรับให้บริการแล้ว ผู้ใช้บริการ Service Consumer ที่อยู่ ภายนอกสามารถอ้างถึง Service นี้ได้

38 Service Group Services group operations in the same way that objects or classes group methods Service Network Address Binding … Operation1 Operation2 Port Port Type Network Address Binding … Operation1 Operation2 Port Port Type Network Address Binding … Operation1 Operation2 Port Port Type

39 Please see, Overview & Example UDDI Slide For Win!!! Find | Universal Description, Discovery, and Integration : UDDI Service Registry Service Provider Service Requestor Publish Bind Find UDDI SOAP WSDL

40 Universal Description, Discovery, and Integration (UDDI)  UDDI สนับสนุนโดย OASIS  UDDI มีหน้าที่ในการช่วยค้นหา Web Services และให้ข้อมูลต่าง ๆ ที่จำเป็นต่อผู้ ร้องขอ  UDDI จะจัดเก็บข้อมูลเชื่อมโยงไปยัง WSDL ของบริการ Web Services ใหม่ ๆ ที่ได้รับการ Register เข้ามา รวมทั้งข้อมูลอื่น ๆ ที่ อธิบาย Web Services เพื่อให้บริการค้นหาได้  UDDI ก็คือ Registry ของข้อมูลคำอธิบาย เกี่ยวกับ Web Services (Web Services Metadata) นั่นเอง

41 Public UDDI  Public UDDI คือกลุ่มผู้ทำหน้าที่ให้บริการการ สืบค้นบริการ Web Services ในเครือข่าย อินเทอร์เน็ต  กลุ่มผู้ดูแล Public UDDI  IBM  Microsoft  SAP  HP  NTT  Etc  ข้อมูลที่ทำการ Register จะกระจายไปทั่วถึง กันในกลุ่มผู้ดูแล Public UDDI โดยอัตโนมัติ  ผู้ใช้ Public UDDI สามารถส่ง SOAP Request ไปร้องขอการค้นหา Web Services ที่ตนต้องการได้จากบริษัทใด ๆ ในกลุ่มผู้ดูแล

42 UDDI Operators SAP UDDI Server IBM UDDI Server Microsoft UDDI Server HP UDDI Server Others UDDI Server

43 UDDI Information Model name = xmethods categories = contact = xmethods.net (1..n) name = CurrencyExchangeServiceca tegories = (1..n) access point = ods.net:80/soap name = CurrencyExchangeModel URL = urrencyExchangeService.wsdl name = Australian Import relationship = business partner created = 03/01/04 modified = 05/01/04

44 OVERVIEW WEB SERVICE BY PHP Suranglutch Chaokoksoohng Informatics BUU.

45 Web Service by PHP  Must to have  PHP  PHP NUSOAP  Apache server  WSDL Editor

46 PHP NUSOAP  สนับสนุน SOAP  สามารถ Generate WSDL ได้  ดาวน์โหลดได้ที่

47 Server, Test Program For NUSOAP Service register('hello'); // Register the method to expose // Define the method as a PHP function function hello($name) { return 'Hello, '. $name; } // Use the request to (try to) invoke the service $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ‘ '; $server->service($HTTP_RAW_POST_DATA); ?> อาจกำหนด $debug = 1; เพื่อ Debug error

48 Client, Test Program For NUSOAP Service call('hello', array('name' => 'Scott')); // Display the result print_r($result); ?> อาจจะกำหนดบรรทัดต่อไปนี้เพื่อทำ Debugging echo ' '. htmlspecialchars($client->request, ENT_QUOTES). ' '; echo ' Response '; echo ' '. htmlspecialchars($client->response, ENT_QUOTES). ' ';

49 Debugging on Client Side if ($client->fault) { echo ' Fault: '; print_r($result); echo ' '; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo ' Error: '. $err. ' '; } else { // Display the result print_r($result); }

50 SOAP Request $result = $client->call('hello', array('name' => 'Scott')); POST /phphack/helloworld2.php HTTP/1.0 Host: localhost User-Agent: NuSOAP/0.6.8 (1.81) Content-Type: text/xml; charset=ISO SOAPAction: "" Content-Length: 538 Scott

51 SOAP Response $server->service($HTTP_RAW_POST_DATA); HTTP/ OK Server: Microsoft-IIS/5.0 Date: Wed, 03 Nov :32:34 GMT X-Powered-By: ASP.NET X-Powered-By: PHP/4.3.4 Server: NuSOAP Server v0.6.8 X-SOAP-Server: NuSOAP/0.6.8 (1.81) Content-Type: text/xml; charset=ISO Content-Length: 556 Hello, Scott

52 Web Service by PHP  กำหนดตำแหน่งเพื่อเรียกใช้ NUSOAP ใน PHP โดยเลือก กำหนดอย่างใดอย่างหนึ่ง จาก  include (‘nusoap.php’);  include_once(‘nusoap.php’);  require (‘nusoap.php’);  require_once (‘nusoap.php’);

53 Making Service Part  สร้าง Server Instant $service = new soap_server;  กำหนด WSDL สำหรับการเรียกใช้เซอร์วิส ซึ่ง NUSOAP จะทำการ Generate WSDL ให้เอง $service->configureWSDL(“ ชื่อ WSDL”, “urn ของ WSDL”);  ลงทะเบียนเซอร์วิสกับ SOAP Server  ทำการสร้างฟังก์ชั่นเพื่อให้บริการ  กำหนดการส่งข้อมูลกลับไปยัง Client $service- >service(HTTP_RAW_POST_DATA); NUSOAP API ดูได้ที่ Tuturial:

54 Example: Web Service in restaurant Client - รับประเภทอาหาร Client - รับประเภทอาหาร Server - รับประเภทอาหาร - ส่งรายการอาหาร Server - รับประเภทอาหาร - ส่งรายการอาหาร HTML Form User เลือก ประเภทอาหาร HTML Form User เลือก ประเภทอาหาร CateringServiceClient.php CateringService.php 1 Call getFoodName() - แสดงรายการอาหาร 2

55 Catering Service Coding configureWSDL('CateringService', 'urn:CateringServiceWsdl'); // กำหนด Type ต่าง ๆ ใน WSDL ….. $server-> register('getFoodName', // method name array('typefood' => 'xsd:string'), // input parameters array('food' => 'tns:foodnameArray'), // output parameters กำหนดใน SOAP 'urn:CateringServiceWsdl', // namespace 'urn:CateringServiceWsdl#getFoodName', // SOAPAction 'rpc', // style 'encoded', // use 'cateringbufService') ;

56 Catering Service Coding (con.2) function getfoodName($typefood){ $food=array(); // อาจจะมีการติดต่อฐานข้อมูลก็ได้ … return $food; } // Use the request to (try to) invoke the service $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; // ส่งผลลัพธ์กลับไปยัง Client program $server->service($HTTP_RAW_POST_DATA); php?>

57 Catering Service Coding (con.3)  การกำหนด ComplexType สำหรับ Output message $server->wsdl->addComplexType( 'fooddetail', 'complexType', 'struct', 'all', '', array( 'foodname' => array('name'=>'foodname','type'=>'xsd:string'), ) ); Output message ของโปรแกรม Server Output message ของ SOAP

58 Catering Service Coding (con.4)  การกำหนด ComplexType สำหรับ Output message $server->wsdl->addComplexType( 'foodnameArray', //name of output variable 'complexType', 'array', ' ', 'SOAP-ENC:Array', array(), array( array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:fooddetail[]') // Array foodname µÒÁ·Õè»ÃСÒÈäÇé¢éÒ§º¹ ), 'tns:fooddetail' );

59 ComplexType  ตัวอย่าง ComplexType ที่มีหลาย Element $server->wsdl->addComplexType( 'Person', 'complexType', 'struct', 'all', '', array( 'firstname' => array('name' => 'firstname', 'type' => 'xsd:string'), 'age' => array('name' => 'age', 'type' => 'xsd:int'), 'gender' => array('name' => 'gender', 'type' => 'xsd:string') ) ); function listAllPersons( Input_Message ) { $pvar[0] = array (‘firstname’ => ‘Nid’, ‘age’=> 23, ‘gender’ =>’Female’); $pvar[1] = array (‘firstname’ => ‘Dang’, ‘age’=> 22, ‘gender’ =>’Female’); … return $pvar; } Output message

60 Catering Service Client Coding call('getFoodName',$_GET["typefood"]); // แสดงผลลัพธ์ } ?>

61

62 Calling Service by WSDL //Set proxy $client = new soapclient('GoogleSearch.wsdl', true, $proxyhost, $proxyport, $proxyusername, $proxypassword); $err = $client->getError(); if ($err) { echo ' Constructor error '. $err. ' '; } $client->soap_defencoding = 'UTF-8'; // Set $params …. $result = $client->call('doGoogleSearch', $params);

63 References…and other great links!  how soap works  Index for articles and various SOAP related resources.  Older soap specification SOAP: Simple Object Access Protocol  soap primer  soap school  Topics in Software Engineering, Web Infrastructure, Services, and Applications,  understanding soap  W3C SOAP  W3c SOAP notes


ดาวน์โหลด ppt 3# SOAP SIMPLE OBJECT ACCESS PROTOCOL AND 4# OVERVIEW WEB SERVICE BY PHP Suranglutch Chaokoksoohng Informatics BUU.

งานนำเสนอที่คล้ายกัน


Ads by Google