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

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

Session 4: Web Services Dr. Nipat Jongsawat.

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


งานนำเสนอเรื่อง: "Session 4: Web Services Dr. Nipat Jongsawat."— ใบสำเนางานนำเสนอ:

1 Session 4: Web Services Dr. Nipat Jongsawat

2 หัวข้อนำเสนอ XML เบื้องต้น SOAP WSDL UDDI สรุป Dr. Nipat Jongsawat

3 XML เบื้องต้น Dr. Nipat Jongsawat

4 ย่อมาจาก Standard Generalized Markup Language
มาตรฐาน SGML (ISO 8879) ย่อมาจาก Standard Generalized Markup Language เป็นมาตรฐานสากลในการกำหนดโครงสร้าง (Structure) และเนื้อหา (Content) ของเอกสาร เพื่อการแลกเปลี่ยนเนื้อหาข้อมูลกัน (Interchangeable) โดยไม่ขึ้นกับอุปกรณ์ (Device-Independent) และไม่ขึ้นกับระบบ (System-Independent) ใช้ DTD (Document Type Definition) ในการตรวจทานโครงสร้างของเอกสารได้ มีขีดความสามารถสูงและซับซ้อน Dr. Nipat Jongsawat

5 มาตรฐาน XML ย่อมาจาก “eXtensible Markup Language”
เป็นภาษาที่ใช้เป็น Meta-Language Meta-Language คือภาษาที่ใช้อธิบายอีกภาษาหนึ่งได้ เป็นการประยุกต์ใช้งาน SGML ให้ง่ายโดยคงส่วนที่ดีของ SGML ไว้ มีความยืดหยุ่นและปรับใช้งานง่ายกว่า HTML ซึ่งเน้นที่การนำเสนอเอกสาร (Presentation) โดยเฉพาะ ในการใช้งาน จะประกอบด้วย XML Document XML Schema XML มีลักษณะ extensible เพราะเพิ่ม tag ได้เองตามต้องการ HTML เป็น markup lang ที่มีโครงสร้างเฉพาะสำหรับการนำเสนอเอกสาร (presentation) โครงสร้างจะตายตัว Dr. Nipat Jongsawat

6 ตัวอย่างของ XML Document
<Book xmlns=" ISBN="12345"> <Title> Putting up with Keith: A Guide for the Living </Title> <Author> Lara Ballinger </Author> <Publisher> ... Addison-Wesley </Publisher> </Book> Dr. Nipat Jongsawat

7 XML Element และ Attribute
XML document ประกอบด้วยชุดของ XML elements และ attributes ที่เขียนขึ้นเพื่อบันทึกเนื้อหาข้อความ ตัวอย่างของ XML element: <Address> 100 Main Street, North Bend, WA 98045 </Address> เราบันทึกเนื้อหา textual data อยู่ระหว่าง เครื่องหมาย element เปิดชื่อ <Address> และปิดท้ายด้วยเครื่องหมาย element ปิดชื่อ </Address> เราสามารถเพิ่ม attribute ชื่อ addressType ภายในเครื่องหมาย element <Address> เพื่อเพิ่มเติมรายละเอียดตามต้องการได้คือ <Address addressType="Business"> Attribute type เป็น string เสมอ <Address addressType=“Business”/> แบบนี้เรียกว่า empty tag Dr. Nipat Jongsawat

8 XML Namespace เราใช้ Namespace ใน XML Document เพื่อระบุที่มาของ element ที่อ้างถึงได้ Namespaces จะกำหนดไว้โดยใช้ attribute ชื่อ xmlns เช่น xmlns = “ ค่าที่กำหนดใน xmlns มักจะต้อง Unique เสมอ โดยทั่วไปมักจะใช้ URL เป็นค่าของ Namespace จริง ๆ แล้ว namespace ระบุโดย URI (Uniform Resource Identifier) ซึ่งแบ่งเป็น URL กับ URN แต่นิยม URL URL (Uniform Resource Locator) point ไปยัง file หรือ web resource อื่น ๆ URN (Uniform Resource Name) เป็นแค่ชื่อ ไม่ได้ point ไปไหน Dr. Nipat Jongsawat

