Session 4: Web Services Dr. Nipat Jongsawat.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การสร้างเว็บเพจด้วยภาษา Html
Advertisements

บทที่ 3 การบริหารพนักงานขาย
การจัดทำเว็บไซต์สำเร็จรูปด้วยโปรแกรม Joomla!
 เครือข่ายคอมพิวเตอร์  การที่ระบบเครือข่ายมีบทบาทและ ความสำคัญเพิ่มขึ้น เพราะไมโครคอมพิวเตอร์ได้รับ การใช้งานอย่างแพร่หลาย จึงเกิดความต้องการที่จะ.
เทคนิคการเขียนข่าว การเขียนข่าวเพื่อการประชาสัมพันธ์เบื้องต้น มีโครงสร้างการเขียนข่าว ประกอบด้วย 1.พาดหัวข่าว (Headline) 2.ความนำ (Lead) 3.ส่วนเชื่อม (Neck/Bridge)
System Database Semester 1, 2009 Worrakit Sanpote 1.
การใช้งานโปรแกรม SPSS
(Information Retrieval : IR)
Computer in Business เรื่อง การใช้งาน Access เบื้องต้น.
ซอฟต์แวร์และการเลือกใช้
ประเภทโครงงาน พัฒนาระบบ (System Development)
การรักษาความปลอดภัยข้อมูลขั้นพื้นฐาน
ประยุกต์ใช้ในงานด้านการศึกษา เทคโนโลยีสารสนเทศที่นำมาใช้สำหรับการเรียนการสอน เป็นการใช้เทคโนโลยีสมัยใหม่หลายอย่าง สอนด้วยสื่อ อุปกรณ์ที่ทันสมัย ห้องเรียนสมัยใหม่
ในเครือข่ายอินเทอร์เน็ต โปรแกรมประยุกต์ หลายชนิด มีการทำงานร่วมกันระหว่างเครื่อง คอมพิวเตอร์ ที่ต่ออยู่ในเครือข่าย โดยอาศัยเครือข่ายเป็น สื่อกลาง ในการติดต่อสื่อสารระหว่างกันและกัน.
Session 5: Case Study Session Dr. Nipat Jongsawat.
เรื่อง หลักการเขียนโปรแกรม เบื้องต้น จัดทำโดย นางสาวชาดา ศักดิ์บุญญารัตน์
การจัดเก็บข้อมูลในแฟ้มข้อมูลธรรมดา นั้น อาจจำเป็นที่ใช้แต่ละคน จะต้องมีแฟ้มข้อมูลของตนไว้เป็นส่วนตัว จึง อาจเป็นเหตุให้มีการเก็บข้อมูล ชนิดเดียวกันไว้หลาย.
1. รู้ถึงความต้องการของตัวเอง ก่อนก่อนเริ่มต้นออกแบบ เมื่อคุณเริ่มคิดจะออกแบบโบรชัวร์ออกมาอย่างไร ให้เริ่มต้น สอบถามลูกค้าของคุณก่อนว่าทำไม เค้าต้องการโบร์ชัวร์
Microsoft Powerpoint Microsoft Powerpoint อีกโปรแกรม หนึ่งของชุด Microsoft Office โปรแกรม Powerpoint นี้ใช้สำหรับการทำพรีเซ็นเทชั่น หรือการนำเสนอข้อมูล.
บทที่ 3 นักวิเคราะห์ระบบและการ วิเคราะห์ระบบ. 1. นักวิเคราะห์ระบบ (System Analysis) 1.1 ความหมายของนักวิเคราะห์ระบบ นักวิเคราะห์ระบบ (System Analysis:
การจัดกิจกรรมการ เรียนรู้แบบการทำ โครงงานคอมพิวเตอร์ การจัดกิจกรรมการ เรียนรู้แบบการทำ โครงงานคอมพิวเตอร์ ครูชาญณรงค์ ปานเลิศ โรงเรียนพระบางวิทยา ครูชาญณรงค์
ซอร์ฟแวร์ ( Software ). Microsoft excel Microsoft excel Microsoft power point.. Link Link.
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts.
เทคโนโลยีพื้นฐานของระบบสารสนเทศ
หน่วยที่ 1 ข้อมูลทางการตลาด. สาระการเรียนรู้ 1. ความหมายของข้อมูลทางการตลาด 2. ความสำคัญของข้อมูลทางการตลาด 3. ประโยชน์ของข้อมูลทางการตลาด 4. ข้อจำกัดในการหาข้อมูลทาง.
Service-Oriented Architecture
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
IP-Addressing and Subneting
เว็บเซอร์วิส Web Services
IP-Addressing and Subneting
ความรู้เบื้องต้นเกี่ยวกับ PHP Introduction to PHP
Content Team: คู่มือการป้องกันสินค้าลอกเลียนแบบ 9 July 2015
อาจารย์อภิพงศ์ ปิงยศ บทที่ 2 : แบบจำลองเครือข่าย (Network Models) part1 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ อาจารย์อภิพงศ์
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
การพัฒนาการใช้งานในระบบเว็บ
บทที่ 5 เครื่องมือสืบค้นข้อมูล (Search Engine)
โครงสร้างภาษา C Arduino
บทที่ 1 โครงสร้างคอมพิวเตอร์พื้นฐาน
กลุ่มคำและประโยค ภาษาไทย ม. ๓
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
บทที่ 8 การควบคุมโครงการ
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
บทที่ 8 การควบคุมระบบสารสนเทศทางการบัญชี : การควบคุมเฉพาะระบบงาน
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
การสร้างโมเดลจำลองความสัมพันธ์ ระหว่างข้อมูล E-R Model
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
การประชุมเชิงปฏิบัติการพัฒนาศักยภาพบุคลากรทางการศึกษาด้านการสอบด้วยคอมพิวเตอร์ (Computer-based Assessment) การรู้เรื่องการอ่าน ด้านคณิตศาสตร์และด้านวิทยาศาสตร์
Internet Technology and Security System
SMS News Distribute Service
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
หน่วยการเรียนรู้ การเขียนโปรแกรมภาษาขั้นพื้นฐาน เรื่อง โครงสร้างพื้นฐาน HTML 5 รหัส รายวิชา ง23102 การงานอาชีพและเทคโนโลยี 6 กลุ่มสาระ การงานอาชีพและเทคโนโลยี
บทที่ 3 : รูปแบบการเชื่อมต่อเครือข่ายและส่วนประกอบของเครือข่ายท้องถิ่น (Topologies and LAN Components) Part1.
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
การวิจัยทางการท่องเที่ยว
สถาปัตยกรรมของฐานข้อมูล
Web Services ศูนย์เชียวชาญฉพาะทางด้านวิศวกรรมซอฟต์แวร์
งานนำเสนอสำหรับโครงการ นิทรรศการวิทยาศาสตร์
ชัยพฤกษ์รัตนาธิเบศร์ - วงแหวน
อินเทอร์เน็ตเบื้องต้น และการออกแบบเว็บไซต์
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
บทที่ 4 การจำลองข้อมูลและกระบวนการ (Data and Process Modeling)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
การออกแบบและพัฒนาเว็บไซต์
Class Diagram.
กระดาษทำการ (หลักการและภาคปฏิบัติ)
ใบสำเนางานนำเสนอ:

Session 4: Web Services Dr. Nipat Jongsawat

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

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

ย่อมาจาก 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

มาตรฐาน 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

ตัวอย่างของ XML Document <Book xmlns="http://keithba.com/Book" 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

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

XML Namespace เราใช้ Namespace ใน XML Document เพื่อระบุที่มาของ element ที่อ้างถึงได้ Namespaces จะกำหนดไว้โดยใช้ attribute ชื่อ xmlns เช่น xmlns = “http://www.thai.ac.th/bookmark” ค่าที่กำหนดใน 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

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

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

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

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

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

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, email, 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

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

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

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

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

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

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

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

องค์กรใดเป็นผู้กำหนดมาตรฐาน 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

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

ยกตัวอย่าง 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

SOAP Dr. Nipat Jongsawat

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

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

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

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

แผนภาพการส่งผ่าน 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 มาประมวลผล ปกติเครื่องมือที่ใช้พัฒนาจะจัดการเรื่องพวกนี้ให้ โดยเราเพียงระบุ annotation ว่า @WebService(), @WebMethod ก็จะทำให้เกิดการห่อเหล่านี้หลังจาก compile prog ถ้าไม่มี @ พวกนี้ โค้ดก็จะเป็น internal ธรรมดา (ไม่ให้ทำ remote call) XML reply Message Dr. Nipat Jongsawat

โครงสร้างของ 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

ตัวอย่าง 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="http://schemas.xmlsoap.org/SOAP/encoding/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/SOAP/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance” …> ... 1 HTTP Header SOAP Message 2 SOAPAction ไม่ได้ระบุอะไร เพราะ service CurrencyExchangeRate นี้มี binding แบบ RPC ซึ่งใน XML msg ที่เป็นเนื้อหาของ RPC จะระบุ operation ที่เรียกอยู่แล้ว แต่ถ้า binding เป็นแบบ document ก็จะระบุ SOAPAction: “/getRate” เพราะไม่อย่างนั้นจะไม่รู้ว่าจะให้เรียก operation อะไร Dr. Nipat Jongsawat

ตัวอย่าง SOAP Message ทั่วไปที่พบ <soap:Envelope xmlns:mrns0="urn:xmethods-CurrencyExchange” xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/” xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <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

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

ตัวอย่าง SOAP with Attachments MIME-Version: 1.0 Content-Type: Multipart/Related; boundary=example-boundary; type=application/xop+xml; start="<myInfo.xml@myCompany.example.org>"; startinfo="application/soap+xml;action=\"http://myCompany.example.org/Action\"" Content-Description: Optimized SOAP message example example-boundary Content-Type: application/xop+xml; charset=UTF-8 type="application/soap+xml;action=\"http://myCompany.example.org/Action\"" Content-Transfer-Encoding: 8bit Content-ID: myInfo.xml@myCompany.example.org> 1 3 2 <?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:xmlmime="http://www.w3.org/2004/06/xmlmime"> <env:Body> <m:myLogo xmlns:m="http://example.org/logo" xmlmime:contentType=“image/jpg"><xop:Include xmlns:xop="http://www.w3.org/2003/12/xop/include" href="cid:logo.gif@myCompany.example.org"/> </m:myLogo> ::: <p:myPhoto xmlns:p="http://example.org/photos" xmlmime:contentType="image/jpg"><xop:Include href="cid:johnPhoto.jpg@myCompany.example.org"/> </p:myPhoto> </env:Body> </env:Envelope> example-boundary Content-Type: image/jpg Content-Transfer-Encoding: binary Content-ID: <logo.gif@myCompany.example.org> ::: the binary data ::: Content-ID: <johnPhoto.jpg@myCompany.example.org> 4 Dr. Nipat Jongsawat

Web Services Description Language (WSDL) Dr. Nipat Jongsawat

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

ส่วนประกอบหลักของ 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

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

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

ส่วน 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

แผนภาพ 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

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

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

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

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

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

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

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

อีกตัวอย่างของ WSDL Dr. Nipat Jongsawat <definitions name="CurrencyExchangeService“ targetNamespace="http://www.xmethods.net/sd/CurrencyExchangeService.wsdl" xmlns:tns="http://www.xmethods.net/sd/CurrencyExchangeService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <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="http://schemas.xmlsoap.org/soap/http" /> <soap:operation soapAction="" /> <input> <soap:body use="encoded" namespace="urn:xmethods-CurrencyExchange" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input> <output> </output> </binding> <service name="CurrencyExchangeService"> <port name="CurrencyExchangePort" binding="tns:CurrencyExchangeBinding"> <soap:address location="http://services.xmethods.net:80/soap" /> </port> </service> </definitions> อีกตัวอย่างของ WSDL Dr. Nipat Jongsawat

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

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

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

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

UDDI Information Model <businessEntity> name = xmethods categories = 82101528 contact = xmethods.net <publisherAssertion> name = Australian Import relationship = business partner <businessService> (1..n) name = CurrencyExchangeServic ecategories = 84121603 <operationalInfo> created = 03/01/04 modified = 05/01/04 <tModel> name = CurrencyExchangeModel URL = http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl <bindingTemplate> (1..n) access point = http://services.xmethods.net:80/soap Dr. Nipat Jongsawat

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