Web Services
http://www.ssc.ac.th/sel/modules.php?op=modload&name=News&file=article&sid=1
http://www.thaisharp.net/Article/ShowContent.aspx?art_id=22
Web Services เป็นบริการยุคใหม่ในวงการเว็บ ผู้ใช้เพียงแค่ดึงบริการต่างๆ บนเว็บมาใช้งาน ภาษาที่ใช้เป็นแกนกลางในการพัฒนาเว็บเซอร์วิส คือ XML
Web Services (WS) คือ แอพลิเคชั่นหรือโปรแกรมที่ทำงานอย่างใดอย่างหนึ่งในลักษณะให้บริการ โดยจะถูกเรียกใช้งานจากโปรแกรมอื่นๆ (php, asp, java, python) ผ่านทาง HTTP Protocol การให้บริการของ Web Services นั้นจะถูกอธิบายด้วยเอกสาร WSDL ซึ่งจะมีคุณสมบัติของการบริการเขียนกำกับไว้ และ มีการนำเสนอให้สาธารณะชนรับทราบตามมาตรฐาน UDDI ผู้ใช้จึงสามารถค้นหาบริการได้โดยไม่จำเป็นต้องรู้ที่อยู่จริงของแอพลิเคชั่นหรือโปรแกรมนั้นๆ
Web Application & Web Services
เทคโนโลยีในการกระจายข่าวสารข้อมูลทาง Internet ในปัจจุบันก็คือ เว็บเพจ แต่จากการที่มันมีความสามารถที่จะทำงานได้ด้วยการรวมภาษาทั้ง Client และ Server Side Script ไว้ในตัวเองเช่นภาษา VBScript, Java Script หรือ ASP, PHP, JSP นั้นทำให้เว็บเพจมีลักษณะคล้าย Application จึงถูกเรียกรวมกันว่า Web Application
Web Application สามารถตอบสนองความคิด Distributed Processing ได้ในระดับหนึ่งซึ่งก็คือ การแบ่งการประมวลผลไว้ที่ฝั่ง Client และฝั่ง Server และมักจะมีการใช้ database ควบคู่กับการทำ Web Application ไปด้วยตามความต้องการในการทำ E-Business และ E-Commerce ที่กำลังเป็นที่นิยมในปัจจุบัน และเกิดปัญหาที่ตามาคือ เรื่องของการจ่ายเงินหรือที่เรียกว่า E-payment หรือ Payment-Gateway ซึ่ง Web Application ที่ทำ E-Commerce ต้องใช้บริการจากธนาคาร Online ในการจัดเก็บเงินกับลูกค้า เพราะด้วยเทคโนโลยีนี้การใช้บริการเก็บเงินจากธนาคาร Online จำเป็นที่ผู้ค้าต้องไปทำการตกลงกับธนาคารและเขียนโปรแกรมให้ตรงตามมาตรฐานที่ธนาคาร Online กำหนดไว้ด้วยปัญหายุ่งยากในการค้นหา ติดต่อและตกลงในการขอใช้บริการเก็บเงินจากธนาคาร Online แนวคิด Web Serviceจึงดูเหมือนเป็นทางออกของปัญหานี้ ความเด่นของเทคโนโลยี Web Service นี้ก็คือ การทำให้ Web กับ Web สามารถติต่อสื่อสารกันได้ด้วยเอกสาร XML ที่ทั้งคนและคอมพิวเตอร์เข้าใจ และคอมพิวเตอร์ยังสามารถนำข้อมูลนั้นไปประมวลผลต่อได้ ด้วยเอกสาร XML นี้เองทำให้ Web สามารถส่งข้อมูลที่จำเป็นไปให้อีก Web หนึ่งทำงานบางอย่างให้หรือใช้บริการนั่นเอง ทำให้เป็นการง่ายที่จะเขียนโปรแกรมที่จะติดต่อสื่อสารหรือขอใช้บริการเก็บเงินจากธนาคาร Online แต่สำหรับ Web Application ที่ใช้การส่งข้อมูลเป็น html ทำให้ข้อมูลนั้นไม่สามารถนำไปใช้ต่อได้ การเขียนโปรแกรมจึงยุ่งยากตามที่กล่าวด้านบน
แนวคิดของ Web Service ก็คือ Web ที่สามารถทำงานอะไรบางอย่างหรือก็คือให้บริการบางอย่างจากการร้องขอจากต่าง Server ด้วยเหตุนี้ทำให้เทคโนโลยี Web Service เอื้อต่อแนวคิด Distributed Processing มากกว่า Web Application และเมื่อประกอบกับการที่ Web Service มี UDDI ทำให้ Web Service สามารถค้นหาบริการต่างๆ ที่ต้องการได้จากทั่วทุกมุมโลก ในอนาคตอาจเป็นไปได้ว่า Application ของก็อาจเป็นเพียงแค่การรวม Service ที่แต่ละ Web Service มีบริการมาให้ใช้เท่านั้นเอง
ประโยชน์ของการทำงานร่วมกันระหว่าง Application กับ Web Services
Web Service ช่วยให้การเข้าถึงข้อมูลสารสนเทศจากแอพพลิเคชันที่ต่างกันเป็นไปโดยง่าย โดยแอพพลิเคชันนั้นๆ สามารถเขียนด้วย Java และรันอยู่บน Sun Solaris Application Server หรืออาจจะเขียนด้วย C++ และรันอยู่บน Windows NT หรืออาจะเขียนด้วย Perl และรันอยู่บนเครื่อง Linux ซึ่งมาตรฐานของ Web Service ทำให้อินเทอร์เฟซของแอพพลิเคชันเหล่านี้ ถูกอธิบายโดย WSDL และทำให้อยู่ในมาตรฐานของ UDDI หลังจากนั้น จึงสามารถติดต่อสื่อสารถึงกันโดย XML ผ่าน SOAP อินเตอร์เฟซ
Web Service สามารถถูกเรียกใช้ภายในองค์กรเองหรือจากภายนอกองค์กร โดยผ่านไฟร์วอล์ ดังนั้นจึงมีองค์กรใหญ่ๆ มากมาย กำลังพัฒนาระบบที่มีอยู่ของตน ให้เข้ากับ Web Service ซึ่งนับเป็นการลงทุนที่คุ้มค่า เนื่องจาก Web Service สามารถเพิ่มศักยภาพในการทำงานขององค์กร อีกทั้งลดค่าใช้จ่ายในการจัดการทรัพยากรขององค์กรได้อีกทางหนึ่ง
นอกจากนั้น Web Service ยังสามารถใช้ร่วมกับ Web Application โดยส่งผ่านข้อมูลทางอินเตอร์เน็ตได้อีกด้วยซึ่งนับเป็นวิธีที่มีประสิทธิภาพในการติดต่อสื่อสารกับลูกค้าหรือหุ้นส่วน ถึงแม้จะต้องคำนึงถึงระบบรักษาความปลอดภัย และการจัดการรายการของข้อมูลอยู่ก็ตาม แต่ Web Service ได้ใช้มาตรฐานทั่วไปของ internet เรื่องดังกล่าวจึงนับเป็นเรื่องธรรมดาของการสื่อสารผ่านระบบอิเล็กทรอนิกส์
เทคโนโลยีที่ใช้ในการพัฒนา Web Services
XML (The Extensible Markup Language 1.0)
XML เป็นภาษา Markup ที่เป็น text-based ซึ่งทำให้เป็น มาตรฐานในการแลกเปลี่ยนข้อมูลบนอินเทอร์เน็ตอย่างรวดเร็ว ผู้ที่ทำหน้าที่รับผิดชอบ และกำหนดมาตรฐานของ XML คือ World Wide Web Consortium (W3C) ความแตกต่างระหว่าง XML กับ HTML คือ HTML ถูกนำมาใช้ในการสร้าง เว็บเพจ ที่สามารถแสดงผลได้โดยโปรแกรมเบราวเซอร์ แต่ XML จะใส่ tags ได้อย่างอิสระ แล้วทำการส่ง XML ชุดนี้ไป ประมวลผลยังแอพพลิเคชั่นใด ๆ ที่สามารถใช้ข้อมูลใน XML นี้
SOAP (Simple Object Access Protocol)
SOAP กลายเป็นสิ่งที่มีความสำคัญสำหรับ Web Services อย่างรวดเร็ว เป็นโปรโตคอลที่ผู้จัดหา Web Services เลือกใช้ที่จะส่ง message ระหว่าง Web Services SOAP เป็น Transport Protocol ที่มี XML เป็นพื้นฐานและใช้ HTTP เป็นโปรโตคอลร่วมในการส่งผ่านเครือข่าย SOAP จะระบุวิธีในการเข้ารหัสส่วนหัว (Header Encoding) ของทั้ง HTTP และไฟล์ XMLไว้อย่างชัดเจนทั้งใน ส่วนของการติดต่อไปยังคอมพิวเตอร์อีกเครื่องหนึ่งและส่งผ่านข้อมูลไปให้ รวมถึงระบุวิธีที่โปรแกรมซึ่งถูกเรียกนั้นจะส่งค่าคืนกลับมาด้วย
SOAP (Simple Object Access Protocol) เป็น XML-based โปรโตคอล (lightweight protocol)และใช้ HTTP เป็นโปรโตคอลร่วม สำหรับ การแลกเปลี่ยนข้อมูลในสภาวะแวดล้อมแบบกระจายศูนย์ (decentralized, distributed environment) SOAP ได้ กำหนดเมเสจจิ้งโปรโตคอล (Messaging Protocol) ระหว่างผู้ขอบริการ (requestor) กับผู้ให้บริการ (provider) เช่น ผู้ขอบริการสามารถติดต่อแลกเปลี่ยนข้อมูลกับผู้ให้บริการโดยใช้ RMI (Remote Method Invocation) ตามวิธีการของ โปรแกรมแบบออปเจ็ค บริษัทไมโครซอฟท์, ไอบีเอ็ม, โลตัส, ยูสเซอร์แลนด์ (UserLand) และ ดีเวลลอปเปอร์เมนเตอร์ (DeveloperMenter) ได้ร่วมกันกำหนดมาตรฐานของ SOAP ขึ้น ซึ่งต่อมาได้มีบริษัทอีก 30 กว่าบริษัทเข้าร่วมและ จัดตั้งเป็น W3C XML Protocol Workgroup ขึ้น SOAP ได้กำหนดรูปแบบพื้นฐานของการสื่อสารแบบกระจายขึ้นโดย การพัฒนา SOAแม้ว่า SOA จะไม่ได้กำหนดเมจเสจจิ้งโปรโตคอล (Messaging Protocol) ไว้ แต่ SOAP ได้ถูกกำหนด ให้เป็น Services-Oriented Architecture Protocol เรียบร้อยแล้ว เนื่องจากมันได้ถูกใช้ในการพัฒนา SOA อย่างแพร่ หลายแล้วนั่นเอง จุดเด่นของ SOAP ก็คือเป็นโปรโตคอลที่เป็นกลาง กล่าวคือ ไม่มีใครเป็นเจ้าของและเป็นโปรโตคอล ที่ทำงานกับโปรโตคอลอื่นหลายชนิด การพัฒนาก็อนุญาตให้ทำได้อย่างอิสระตามแพลตฟอร์มระบบปฏิบัติการ แบบจำลองทางวัตถุ (Object model) และภาษาโปรแกรมของผู้ที่ทำการพัฒนา
WSDL (Web Services Description Language)
WSDL เป็นภาษาที่ใช้อธิบายคุณลักษณะการใช้บริการของ Web Services และวิธีการติดต่อกับ Web Services ความต้องการของนิยามนี้เกี่ยวเนื่องกับความต้องการของ distributed system ที่จะกำหนด Interface Definition Language(IDL) โดยใช้ภาษา XML, WSDL เกิดจากการรวมแนวคิดของ NASSL (The Network Accessible Service Specification Language), WDS (Well-Defined Services) ของบริษัทไอบีเอ็ม, SDL (The Service Description Language) และ SCL (the SOAP Contract Language) ของบริษัทไมโครซอฟท์ ปัจจุบัน WSDL เป็นภาษา ที่อยู่ในการดูแลของ W3C (World Wide Web Consortium) ซึ่งยังไม่เป็นมาตรฐานที่สมบูรณ์ เวอร์ชันที่ใช้งานอยู่ใน ปัจจุบันคือ WSDL 1.1 (รายละเอียดเพิ่มเติมเกี่ยวกับ WSDL สามารถศึกษาเพิ่มเติมได้ที่ http://www.w3c.org/TR/wsdl)
UDDI(Universal Description, Discovery and Integration protocol)
UDDI (Universal Description, Discovery, and Integration) เป็นมาตรฐานที่ให้ชุดพื้นฐาน APIs (Application Programming Interface) ของ SOAP ที่สามารถนำมาใช้ในการพัฒนาเป็นตัวแทนของผู้ให้บริการ (Service broker) UDDI ใช้สำหรับค้นหา Service ที่ต้องการและเมื่อได้มาแล้ว UDDI ยังจัดหาข้อตกลงในวิธีการที่จะใช้งานเปรียบได้กับสมุดหน้าเหลือง เป็นมาตรฐานที่จัดตั้งขึ้นโดยบริษัทไอบีเอ็ม บริษัทไมโครซอฟต์ และบริษัทอารีบา (Ariba) ปัจจุบันมีบริษัทที่ร่วม กันกำหนดมาตรฐานของ UDDI มากกว่า 70 บริษัท ซึ่งมาตรฐานของ UDDI ถูกกำหนดให้เป็นมาตรฐานสำหรับ B2B interoperability (รายละเอียดเพิ่มเติมเกี่ยวกับ UDDI สามารถศึกษาเพิ่มเติมได้ที่ http://uddi.org)
web service คือ โปรแกรมซึ่งทำงานอย่างใดอย่างหนึ่ง ในลักษณะที่ให้บริการกับโปรแกรมอื่น ซึ่งลักษณะเฉพาะที่ทำให้ web service ต่างจากโปรแกรมทั่วไปคือ การถูกเรียกใช้งานจากโปรแกรมอื่น ๆ ผ่าน web
เทคโนโลยี ที่ใช้งานก่อนที่จะมี web service อย่างเช่น DCOM, RMI, หรือ CORBA/IIOP นั้น ล้วนทำงานในลักษณะที่ คล้ายกับ web service แต่ก็ยังมีข้อจำกัด ในเทคโนโลยีต่างๆ ดังต่อไปนี้
1. DCOM มีข้อจำกัด ในเรื่องการเรียกใช้ component ที่เป็นลักษณะ platform dependence ซึ่งหมายความว่า การเรียกใช้ DCOM จะเรียกใช้ได้ เฉพาะใน platform ของ Microsoft เท่านั้น
2. RMI ก็มีข้อจำกัดเดียวกันกับ DCOM ที่จะต้องเรียกใช้งานใน platform ของ Sun Java
3. CORBA/IIOP มีข้อดีที่ไม่ขึ้นกับ platform หรือที่เรียกกันว่า platform independence แต่พอใช้งานจริง ๆ ก็มีความยุ่งยาก ในการปรับแต่ง component ทั้งฝั่ง client และ server ให้เข้ากันได้ค่อนข้างลำบาก และที่สำคัญ ปัญหามักจะเกิดขึ้นกับ firewall ที่ไม่ย่อมให้ผ่านได้ง่าย ๆ (แต่โดยปกติ firewall จะ
ยอมให้ HTTP ผ่านได้)
SOAP
แต่แนวคิดของ web service ได้แก้ไขข้อจำกัดเหล่านี้ลงได้ โดยการเสนอ protocol ใหม่ที่ชื่อว่า SOAP (Simple Object Access Protocol) ซึ่งเป็น protocol ที่ใช้เรียก component ต่าง ๆ ใน platform ใด ๆ ก็ได้ เนื่องจากใช้ XML เป็นรูปแบบของข้อมูลที่ส่ง โดย protocol นี้จะทำงานอยู่บน HTTP ซึ่งเป็น protocol มาตรฐานสำหรับ web อยู่แล้ว ซึ่งนั้นหมายความว่า การเรียกใช้ component โดยอาศัย SOAP ก็คือการเรียกผ่าน web นั้นเอง
อย่างไรก็ดี SOAP ก็ยังมีข้อเสียอยู่บ้าง ได้แก่
1. เนื่องจาก SOAP message นั้นเก็บอยู่ในรูปแบบ XML ทำให้เสียเวลาในการแปลเอกสาร XML กลับมาเป็นรูปแบบที่โปรแกรมเข้าใจ
2. SOAP ทำงานอยู่กับ HTTP protocol ซึ่งมีความเร็วในการรับ และส่งข้อมูล ค่อนข้างต่ำ ด้วยเหตุนี้ทำให้ความเร็วของ SOAP อยู่ในระดับเดียวกับ HTTP ในขณะที่ protocol อื่นเช่น FTP มีความเร็วสูงกว่ามาก
UDDI
UDDI (Universal Description, Discovery and Integration) เป็นมาตรฐานที่จัดตั้งขึ้น โดยบริษัท IBM, Microsoft และบริษัทยักษ์ใหญ่ทางธุรกิจ B2B (Business-to-Business) อื่น ๆ UDDI ถูกสร้างขึ้นมาเป็นมาตรฐาน ในการค้นหาบริการ web service สำหรับคู่ค้าทางธุรกิจ ซึ่งเปรียบได้กับฐานข้อมูล ขนาดใหญ่ ซึ่งมีข้อมูลของ web service ที่เปิดให้บริการ โดยที่ web site สำหรับค้นหา web service มีอยู่หลายที่อย่างเช่น
http://uddi.microsoft.com/search.aspx
http://www-3.ibm.com/services/uddi/testregistry/find
http://uddi.org
WSDL
WSDL (Web Services Description Language) เกิดจากความร่วมมือระหว่าง IBM และ Microsoft WSDL เป็นภาษาที่ใช้อธิบายคุณลักษณะของ web service และวิธีการติดต่อกับ web service นั้น ๆ โดยใช้ไวยากรณ์ของภาษา XML ซึ่ง WSDL อยู่ในความดูแลของ W3C version ล่าสุด คือ WSDL 1.1 ซึ่งหากผู้อ่านสนใจในรายละเอียด สามารถหาอ่านเพิ่มเติมได้จากเว็บไซต์ของ W3C ที่ http://www.w3.org/TR/wsdl ส่วนในทางปฏิบัติ หากเราต้องการ สร้าง web service ขึ้นมาเป็นของตนเอง ก็สามารถสร้างเอกสาร WSDL ได้โดยอัตโนมัติ เราจึงไม่ต้องไปกังวลในรายละเอียด ในข้อกำหนดใน WSDL มากนัก
การสร้าง web service
ขั้นตอนในการสร้าง web service โดยทั่วไป ทำได้ดังนี้
1. สร้าง COM Component หรือ DLL ที่ใช้กันทั่วไป จากภาษา programming ที่ทำงานใน platform ของ Microsoft เช่น ASP.Net, Visual Basic, Delphi, VC++ หรือ การสร้าง EJB (Enterprise Java Bean) ด้วยภาษา Java ก็ได้
2. สร้าง file WSDL โดยใช้ SOAP Toolkit (Downloadได้ที่ http://msdn.microsoft.com) ทำ COM Component ให้เป็น web service โดย ซึ่ง SOAP Toolkit ตัวนี้จะมี Wizard ช่วยในการสร้าง DLL, WSDL และ SOAP Listener ให้โดยอัตโนมัติสำหรับผู้ที่เขียนด้วยภาษา Java ที่จะใช้ EJB นั้น จะต้องใช้โปรแกรม Apache SOAP และสำหรับคนที่ใช้ .Net ก็หายห่วงได้เลยครับ เพราะ .Net มีคำสั่งในการสร้าง WSDL และ DLL ให้อยู่แล้วจึงไม่ต้องไป download อะไรเพิ่มก็ได้
เพียงแค่นี้ คุณก็จะสามารถ web service เป็นของคุณเองได้แล้ว ที่เหลือก็เพียงแต่ ทดสอบดูว่า web service ที่คุณพึ่งสร้างขึ้นมานั้น ทำงานถูกต้องหรือไม่ ซึ่งวิธีการเหล่านี้ คุณสามารถกลับไป ลองพิสูจน์ดูเองได้ว่า SOAP จะสามารถเรียกใช้ Component ข้ามเครื่อง ข้าม platform และข้ามภาษาได้จริงหรือไม่
ในตัวอย่างที่จะใช้นี้ ผมลองสร้าง web service บน Microsoft Windows โดยใช้ ASP.Net web service ตัวนี้ก็จะเป็นการทำงานแบบง่าย ๆ เพื่อใช้ในการคำนวณค่าคณิตศาสตร์แบบพื้น ๆ ตามตัวอย่าง code ใน Listing 1
|