9 ตัวอย่างการใช้ Namespace ใน XML
<MyDocument> <Address xmlns="Keithba.com/Contacts” addressType="Business"> 100 Main Street, North Bend, WA 98045 </Address> <Address xmlns=“ > </MyDocument> การใช้ namespace เป็นการทำให้ชื่อ element กลายเป็น qualified name เพื่อให้มีความ unique และช่วย resolve conflict ระหว่างการใช้ชื่อ element เดียวกัน แต่ความหมายในการใช้งานต่างกัน Dr. Nipat Jongsawat

10 การใช้ Namespace แบบย่อ
<c:Contact xmlns:c=" xmlns:b=" <c:Name>Keith Ballinger, Inc</c:Name> <c:Address c:addressType="Business"> 100 Main Street, North Bend, WA </c:Address> <b:Address> </b:Address> </c:Contact> Dr. Nipat Jongsawat

11 โครงสร้างแฟ้มข้อมูล XML
เป็นแบบต้นไม้ (Tree) มี Root Node มี Internal Node มี Leaf Node MyDocument Address Website Country Street <MyDocument> <Address xmlns="Keithba.com/Contacts" addressType="Business"> <Street> 100 Main Street, North Bend, WA 98045 </Street> <Country>USA</Country> </Address> <Website xmlns=" > </Website> </MyDocument> 100 Main Street, North Bend, WA 98045 USA โครงสร้างที่ต่างกันพอเข้ารหัสจะได้ผลที่ต่างกัน Dr. Nipat Jongsawat

12 โครงสร้างแฟ้มข้อมูล XML
NewDocument Address Website Street Country <MyDocument> <Address xmlns="Keithba.com/Contacts" addressType="Business"> <Street> 100 Main Street, North Bend, WA 98045 </Street> <Country>USA</Country> </Address> <Website xmlns=" > </Website> </MyDocument> 39 Moo 1,, Rangsit-Nakhon Nayok Rd., Khlong Hok, Khlong Luang, Pathum Thani 12120 Thailand โครงสร้างที่ต่างกันพอเข้ารหัสจะได้ผลที่ต่างกัน Dr. Nipat Jongsawat

13 XML มาเกี่ยวข้องอย่างไรใน Web Services
ระบบ Service Consumer จะทำการส่งคำร้องขอ (Request) ไปยังระบบ Service Provider คำร้องขอจะเป็นข้อความแบบ Text เสมอ ข้อความแบบ Text นี้จะได้รับการเขียนเป็น XML Document เรียกว่า XML Message XML Message นี้เองที่ได้รับการส่งผ่านไปมา โดยบรรจุใน SOAP Envelope อีกทีหนึ่ง รวมกันเรียกว่า SOAP Message Dr. Nipat Jongsawat

