เว็บเซอร์วิส Web Services
วัตถุประสงค์และเป้าหมาย เพื่อศึกษาองค์ประกอบและหลักการทำงานของเว็บเซอร์วิส เพื่อศึกษาการสร้าง เว็บเซอร์วิส
บทคัดย่อ เว็บเซอร์วิส (Web Services) คือ แอปพลิเคชันหรือโปรแกรมซึ่งทำงานอย่างใดอย่างหนึ่งในลักษณะให้บริการแก่ แอปพลิเคชัน หรือ โปรแกรมอื่นๆ ผ่านเว็บ โดยใช้ภาษา XML (The Extensible Markup Language) เป็นสื่อในการแลกเปลี่ยนข้อมูลระหว่างกัน ทำให้ผู้ใช้สามารถเรียกใช้บริการต่างๆของแอปพลิเคชัน ที่อยู่บน แพลตฟอร์ม ใด ๆ ก็ได้ โดยค้นหา เว็บเซอร์วิส ได้โดยที่ไม่จำเป็นต้องรู้ที่อยู่จริงของ แอปพลิเคชั่น หรือ โปรแกรมนั้น สิ่งสำคัญในการเรียกใช้งาน เว็บเซอร์วิส คือ ต้องรู้ที่อยู่ของบริการนั้นๆ จาก UDDI (Universal Description, Discovery, and Integration) รู้คุณลักษณะของเว็บเซอร์วิส จากเอกสาร WSDL (Web Services Description Language) และการร้องขอบริการจากผู้ขอใช้บริการ-การรอผลจากผู้ให้บริการ จะใช้โพรโตคอล SOAP (Simple Object Access Protocol)
บทนำ ในอดีต มีการสร้างเว็บเพจจากภาษา HTML ล้วนๆ การแสดงผลในเว็บเพจจึงมีลักษณะ ตายตัวแบบตายตัว( Static) ต่อมาเว็บเริ่มมีลูกเล่นที่มากขึ้น คือ สามารถกรอกข้อมูลต่างๆลงไปในเว็บได้ มีการติดต่อกับฐานข้อมูล และเกิดภาษาใหม่ๆเช่น .ASP, .JSP, Perl อยู่มานานกว่า 10 ปี แต่ก็เริ่มมีข้อจำกัดเมื่อมีโปรแกรมเมอร์หลายคนถนัดเทคโนโลยีที่แตกต่างกันไป เช่น .NET, Java และ PHP ทำอย่างไรจึงจะนำข้อมูลบนเทคโนโลยีที่แตกต่างกันนี้มาใช้บนภาษากลางได้ จึงเป็นที่มาของเทคโนโลยี เว็บเซอร์วิส ที่เป็นบริการรูปแบบใหม่ในวงการเว็บ ด้วยการใช้ภาษาแกนกลางในการพัฒนาเว็บเซอร์วิส คือ XML (The Extensible Markup Language)
วรรณกรรมที่เกี่ยวข้อง 1. เว็บเซอร์วิส (Web Services) 1.1 ความหมายของเว็บเซอร์วิส 1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส 1.3 หลักการทำงานของเว็บเซอร์วิส 1.4 ทำไมต้องเป็นเว็บเซอร์วิส 1.5 การสร้างเว็บเซอร์วิส 2. XML (The Extensible Markup Language) 2.1 ความหมายของ XML 2.2 ความสัมพันธ์ระหว่าง XML และ เว็บเซอร์วิส
1. เว็บเซอร์วิส (Web Services) 1.1 ความหมายของเว็บเซอร์วิส เว็บเซอร์วิส (Web Services) คือ แอปพลิเคชันหรือโปรแกรม ซึ่งทำงานอย่างใดอย่างหนึ่งในลักษณะให้บริการ โดยจะถูกเรียกใช้งานจาก แอปพลิเคชัน หรือ โปรแกรมอื่นๆ ผ่านเว็บ ในรูปแบบ RPC (Remote Procedure Call) หรือระบบสั่งงานระยะไกล การให้บริการของเว็บเซอร์วิส จะมีเอกสารอธิบายคุณสมบัติของบริการกำกับไว้ มีภาษาที่ถูกใช้เป็นสื่อในการแลกเปลี่ยนข้อมูล คือ XML ทำให้ผู้ใช้สามารถเรียกใช้บริการต่างๆของ แอปพลิเคชัน ที่อยู่บน แพลตฟอร์ม ใด ๆ ก็ได้ บนโพรโตคอล HTTP สำหรับ World Wide Web อันเป็นช่องทางที่ได้รับการยอมรับทั่วโลก ในการติดต่อสื่อสารกันระหว่าง แอปพลิเคชัน กับ แอปพลิเคชัน และมีการนำเสนอให้สาธารณชนรับทราบ ผู้ใช้บริการจึงสามารถค้นหาเว็บเซอร์วิส ได้โดยที่ไม่จำเป็นต้องรู้ที่อยู่จริงของแอปพลิเคชัน หรือ โปรแกรมนั้น
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส 1.2.1 SOAP (Simple Object Access Protocol) ภาพที่1 แสดง ลักษณะข้อความที่รับ - ส่ง ผ่านโพรโตคอล SOAP ซึ่งเป็นไปตามรูปแบบของ XML
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) ข้อดีของการใช้โพรโตคอล SOAP โพรโตคอล SOAP สามารถให้เราเรียกใช้คอมโพเนนต์ หรือ เว็บเซอร์วิส ข้ามเครื่อง ข้าม แพลตฟอร์มหรือข้ามภาษา ได้ โดยอาศัยโพรโตคอลที่มีอยู่เดิมในอินเทอร์เน็ต อย่าง HTTP โครงสร้างข้อมูลของ SOAP เป็นรูปแบบข้อความที่สื่อสารกันด้วยภาษา XML ซึ่งมีลักษณะเป็นข้อความธรรมดาๆปิดล้อมด้วยแท็ก ทำให้เข้าใจได้ในทุกแพลตฟอร์ม โพรโตคอล SOAP สามารถทำงานผ่านระบบไฟล์วอลล์ ได้ง่ายเนื่องจาก SOAP ทำงานอยู่กับ โพรโตคอล HTTP ซึ่งโดยธรรมชาติของไฟล์วอลล์ จะเปิดให้การสื่อสารด้วย HTTP ผ่านได้อย่างสะดวก SOAP นั้นสนับสนุนจากหลายค่าย เช่น IBM, MS, SUN
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) ข้อเสียของการใช้โพรโตคอล SOAP เนื่องจากลักษณะของ SOAP message เป็นเอกสาร XML ทำให้เสียเวลาในการแปลกลับมาเป็นรูปแบบที่โปรแกรมเข้าใจ ในกรณีที่ SOAP ทำงานอยู่กับโพรโตคอล HTTP ซึ่งมีสมรรถนะในการรับ-ส่งข้อมูลต่ำกว่าโพรโตคอล DCOM, RMI, หรือ IIOP จึงทำให้โพรโตคอล SOAP มีอัตราการรับ-ส่งข้อมูลต่ำ
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) 1.2.2 WSDL (Web Services Description Language) เอกสาร WSDL - <message name="getQuoteResponse1"> //จุดสังเกตที่ 1 <part name="Result" type="xsd:float" /> </message> - <message name="getQuoteRequest1"> //จุดสังเกตที่ 2 <part name="symbol" type="xsd:string" /> - <portType name="net.xmethods.services.stockquote.StockQuotePortType"> - <operation name="getQuote" parameterOrder="symbol">
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) <input message="tns:getQuoteRequest1" /> <output message="tns:getQuoteResponse1" /> </operation> </portType> - <binding name="net.xmethods.services.stockquote.StockQuoteBinding" type="tns:net.xmethods.services.stockquote.StockQuotePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> - <operation name="getQuote"> //จุดสังเกตที่ 3 <soap:operation soapAction="urn:xmethods-delayed-quotes#getQuote" /> - <input> <soap:body use="encoded" namespace="urn:xmethods-delayed-quotes" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </input>
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) - <output> <soap:body use="encoded" namespace="urn:xmethods-delayed-quotes" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </output> </operation> </binding> - <service name="net.xmethods.services.stockquote.StockQuoteService"> //จุดสังเกตที่ 4 <documentation>net.xmethods.services.stockquote.StockQuote web service</documentation> - <port name="net.xmethods.services.stockquote.StockQuotePort" binding="tns:net.xmethods.services.stockquote.StockQuoteBinding"> <soap:address location="http://services.xmethods.net/soap" /> //จุดสังเกตที่ 5 </port> </service> </definitions>
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) 1.2.3 UDDI (Universal Description, Discovery, and Integration) การเผยแพร่บริการสู่สาธารณะ เรียกใช้ UDDI Business Registry ค้นหา ผู้ให้บริการ ผู้ใช้บริการ ภาพที่ 2 แสดงความสัมพันธ์ของผู้ใช้บริการกับผู้ให้บริการและ UDDI
1.2 มาตรฐานที่ใช้ในการพัฒนาเว็บเซอร์วิส(ต่อ) ตัวอย่าง เว็บไซด์ที่เปิดให้ค้นหาบริการเว็บเซอร์วิส http://www.wsiam.com http://uddi.microsoft.com http://-3.ibm.com/services/uddi/inquiryapi http://uddi.ariba.com/UDDIProcessor.aw/ad/process http://uddi.org http://www.xmethods.com http://www.strikeiron.com
1.3 หลักการทำงานของเว็บเซอร์วิส ประกาศ ทะเบียนของเว็บเซอร์วิส ( UDDI Registry) ผู้ขอเรียกใช้บริการ (Service Client) ผู้ให้บริการเว็บเซอร์วิส (Service Provider) เรียกใช้บริการ ค้นหา ภาพที่ 3 แสดงหลักการทำงานของ เว็บเซอร์วิส
1.4 ทำไมต้องเป็นเว็บเซอร์วิส มีเหตุผลดังนี้ สามารถใช้บนเครื่องแบบไหนก็ได้ ไม่ต้องเสียค่าใช้จ่ายสูงในการพัฒนา เทคโนโลยี ที่ใช้งานก่อนที่จะมี เว็บเซอร์วิส อย่างเช่น DCOM, RMI, หรือ CORBA/IIOP นั้น ล้วนทำงานในลักษณะที่คล้ายกับเว็บเซอร์วิส แต่ก็ยังมีข้อจำกัด ในเทคโนโลยีต่างๆ เนื่องจากทำงานอยู่บนอินเตอร์เน็ต ซึ่งปัจจุบันมีเทคโนโลยีในการรักษาความปลอดภัยมากมายรองรับ อยู่แล้ว เว็บเซอร์วิส สามารถวิ่งผ่านไฟล์วอลล์ ได้เนื่องจาก SOAP ถูกส่งโดยผ่านโพรโตคอล HTTP รักษาความปลอดภัยตามมาตรฐานของ PKI (Public Key Infrastructure) สามารถดูรายละเอียดเพิ่มเติมได้ที่ http://verisign.netscape.com/security/pki/understanding.html
1.5 การสร้างเว็บเซอร์วิส 1.5.1 การสร้างเว็บเซอร์วิสโดยทั่วไป มีขั้นตอนดังนี้ สร้าง COM Component หรือ DLL จากภาษาโปรแกรมที่ทำงานในแพลตฟอร์มของไมโครซอฟต์ เช่น ASP.Net, Visual Basic, Delphi, VC++, C# หรือ การสร้าง EJB (Enterprise Java Bean) ด้วยภาษา Java ก็ได้ สร้างไฟล์ WSDL โดยใช้ SOAP Toolkit (Downloadได้ที่ http://msdn.microsoft.com) ทำ COM Component ให้เป็น เว็บเซอร์วิส โดย SOAP Toolkit จะมี Wizard ช่วยในการสร้าง DLL, WSDL และ SOAP Listener ให้โดยอัตโนมัติ สำหรับผู้ที่เขียนด้วยภาษา Java ที่จะใช้ EJB นั้น จะต้องใช้โปรแกรม Apache SOAP แต่ถ้าใช้ .Net ก็จะมีคำสั่งในการสร้าง WSDL และ DLL ให้อยู่แล้ว ทดสอบดูว่า เว็บเซอร์วิส ที่สร้างขึ้นมานั้น ทำงานถูกต้อง โดยเขียนแอปพลิเคชันขึ้นมา เพื่อลองเรียกใช้งานเว็บเซอร์วิส
1.5 การสร้างเว็บเซอร์วิส (ต่อ) 1.5.2 การเผยแพร่เว็บเซอร์วิส ตัวอย่างเว็บไซด์ http://uddi.microsoft.com/search http://www.xmethods.com http://www.strikeiron.com/ ฯลฯ
1.5 การสร้างเว็บเซอร์วิส (ต่อ) 1.5.3 ขั้นตอนการเรียกใช้เว็บเซอร์วิส มีขั้นตอนดังนี้ ทำการสร้างแอปพลิเคชัน อาจจะเป็นฟอร์ม หรือเว็บฟอร์มก็ได้ เพื่อเรียกใช้งานเว็บเซอร์วิส Add Web Reference เพื่อระบุตำแหน่งของเว็บเซอร์วิส เขียนโค้ด(คำร้องขอใช้บริการ) เพื่อเรียกเว็บเซอร์วิสมาทำงาน
2. XML (The Extensible Markup Language) XML (The Extensible Markup Language) เป็นภาษาที่ได้รับการออกแบบมาเพื่อให้สามารถนิยามความหมายของข้อมูลได้ หรือที่เรียกว่า Data Definition โดยอนุญาตให้ผู้ใช้งานสร้างแท็กขึ้นเองได้ และแท็กที่สร้างขึ้นเองนั้นก็จะเป็นมาตรฐานที่ผู้ใช้กำหนดขึ้น และภาษาอื่นก็สามารถเรียกใช้ได้ ไม่ว่าจะเป็น VB, ASP, ASP.NET, PHP, JavaScript เพราะว่าแท็กที่ผู้ใช้สร้างขึ้นเองนั้นไม่ได้ทำหน้าที่แสดงข้อมูล
2.2 ความสัมพันธ์ระหว่าง XML และ เว็บเซอร์วิส WSDL คือ คู่มือให้กับระบบ เพื่อเรียนรู้วิธีการติดต่อและวิธีการเรียกใช้งานเว็บเซอร์วิส ที่ต้องการ โดยเขียนขึ้นตามแบบมาตรฐานไวยากรณ์ของภาษา XML ตัวอย่างโค๊ด ดังแสดงในเอกสาร WSDL SOAP จะมีการส่งข้อมูลผ่านอินเทอร์เน็ต/เว็บ ในรูปแบบของภาษา XML
2.2 ความสัมพันธ์ระหว่าง XML และ เว็บเซอร์วิส(ต่อ) ตัวอย่างโค้ด SOAP Message <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddNumber xmlns="http://tempuri.org/"> <a>float</a> <b>float</b> </AddNumber> </soap:Body>< /soap:Envelope>
ข้อสรุปและข้อเสนอแนะ เว็บเซอร์วิส (Web Services) เป็นเทคโนโลยี ที่ทำให้การเชื่อมต่อระหว่างระบบต่างๆเป็นไปได้อย่างอัตโนมัติ โดยที่ระบบต่างๆอาจจะถูกพัฒนาโดยภาษาที่แตกต่างกันหรือทำงานอยู่บนเครื่องคอมพิวเตอร์ที่แตกต่างกัน ข้อมูลที่ถูกส่งและรับระหว่างเครื่องเป็นภาษา XML มาตรฐานที่ใช้ในการติดต่อกัน เป็นมาตรฐานสากลและไม่มีใครเป็นเจ้าของ เว็บเซอร์วิส ได้มีการนำไปใช้อย่างแพร่หลายในต่างประเทศ และควรมีการส่งเสริมให้มีการพัฒนาและนำไปใช้อย่างแพร่หลายในประเทศไทย