14 XML Message สามารถได้รับการรักษาความมั่นคงได้ไหม
XML with Digital Signature XML with Encryption/Decryption Digital Signature เป็นลายเซ็นอิเล็กทรอนิกส์ที่เพิ่มเข้ามาใน XML Message เพื่อใช้ในการระบุความเป็นต้นแบบที่ไม่ได้รับการแก้ไขของข้อความ (บอกว่าเป็นต้นฉบับจริงหรือไม่) Encryption/Decryption เป็นการนำเนื้อหาของ XML Message บางส่วนมาเข้ารหัสก่อนส่ง และถอดรหัสก่อนการอ่านจริง Security ใน WS สามารถใช้ SSL ได้ (secure data transfer สำหรับ internet browsing, , instant messaging มีการ authenticate server ผู้รับ (ในบางกรณี ทำกับ client ผู้ส่งด้วย มีการเข้ารหัสข้อมูล) แต่จะเป็น security ในระดับล่าง โดย provide เฉพาะ basic เช่น encryption (แต่ SSL ก็ไม่ได้ช่วย encryption ได้ทั้งหมด) ใน WS ยังต้องการ security มุมอื่นอีก เช่น authorization, non-repudiation (พิสูจน์ได้ว่ามีการส่งโดยผู้ส่งหรือรับโดยผู้รับจริงเพื่อให้ปฏิเสธไม่ได้ว่าไม่ได้ส่งหรือรับ) คือเกี่ยวกับพวก policy ต่าง ๆ ดังนั้นจึงต้องการ security ในระดับบน ในแบบอื่น ๆ ด้วย SSL มีข้อจำกัดคือ SSL ใช้ได้กับการส่ง point-to-point แต่ถ้าส่งแบบ multicast จะใช้ไม่ได้ ถ้าข้อมูลเราจะ encrypt 2 ส่วน ส่วนหนึ่งให้เฉพาะคนหนึ่งอ่าน อีกส่วนให้เฉพาะอีกคนหนึ่งอ่าน SSL จะ encrypt ในลักษณะนี้ไม่ได้ SOAP msg ที่ส่งจากผู้ส่งไปยังผู้รับนั้น อาจจะผ่าน SOAP node หลายตัวที่ทำหน้าที่ router ดังนั้นหากจาก node หนึ่งไปยังอีก node หนึ่ง ไม่ได้ใช้ protocol ที่ SSL สนับสนุน (เช่น HTTP, SMTP, FTP) ก็จะใช้ไม่ได้ เครื่องมือต่าง ๆ ที่ใช้ในการพัฒนา ก็ทำพวก security ได้ (เช่น .NET ก็มีเครื่องมือทำ encrypt) แต่เหมือนกับเอาสิ่งที่มีอยู่มาใช้ ซึ่งก็ใช้ได้แต่อาจจะไม่ดีทั้งหมด จะต้องรอมาตรฐาน โดยมาตรฐาน WS-security ที่กำลังได้รับการพัฒนาอยู่ เป็น security ในระดับบน ส่วนการทำ security ในระดับ messaging คือการทำที่ตัว XML msg เองเลย ซึ่งก็ทำได้ 2 แบบคือ digital signature กับ encryption/decryption Digital signature ทำโดยการหา digest คือ นำ XML msg มาผ่าน hash function (เช่น MD5, SHA) และจะได้ข้อมูล fixed length แล้ว encrypt อีกทีด้วย private key ของผู้ส่ง กลายเป็น signature ที่แนบไปกับ SOAP msg ส่วนฝั่งคนรับก็เอา XML msg มา digest แล้วเทียบกับ signature ที่ได้มาและ decrypt ด้วย public key ของผู้ส่งแล้ว ถ้าตรงกันแปลว่าข้อมูลของจริง คือผู้ส่ง sign มาจริงและข้อมูลไม่ถูกเปลี่ยนแปลงระหว่างทาง Digital signature เกี่ยวกับ authenticity ไม่เกี่ยวกับ confidentiality ไม้ได้ป้องกันการอ่าน แต่ encryption ป้องกันการอ่าน Dr. Nipat Jongsawat

15 ทำไม XML จึงได้รับความนิยมมาก
ผู้ใช้สามารถอ่านทำความเข้าใจข้อมูลที่แลกเปลี่ยนกันได้ไม่ยาก การประมวลผลข้อความ Text ทำได้ง่ายในทุกแพลตฟอร์ม มีเครื่องมือในการพัฒนาที่ฟรีหรือมีราคาถูกอยู่มากมาย XML Document สามารถมีแฟ้ม XML Schema ซึ่งอธิบายชนิดและรูปแบบของข้อมูลที่ใช้ในเอกสาร จึงช่วยในการตรวจสอบข้อมูลที่แลกเปลี่ยน บริษัทผู้ผลิตซอฟต์แวร์ต่างใช้ XML เป็นมาตรฐานในการแลกเปลี่ยนข้อมูลกันอย่างแพร่หลาย Dr. Nipat Jongsawat

16 XML Schema XML Schema คือแฟ้มข้อมูลที่ใช้อธิบายรูปแบบและเงื่อนไขต่าง ๆ ของข้อมูลที่มีอยู่ในแต่ละ Element และ Attribute ใน XML Document เรามักจะมี XML Schema เพื่ออธิบายแฟ้ม XML Document (แต่ก็ไม่จำเป็น) ผู้รับข้อมูล XML Document สามารถตรวจสอบโครงสร้างและรูปแบบของค่าใน Element และ Attribute ได้โดยใช้ XML Schema ดูรายละเอียดใน XML Schema Part 0: Primer, Part 1: Structures, Part 2: Datatypes ของ W3C การใช้งาน XML document ไม่จำเป็นต้องมี XML schema หรือ DTD กำกับ แต่ถ้ามีก็จะเป็นประโยชน์ในการตรวจสอบโครงสร้างและรูปแบบข้อมูลที่แลกเปลี่ยนกันได้ Dr. Nipat Jongsawat

17 ตัวอย่าง XML Schema XML schema นี้อ้างถึงชื่อ element ต่างๆ ที่นิยามไว้ภายใต้ namespace ชื่อ XML schema นี้ไม่ได้ระบุ attribute ชื่อ targetNamespace ไว้ใน tag เปิดของ <schema> ดังนั้นชื่อ tag ต่าง ๆ ที่นิยามใหม่ในนี้จึงเป็นชื่อที่ไม่อยู่ภายใต้ namespace ใด Dr. Nipat Jongsawat

18 ตัวอย่างเอกสาร XML Document ที่เกิดขึ้น
ไม่มีการระบุการอ้างถึง namespace ใด เพราะตอนกำหนด tag ต่าง ใน XML schema ไม่ได้กำหนด targetNamespace ไว้ Dr. Nipat Jongsawat

19 XML Schema คืออะไรกันแน่
XML Document บันทึกเนื้อหาที่มี โดยมี Tag แทรกเพื่อกำกับหน้าข้อความ หรือตามหลังข้อความ XML Schema เป็นแฟ้มข้อมูลที่ใช้อธิบาย Tag ที่ใช้ใน XML Document โดยระบุชนิดข้อมูล ช่วงค่าเริ่มต้นและค่าสูงสุด ตลอดจนรูปแบบของข้อมูล XML Schema จะใช้คู่กับ XML Document Dr. Nipat Jongsawat

20 XML Schema มีประโยชน์อย่างไร
XML Schema จะกำหนดคำนิยามในการทดสอบและตรวจสอบความถูกต้องของเอกสาร XML Document ได้ว่าเป็นไปตามมาตรฐานหรือไม่ ดังนั้นสำหรับ Web Services จะมีการกำหนด XML Schema ที่เป็นมาตรฐานสำหรับข้อมูลที่แลกเปลี่ยนหรือต้องการสื่อสารกัน Dr. Nipat Jongsawat

21 เราสามารถสร้าง Tag ชื่อใหม่ๆตามต้องการได้หรือไม่
<MyCompanyName …> … </MyCompanyName> <MyFriendName …> … </MyFriendName> จากนั้นก็นำคำใหม่ที่มีไปอธิบายในแฟ้ม XML Schema ได้ โดยระบุชนิดและค่าที่เป็นไปได้ ตลอดจนรูปแบบ Tag ชื่อใหม่ๆ ที่กำหนดขึ้นนี้ สามารถใช้งานร่วมกันได้ โดยผู้ใช้ทุกระบบที่ได้รับเอกสาร XML Schema ไปแล้วก็สามารถนำมาสนับสนุนการอ่านความหมายของ XML Document ที่เกี่ยวข้องกันได้เสมอ Dr. Nipat Jongsawat

22 องค์กรใดเป็นผู้กำหนดมาตรฐาน XML Schema
World Wide Web Consortium (W3C) เป็นองค์กรที่ดูแล กำหนดมาตรฐาน XML Schema เราเรียกว่า W3C XML Schema ก็ได้ W3C XML Schema ได้รับการกำหนดขึ้นมาเพื่อเป็นทางเลือกหนึ่งในการใช้งานแทน DTD (Document Type Definition) ซึ่ง DTD ก็สามารถใช้อธิบายชนิดข้อมูลใน XML Document ได้เช่นเดียวกัน Dr. Nipat Jongsawat

23 XML Schema ดีกว่า DTD หรือไม่
W3C XML Schema สามารถอธิบาย Tag ในเอกสาร XML Document ได้เช่นเดียวกับ DTD W3C XML Schema ดีกว่า DTD มีความยืดหยุ่นในการกำหนด Type มากกว่า สามารถกำหนด Type ใหม่เองได้ สามารถกำหนดรูปแบบค่าข้อมูลได้ XML Schema เป็น XML Format ด้วย จึงทำให้สามารถจัดการได้ง่ายกว่า รองรับ Namespace Dr. Nipat Jongsawat

24 ยกตัวอย่าง DTD vs. XML Schema เทียบกันได้ไหม
<!ELEMENT person ( title?, firstname, middlename*, lastname)> <!ELEMENT title (#PCDATA)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT middlename (#PCDATA)> <!ELEMENT lastname (#PCDATA)> <!ATTLIST person role (student | teacher | staff) #REQUIRED> XML Schema <xsd:element name="person"> <xsd:complexType> <xsd:sequence> <xsd:element name="title" type="xsd:string" minOccurs="0"/> <xsd:element name="firstname" type="xsd:string"/> <xsd:element name="middlename" type="xsd:string" maxOccurs="unbounded"/> <xsd:element name="lastname" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="role" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="student"/> <xsd:enumeration value="teacher"/> <xsd:enumeration value="staff"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> Dr. Nipat Jongsawat

25 SOAP Dr. Nipat Jongsawat

26 SOAP ได้รับการ Implement อย่างกว้างขวาง
กลุ่มผู้ผลิตกว่า 80 บริษัทได้ Implement SOAP ไว้ในผลิตภัณฑ์ของตน SOAP เป็นที่แพร่หลาย และเป็นทางเลือกที่ดีสำหรับการใช้ส่งข้อความไปมาบนเครือข่ายเว็บ มีการ Implement SOAP ไว้ในผลิตภัณฑ์ของแต่ละบริษัท เช่น Apache SOAP, SOAP for Java (ค่าย IBM), Microsoft SOAP Dr. Nipat Jongsawat

27 SOAP จะเน้นที่ความง่าย
ผู้พัฒนาต้นแบบข้อกำหนดของ SOAP มีความตั้งใจให้ SOAP เป็นข้อกำหนดที่ เล็กและง่าย (Small and Simple) ความที่มีขนาดเล็กและง่าย ส่งผลให้ SOAP ได้รับการสนับสนุนและพัฒนาได้ง่ายเพื่อให้ SOAP เป็นส่วนหนี่งของผลิตภัณฑ์ทั่วไปได้ SOAP ได้รับการพัฒนาดัดแปลง เพิ่มเติมให้มีขีดความสามารถมากขึ้นตามผลิตภัณฑ์ด้วย ทำให้ต้องมีองค์กรกลางคอยควบคุมดูแลมาตรฐานกลาง W3C จะเป็นผู้รับหน้าที่ในการดูแลการพัฒนาปรับปรุง SOAP Dr. Nipat Jongsawat

28 SOAP ทำหน้าที่ส่งข้อความให้กับ Web Services
SOAP เดิมย่อมาจาก Simple Object Access Protocol แต่ปัจจุบันไม่ได้ใช้เป็นตัวย่อแล้ว SOAP ทำหน้าที่ส่งข้อความจากต้นทางที่หนึ่งไปปลายทางอีกที่หนึ่งผ่านเครือข่ายได้ ห่อหุ้ม XML Message ที่ต้องการสื่อสารไว้ และอาจใส่ Header บางอย่าง เพื่อนำไปใช้ประโยชน์ได้ SOAP เป็น XML Document ประเภทหนึ่งที่สามารถได้รับการส่งผ่านเครือข่ายโดยใช้โพรโทคอลแบบเว็บได้ เว็บเป็นโพรโทคอลที่เป็นที่นิยมที่สุดในขณะนี้ SOAP ไม่ได้ใช้เป็นตัวย่อแล้ว เพราะไม่เกี่ยวกับ object orientation ทำให้สับสน และก็ไม่ simple เท่าไรนักในที่สุด เนื่องจาก SOAP ใช้กับ service มาก บางทีจึงถูกเรียกว่า Service-Oriented Access Protocol เราส่ง XML msg เปลือย ๆ ไปกับ HTTP เลยไม่ดี เพราะระหว่างผู้ส่งกับผู้รับจะผ่าน SOAP node ที่เป็น intermediary หลายตัว ทำหน้าที่ routing ดังนั้นถ้ามีบางส่วนในระหว่างทางไม่ใช้ HTTP (เช่นใช้ SMTP) ก็จะส่งต่อไม่ได้ ดังนั้นจึงห่อ XML msg ไว้ใน SOAP msg อีกที เพื่อให้ลำเลียงต่อได้ และยังสามารถใส่ข้อมูลเพิ่มใน header ได้ Dr. Nipat Jongsawat

29 SOAP สามารถขยายขีดความสามารถของ HTTP ในการส่งผ่านข้อความ XML
โดยทั่วไปเราสามารถร้องขอการแสดงผลหน้าจอ HTML Page ได้จากการทำ HTTP Request จากโปรแกรม Browser ที่ห่างไกลไปสู่ HTTP Server HTML Page จะได้รับการส่งผ่านไปมาบนเครือข่าย โดยแนบไปกับ HTTP Message ได้ กรณี SOAP เป็นส่วนขยายสำหรับ HTTP เพื่อทำให้สามารถส่งผ่าน XML ไปมาผ่านเครือข่าย โดยแนบไปกับ HTTP Message อีกต่อหนึ่งได้เช่นเดียวกัน SOAP Message จะห่อหุ้ม XML Document ไว้ SOAP Message จะได้รับการแนบไปกับ HTTP Request ไปสู่ปลายทาง HTTP Server SOAP Message จะได้รับการแนบตอบกลับมากับ HTTP Response จาก HTTP Server HTTP Server จะมีส่วนประกอบสำคัญเรียกว่า HTTP Listener ทำหน้าที่ตรวจรับและส่งผ่าน HTTP Message เสมอ เมื่อ HTTP Server ได้รับ HTTP Message ที่มี SOAP Message แนบมาด้วย SOAP Message ที่แนบมาจะได้รับการส่งต่อไปให้ SOAP Processor ต่อไป Dr. Nipat Jongsawat

30 แผนภาพการส่งผ่าน SOAP แนบไปกับ HTTP Message
SOAP Message XML request Message Do RPC call HTTP Engine HTTP Engine Procedure SOAP Engine SOAP Engine SOAP Message SOAP engine ฝั่งผู้ส่ง ห่อ XML msg ให้เป็น SOAP msg HTTP engine ฝั่งผู้ส่ง ห่อ SOAP msg ให้เป็น HTTP msg HTTP engine ฝั่งผู้รับ มี HTTP listener คอยฟังอยู่ เมื่อได้รับก็แกะ HTTP msg แล้วถ้าเห็น SOAP action ก็จะรู้ว่าข้างในเป็น SOAP msg (ไม่ใช่ HTML) ก็จะส่งต่อให้ SOAP engine SOAP engine ฝั่งผู้รับ แกะ SOAP msg เพื่อให้ได้ XML msg และเรียก operation มาประมวลผล ปกติเครื่องมือที่ใช้พัฒนาจะจัดการเรื่องพวกนี้ให้ โดยเราเพียงระบุ ก็จะทำให้เกิดการห่อเหล่านี้หลังจาก compile prog พวกนี้ โค้ดก็จะเป็น internal ธรรมดา (ไม่ให้ทำ remote call) XML reply Message Dr. Nipat Jongsawat

31 โครงสร้างของ SOAP SOAP BODY FAULT SOAP message หนึ่ง ๆ จะประกอบด้วย :
SOAP ENVELOPE FAULT SOAP HEADER Transport protocol MIME header SOAP message หนึ่ง ๆ จะประกอบด้วย : ส่วน Envelope ส่วน Header (Optional) actor attribute mustUnderstand attribute ส่วน Body โดยที่ส่วน Body อาจจะมี element ชื่อ Fault ปรากฏอยู่ด้วย สามารถใส่ข้อมูลเพิ่มเติมไปใน header ได้ เพื่อประโยชน์เช่น security, QoS, routing Dr. Nipat Jongsawat

32 ตัวอย่าง SOAP แนบกับ HTTP Message
Example POST /soap HTTP/1.1 Content Length: 577 Host: services.xmethods.net:80 Content-type: text/xml; charset=UTF-8 SOAPAction: "" <?xml version="1.0" encoding="UFT-8"?> <soap:Envelope xmlns:soapenc=" xmlns:xs=" xmlns:soap=" xmlns:xsi=" …> ... 1 HTTP Header SOAP Message 2 SOAPAction ไม่ได้ระบุอะไร เพราะ service CurrencyExchangeRate นี้มี binding แบบ RPC ซึ่งใน XML msg ที่เป็นเนื้อหาของ RPC จะระบุ operation ที่เรียกอยู่แล้ว แต่ถ้า binding เป็นแบบ document ก็จะระบุ SOAPAction: “/getRate” เพราะไม่อย่างนั้นจะไม่รู้ว่าจะให้เรียก operation อะไร Dr. Nipat Jongsawat

33 ตัวอย่าง SOAP Message ทั่วไปที่พบ
<soap:Envelope xmlns:mrns0="urn:xmethods-CurrencyExchange” xmlns:soap=“ xmlns:soapenc=" xmlns:xs=" xmlns:xsi=" <soap:Body soap:encodingStyle=" <mrns0:getRate> <country1 xsi:type=“xs:string">usa</country1> <country2 xsi:type=“xs:string">thailand</country2> </mrns0:getRate> </soap:Body> </soap:Envelope> <!– optional --> <soap:Header> ... </soap:Header> <!– optional for reply (if failed)--> <soap:Fault> ... </soap:Fault> Dr. Nipat Jongsawat

34 การใช้ SOAP Attachment
Transport protocol โดยทั่วไป เราไม่นิยมส่งผ่านข้อมูลที่เป็นแฟ้มข้อมูลแบบ Binary Data ในส่วน SOAP Body แฟ้มข้อมูล Binary Data มักจะมีขนาดใหญ่มากไม่เหมาะกับการส่งมาเป็นส่วนหนึ่งของ SOAP Body เช่นกัน การส่งผ่านแฟ้มข้อมูล Binary Data ขนาดใหญ่มากๆ นิยมส่งกันเป็น SOAP Attachment คล้ายกรณี attachments. MIME header SOAP ENVELOPE SOAP HEADER SOAP BODY FAULT SOAP with attachment เป็น spec ที่แยกจาก SOAP ธรรมดา MIME คือ Multipurpose Internet Mail Extension เป็น Internet standard สำหรับส่งข้อมูลไปใน นอกเหนือจาก US-ASCII (ภาษาอังกฤษ) เช่น text ในภาษาอื่น และ binary content ได้แก่ image, sound, movie, computer program หรือ multi-part message MIME เป็น component พื้นฐานใน HTTP ด้วย คือใช้แม้ว่าจะไม่ได้เป็นการส่ง Attachment Dr. Nipat Jongsawat

35 ตัวอย่าง SOAP with Attachments
MIME-Version: 1.0 Content-Type: Multipart/Related; boundary=example-boundary; type=application/xop+xml; startinfo="application/soap+xml;action=\" Content-Description: Optimized SOAP message example example-boundary Content-Type: application/xop+xml; charset=UTF-8 type="application/soap+xml;action=\" Content-Transfer-Encoding: 8bit Content-ID: 1 3 2 <?xml version="1.0"?> <env:Envelope xmlns:env=" xmlns:xmlmime=" <env:Body> <m:myLogo xmlns:m=" xmlmime:contentType=“image/jpg"><xop:Include xmlns:xop=" </m:myLogo> ::: <p:myPhoto xmlns:p=" xmlmime:contentType="image/jpg"><xop:Include </p:myPhoto> </env:Body> </env:Envelope> example-boundary Content-Type: image/jpg Content-Transfer-Encoding: binary Content-ID: ::: the binary data ::: Content-ID: 4 Dr. Nipat Jongsawat

36 Web Services Description Language (WSDL)
Dr. Nipat Jongsawat

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

38 ส่วนประกอบหลักของ WSDL
Data types Message Operation Port type Binding Port Service ส่วนประกอบตาม WSDL 1.1 ปัจจุบัน (เม.ย 50) WSDL 2.0 ยังเป็น draft ที่ call for review อยู่ ยังไม่เป็น recommendation WSDL 2.0 มีความแตกต่างออกไป เช่น ไม่มี tag message แล้ว, เปลี่ยนชื่อ tag port type เป็น interface, มี inheritance (extend) Dr. Nipat Jongsawat

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

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

41 ส่วน Binding, Port และ 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 นี้ได้ Dr. Nipat Jongsawat

42 แผนภาพ Service ใด ๆ Service
Port Port Port Port Type Port Type Port Type Operation1 Operation1 Operation1 Operation2 Operation2 Operation2 Binding … Binding … Binding … Network Address Network Address Network Address Network Address เป็นแบบ point-to-point Services group operations in the same way that objects or classes group methods Dr. Nipat Jongsawat

43 1 ตัวอย่างการกำหนด Type และ Message สำหรับเว็บเซอร์วิส Purchase Order Service 2 3 Dr. Nipat Jongsawat

44 ส่วน Root ของ WSDL file 1 Dr. Nipat Jongsawat

45 ส่วน Type ของ WSDL file 1 Dr. Nipat Jongsawat

46 ส่วน Message ของ WSDL file
1 Dr. Nipat Jongsawat

47 ตัวอย่าง Operation ชนิด Request/Response
1 2 3 Dr. Nipat Jongsawat

48 ส่วน Binding ใน WSDL file
1 2 ส่วน Binding ใน WSDL file Dr. Nipat Jongsawat

49 ส่วน Port และ Service 1 2 3 Dr. Nipat Jongsawat

50 อีกตัวอย่างของ WSDL Dr. Nipat Jongsawat
<definitions name="CurrencyExchangeService“ targetNamespace=" xmlns:tns=" xmlns:xsd=" xmlns:soap=" xmlns=" <message name="getRateRequest"> <part name="country1" type="xsd:string" /> <part name="country2" type="xsd:string" /> </message> <message name="getRateResponse"> <part name="Result" type="xsd:float" /> <portType name="CurrencyExchangePortType"> <operation name="getRate"> <input message="tns:getRateRequest" /> <output message="tns:getRateResponse" /> </operation> </portType> <binding name="CurrencyExchangeBinding" type="tns:CurrencyExchangePortType"> <soap:binding style="rpc" transport=" /> <soap:operation soapAction="" /> <input> <soap:body use="encoded" namespace="urn:xmethods-CurrencyExchange" encodingStyle=" /> </input> <output> </output> </binding> <service name="CurrencyExchangeService"> <port name="CurrencyExchangePort" binding="tns:CurrencyExchangeBinding"> <soap:address location=" /> </port> </service> </definitions> อีกตัวอย่างของ WSDL Dr. Nipat Jongsawat

51 Universal Description, Discovery, and Integration (UDDI)
Dr. Nipat Jongsawat

52 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) นั่นเอง Dr. Nipat Jongsawat

53 Public UDDI Public UDDI คือกลุ่มผู้ทำหน้าที่ให้บริการการสืบค้นบริการ Web Services ในเครือข่ายอินเทอร์เน็ต กลุ่มผู้ดูแล Public UDDI IBM Microsoft SAP HP NTT Etc ข้อมูลที่ทำการ Register จะกระจายไปทั่วถึงกันในกลุ่มผู้ดูแล Public UDDI โดยอัตโนมัติ ผู้ใช้ Public UDDI สามารถส่ง SOAP Request ไปร้องขอการค้นหา Web Services ที่ตนต้องการได้จากบริษัทใด ๆ ในกลุ่มผู้ดูแล Public UDDI ปิดตัวลงเพราะการใช้งาน service ในธุรกิจมักเรียก service ที่รู้จักอยู่แล้วหรือเชื่อใจ และพวก service level agreement ต่าง ๆ ยังไม่ mature พอที่จะทำให้ลักษณะของ dynamic discovery มัน work อีกทั้งยังขาดการดูแลจัดการทำให้ข้อมูลที่ register เป็นข้อมูลของเล่นหรือไม่มีจริง ทำให้ลดคุณค่าของ UDDI ไป แต่องค์กรสามารถติดตั้ง private uddi ได้ซึ่งจะดูแลจัดการได้ดีกว่า ต้นปี 2006 IBM, Microsoft, SAP ประกาศปิดไป Dr. Nipat Jongsawat

54 UDDI Operators Microsoft UDDI IBM Server UDDI Server HP SAP UDDI UDDI
Others UDDI Server Dr. Nipat Jongsawat

55 UDDI Information Model
<businessEntity> name = xmethods categories = contact = xmethods.net <publisherAssertion> name = Australian Import relationship = business partner <businessService> (1..n) name = CurrencyExchangeServic ecategories = <operationalInfo> created = 03/01/04 modified = 05/01/04 <tModel> name = CurrencyExchangeModel URL = <bindingTemplate> (1..n) access point = Dr. Nipat Jongsawat

56 สรุป SOA เป็น Architecture ที่ได้รับความสนใจมากขึ้นเพราะมีส่วนช่วยในการทำ Integration Web Services เป็นเทคโนโลยีทางเลือกในการพัฒนา SOA XML, SOAP, WSDL, UDDI ได้รับเลือกให้มาเป็นมาตรฐานในการพัฒนา Web Services Dr. Nipat Jongsawat


ดาวน์โหลด ppt Session 4: Web Services Dr. Nipat Jongsawat.

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


Ads by Google