วันศุกร์ที่ 2 มีนาคม พ.ศ. 2555

การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา

การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา
การพัฒนาเว็บเซอร์วิสสามารถแบ่งได้ตามบทบาทของผู้เกี่ยวข้องคือ การพัฒนาเพื่อเป็นผู้ให้บริการ การพัฒนาเพื่อเป็นผู้ใช้บริการ และการพัฒนาสำหรับ Service Registry เทคโนโลยีจาวาที่สามารถจะพัฒนาเว็บเซอร์วิสได้จะอยู่ในแพลตฟอร์มที่เป็น Java EE โดยใน Java EE 5 ได้กำหนดคำสั่ง API สำหรับภาษาจาวาในการเรียกใช้ XML ต่างๆ ดัง
·         JAX-WS (Java API for XML-Based Web Services) เป็นชุดคำสั่งภาษาจาวาเพื่อพัฒนาให้บริการเว็บเซอร์วิสและเรียกใช้เว็บเซอร์วิส โดยจะสนับสนุนมาตรฐานต่างๆของ W3C เช่น SOAP และ WSDL และสนับสนุนการส่งข้อมูลทั้งแบบ Asynchronous และ Synchronous พร้อมทั้งทำการ binding ข้อมูลโดยใช้ JAXB ดังนั้นนักพัฒนาโปรแกรมสามารถใช้ภาษาจาวาสร้างและเรียกเว็บเซอร์วิสได้ โดยไม่จำเป็นต้องพัฒนา SOAP หรือ WSDL เอง
·         JAXB (Java Architecture for XML Binding) เป็นชุดคำสั่งภาษาจาวาเพื่อทำการจับคู่ (mapping) ข้อมูลที่เป็นภาษา XML กับออปเจ็คที่เป็นจาวาคลาส
·         JAXP (Java API for XML Processing) เป็นชุดคำสั่งภาษาจาวาเพื่อแปล แปลง ตรวจสอบความถูกต้อง และค้นหา เอกสารหรือไฟล์ที่เป็นภาษา XML
·         SAAJ (SOAP with Attachments API for Java) เป็นชุดคำสั่งภาษาจาวาเพื่อสนับสนุนการส่งเอกสาร XML ผ่านอินเตอร์เน็ต
·         JAX-RPC (Java API for XML-Based RPC) เป็นชุดคำสั่งสำหรับพัฒนาเว็บเซอร์วิสเช่นเดียวกับ JAX-WS แต่จะใช้สำหรับ J2EE เวอร์ชัน 1.4 และสนับสนุน SOAP 1.1
·         WSIT (Web Services Interoperability Technology) เป็นชุดคำสั่งภาษาจาวาเพื่อเชื่อมโยงระหว่าง Java EE และ .NET 3.0 ช่วยในการพัฒนาโปรแกรมผ่านสถาปัตยกรรม SOA
สำหรับแพลตฟอร์ม Java SE จะมี API สำหรับ XML อยู่ในเวอร์ชัน 6 (Java SE 6) โดยจะมีชุดคำสั่ง JAX-WS 2.0 JAXB 2.0 และ SAAJ 1.3
                การพัฒนาเพื่อให้บริการเว็บเซอร์วิสจะต้องใช้แพลตฟอร์ม Java EE ซี่ง Server ที่เป็น Java EE จะมองการให้บริการเว็บเซอร์วิสเป็นเพียงพอร์ตหรือช่องทาง (channel)หนึ่งในการบริการเซอร์วิส ดังนั้นจึงไม่มีผลทำให้สถาปัตยกรรมเปลี่ยนไป และสามารถนำคอมโพเน้นท์ของ Java EE (เช่น Session Bean) ที่มีอยู่มาพัฒนาเป็นเว็บเซอร์วิสได้โดยง่าย นอกจากนี้การพัฒนาเว็บเซอร์วิสบนเทคโนโลยีจาวา ยังสามารถที่จะได้ใช้จุดเด่นของแพลตฟอร์ม Java EE ในด้านความปลอดภัย ความเชื่อมั่น (Reliability) และการรองรับผู้ใช้จำนวนมาก (Scalability)
                เว็บเซอร์วิสคือพอร์ตหนึ่งในแพลตฟอร์ม Java EE ซึ่งจะทำงานภายใน Java EE Container โดย container จะเป็น Runtime environmentของคอมโพเน้นท์ที่เป็นเว็บเซอร์วิส โดยมีคำสั่ง JAX-WS หรือ JAX-RPC ในการที่จะติดต่อกับ Runtime environment อีกชั้นหนึ่ง โดยทั่วไปเราสามารถที่จะสร้างคอมโพเน้นท์ของเว็บเซอร์วิสได้สองประเภทดังแสดงในรูปที่ 5 คือ
·         เว็บเซอร์วิสแบบWeb-tier (โดยใช้ Servlet endpoint) ตัวอย่างเช่น Tomcat หรือ Axis
·         เว็บเซอร์วิสแบบEJB-tier (โดยใช้ Session Bean endpoint) ตัวอย่างเช่น Sun Java Application Server
          การพัฒนาเว็บเซอร์วิสสำหรับหน่วยงานขนาดเล็กอาจสามารถทำได้โดยใช้ เว็บเซอร์วิสแบบ Web-tier แต่หากต้องพัฒนาเพื่อรองรับผู้ใช้จำนวนมากจำเป็นต้องใช้ เว็บเซอร์วิสแบบ EJB-tier ดังนั้นผู้พัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาควรจะมีความเข้าใจเรื่อง Application Server และสามารถพัฒนา EJB ได้
          แม้หลักการของเว็บเซอร์วิส จะอิงอยู่กับมาตรฐานต่างๆ แต่การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยี จาวาสามารถทำได้โดยไม่ต้องพัฒนาโพรโทคอล SOAP หรือ WSDL โดยตรง นอกจากนี้ยังมีเครื่องมือเพื่อให้สามารถพัฒนาโปรแกรมได้โดยง่ายเช่น NetBeans 5.5 ผู้ที่สนใจจะพัฒนาเว็บเซอร์วิสโดยใช้ NetBeans
รูปแสดง Java Web Service Components

บทสรุป
          เว็บเซอร์วิสเป็นซอฟต์แวร์คอมโพเน้นท์ ที่ให้บริการผ่านเทคโนโลยีอินเตอร์เน็ตโดยใช้มาตรฐานเปิด มาตรฐานพื้นฐานของเว็บเซอร์วิสประกอบด้วย XML SOAP WSDL และ UDDI เว็บเซอร์วิสเป็นเทคโนโลยีที่เหมาะสมในการนำไปพัฒนา SOA ทั้งนี้เนื่องจากใช้มาตรฐานเปิดและไม่ผูกติดอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง แต่การพัฒนาเว็บเซอร์วิสในทางปฏิบัติยังต้องคำนึงถึงมาตรฐานอื่นๆอีกมากเช่นเรื่องความปลอดภัย เราสามารถที่จะพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาได้ ซึ่งจะมีจุดเด่นในด้านความปลอดภัย ความเชื่อมั่น และความสามารถในการรองรับผู้ใช้จำนวนมาก

มาตรฐานหลักของเว็บเซอร์วิส

มาตรฐานหลักของเว็บเซอร์วิส
                มาตรฐานหลักของการพัฒนาเว็บเซอร์วิสจะประกอบไปด้วยมาตรฐานต่างๆดังนี้ XML WSDL SOAP และ UDDI รายละเอียดของแต่ละมาตรฐานมีดังนี้
1.  Extensible Markup Language (XML)
          XML เป็นมาตรฐานที่ทาง W3C (World Wide Web Consortium) ประกาศให้เป็นมาตรฐานของข้อมูลเมื่อเดือนกุมภาพันธ์ ปี 1998 โดย XML จะอยู่ในรูปของไฟล์ข้อความที่ใช้ Unicode และสามารถที่สร้างรูปแบบในการที่จะแสดงข้อมูลที่ซับซ้อนในรูปแบบของข้อความที่สามารถอ่านได้ง่าย ในปัจจุบัน XML ได้กลายเป็นมาตรฐานสำคัญสำหรับการกำหนดโครงสร้างข้อมูล เนื้อหา และรูปแบบของข้อมูลของเอกสารอิเล็กทรอนิกส์ และยังมีการพัฒนาเพื่อให้สามารถแลกเปลี่ยนข้อมูลระหว่างหน่วยงาน โปรแกรมประยุกต์ ระบบ และอุปกรณ์ต่างผ่านทางอินเตอร์เน็ตได้อีกด้วย
2.  Simple Object Access Protocol (SOAP)
          SOAP เป็นภาษา XML เพื่อทำหน้าที่เป็นโพรโทคอลข่าวสาร (Message Protocol) สำหรับการแลกเปลี่ยนข้อมูลระหว่างผู้ให้บริการและผู้ใช้บริการ โครงสร้างของ SOAP จะประกอบไปด้วย
·         SOAP Envelope: ใช้ในการอธิบายข่าวสาร ระบุเนื้อหา และกระบวนการจัดการข้อมูล
·         SOAP Transport: ใช้ในการอธิบายโพรโทคอลการส่งข้อมูลเช่น HTTP หรือ SMTP
·         SOAP Encoding: ใช้ในการอธิบายการเข้ารหัสเพื่อจับคู่ชนิดข้อมูล (data type) ที่ใช้ใน
โปรแกรมประยุกต์กับ XML elements
          โพรโทคอล SOAP เปรียบเสมือนจดหมายที่ใช้ในการสื่อสาร แต่ยังต้องใช้โพรโทคอลในการสื่อสารอื่นๆ เช่น HTTP ในการทำหน้าที่ส่งจดหมาย SOAP เป็นโพรโทคอลแบบข้อความ ซึ่งแตกต่างกับโปรโคคอล IIOP ของ CORBA หรือ JRMP ของ RMI ที่เป็นโพรโทคอลแบบไบนารี่ จึงทำให้ SOAP สามารถที่จะใช้ส่งข้อความข้ามแฟลตฟอร์ม และระบบต่างๆ ได้ และเวอร์ชันล่าสุดของ SOAP คือ 2.0
            การส่งข้อความ SOAP มีสองรูปแบบคือ SOAP-RPC และ SOAP message โดย SOAP-RPC ใช้ในการส่งข้อความเพื่อใช้เรียกเมธอดหรือ procedure ซึ่งโดยมากจะเป็นรูปแบบ synchronous โดย SOAP จะส่ง SOAP Request และข้อมูลต่างๆ เพื่อเรียกใช้เมธอดในการประมวลผล และจะรอให้ได้ผลลัพธ์การประมวลผลที่ส่งกลับมาแบบ SOAP Response ส่วน SOAP-message ใช้ในการส่งข่าวสารหรือข้อมูลในรูปแบบ XML ระหว่างผู้ให้บริการและผู้ใช้บริการ โดยสามารถส่งได้ทั้งแบบ Synchronous และ Asynchronous
3.  Web Services Description Language (WSDL)
WSDL เป็นภาษา XML ที่ใช้อธิบายเว็บเซอร์วิส โดยจะแบ่งการอธิบายเว็บเซอร์วิสเป็นสองส่วนดังนี้
o    ส่วนที่เป็นนามธรรม (Abstract) เพื่ออธิบายโอเปอเรชัน (Operation) อินพุตและเอาท์พุตพารามิเตอร์
o    ส่วนที่เป็นรูปธรรม (Concrete) เพื่ออธิบายโพรโทคอลของเน็ตเวอร์ค ตำแหน่งของจุดปลายทาง (Endpoint Address) และ รูปแบบของข้อมูล
ในปัจจุบัน W3C ได้ออกข้อกำหนดสำหรับ WSDL เป็นเวอร์ชัน 2.0 แต่คำสั่งบางคำสั่งจะไม่สอดคล้องกับเวอร์ชัน 1.0 ดังนั้นการจะเรียกใช้ WSDL ควรมีการตรวจสอบว่าเครื่องมือที่ใช้พัฒนาสอดคล้องกับเวอร์ชันใดWSDL สามารถเปรียบเทียบได้กับ Java interface ที่ใช้ใน RMI หรือ ภาษา IDL (Interface Description Language) ที่ใช้ใน CORBA สำหรับ Distributed Computing
4. Universal Description, Discovery and Integration (UDDI)
               UDDI นิยามรูปแบบและกลไกสำหรับ registry ที่ใช้ในการเก็บและประกาศข้อมูลเกี่ยวกับเว็บเซอร์วิสในรูปแบบของภาษา XML โดยที่ UDDI จะเปรียบเสมือนสมุดโทรศัพท์หน้าเหลืองที่องค์กรธุรกิจต่างๆ ใช้ระบุและโฆษณาหมายเลขโทรศัพท์ขององค์กรเพื่อให้ผู้ใช้โทรศัพท์ค้นหาได้ โดยทั่วไป Service Registry จะใช้ UDDI เป็นมาตรฐานเพื่อให้ผู้ให้บริการสามารถลงทะเบียนประกาศเว็บเซอร์วิสได้ และผู้ใช้บริการก็สามารถจะติดต่อกับ UDDI Registry เพื่อค้นหาเซอร์วิสที่ต้องการและเรียกใช้จากผู้ให้บริการต่อไป
                ข้อมูลใน UDDI จะประกอบไปด้วยรายละเอียดเกี่ยวกับองค์กร (businessEntity) รายละเอียดเกี่ยวกับเซอร์วิส (businessService) รายละเอียดเกี่ยวกับการติดต่อ (bindingTemplate) URLสำหรับการเรียกใช้เซอร์วิส (accessPoint) และข้อมูลอ้างอิงไปยัง WSDL (tModelInstanceInfo) มาตรฐาน UDDI ล่าสุดเป็นเวอร์ชัน 3.0   นอกจากนี้เรายังสามารถที่จะแบ่ง Registry ได้เป็นสองประเภทคือ public registry ซึ่งเป็น registry ที่เปิดให้ใช้ทั่วไปทั้งภายใน และภายนอกองค์กร กับ private registry ซึ่งเป็น registry ที่เปิดให้ใช้เฉพาะภายใน การควบคุมดูแล public registry จะเป็นไปได้ยากกว่า จึงทำให้องค์กรส่วนมากจะเริ่มต้นการพัฒนาจาก private registry ก่อน
5.มาตรฐานอื่นๆ ของเว็บเซอร์วิส
           มาตรฐาน WSDL SOAP และ UDDI เป็นเพียงมาตรฐานพื้นฐานของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสในทางปฏิบัติจำเป็นต้องพิจารณาเรื่องอื่นเช่น ความปลอดภัย Transaction หรือ Messaging เป็นต้น ดังแสดงในรูปที่ 3 ซึ่งแสดงตัวอย่างมาตรฐานเว็บเซอร์วิสอื่นๆ ตามฟังก์ชันของการทำงาน โดยจะมีมาตรฐานที่สำคัญ อาทิเช่น
          WS-Addressing: มาตรฐานที่ใช้ร่วมกับ SOAP Header ในการระบุโพรโทคอลการสื่อสารและระบบข่าวสาร (Messaging Systems)
·         WS-Security: มาตรฐานที่เป็นโครงสร้าง (Framework) เพื่อเชื่อมต่อกับเทคโนโลยีระบบความปลอดภัยต่างๆ
·         SAML: Security Assertion Markup Language เป็นมาตรฐานที่ทาง OASIS กำหนดขึ้นเพื่อสนับสนุนการทำ Single Sign On (SSO) และ Authentication
·         WS-BPEL: มาตรฐานสำหรับการประกอบ (orchestration) กระบวนการทางธุรกิจ (Business Process) โดยใช้คำสั่งที่เป็นภาษา XML
·         WSRP: Web Services for Remote Portal มาตรฐานสำหรับการเรียกใช้ Web Services จากเว็บท่า (Portal)
การพัฒนา SOA โดยใช้เว็บเซอร์วิส
                แม้การพัฒนาสถาปัตยกรรมเชิงบริการ (Service Oriented Architecture หรือ SOA) ในยุคแรกจะสามารถทำได้โดยใช้เทคโนโลยีอื่นๆ อาทิเช่น CORBA, Java RMI และ DCOM หรือสามารถใช้ MOM (Message Oriented Middleware)เพื่อพัฒนา SOA ในรูปของการแลกเปลี่ยนข้อมูลของสถาปัตยกรรม EAI ที่นิยมใช้ทั่วไป แต่ในปัจจุบันการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิสเริ่มได้รับการยอมรับมากกว่าเทคโนโลยีอื่นๆ ด้วยเหตุผลดังนี้
·         เว็บเซอร์วิสอิงอยู่กับมาตรฐานที่เปิดเช่น SOAP WSDL UDDI และมาตรฐานเว็บเซอร์วิสอื่นๆ ทำให้องค์กรต่างไม่จำเป็นที่จะต้องลงทุนกับโซลูชันที่ใช้เทคโนโลยีเฉพาะ และป้องกันการผูกขาดโดยผู้ผลิตรายใดรายหนึ่ง
·         เว็บเซอร์วิสสนับสนุนการเชื่อมโยงกับโซลูชันของผู้ผลิตต่างๆ ทำให้ช่วยลดต้นทุน
·        เว็บเซอร์วิสสนับสนุนการเชื่อมโยงระบบ แพลตฟอร์ม และโซลูชันต่างๆทั้งภายในองค์กร ระหว่างองค์กร และภายนอก
รูปแสดงตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส สร้างเซอร์วิสจากเทคโนโลยีที่ต่างกันคือ IMS, CORBA, Java EE และ Workflow โดยมีสถาปัตยกรรมแต่ละส่วนดังนี้
·         Business Service Tier : ประกอบด้วยเซอร์วิสที่พัฒนามาจากเทคโนโลยี IMS, CORBA และ โปรแกรม Workflow และมีเว็บเซอร์วิสที่พัฒนาโดยใช้เทคโนโลยีJava EE
·         Business Access Tier : จะมี Service Registry (เช่น UDDI) สำหรับการลงทะเบียนและค้นหาเว็บเซอร์วิส ดังนั้นจึงต้องมี Legacy gateways เพื่อแปลงเซอร์วิสที่ใช้เทคโนโลยีให้เป็นเว็บเซอร์วิสสำหรับIMS, CORBA และใช้ WebSphere MQ เพื่อแปลง Workflow ให้เป็นเว็บเซอร์วิส
·         Communication Infrastructure : จะใช้โพรโทคอล SOAP บน HTTP และ SOAP ที่ใช้มาตรฐาน WS-ReliableMessaging
·         Client/Presentation : ตัวอย่างนี้แสดงการใช้โปรแกรมแสดงผลที่พัฒนาโดยเทคโนโลยี .NET
 รูปแสดงตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส

พื้นฐานของ Web Service

พื้นฐานของ Web Service
พื้นฐานของ Web Service คือ XML และส่วนใหญ่จะใช้ HTTP แต่อาจจจะใช้อินเทอร์เน็ตโพรโทคอลอื่นอย่างเช่น SMTP หรือ FTP ก็ได้ แต่จะพบว่า HTTP ก็เป็นที่รู้จักกันดี และไปได้ทั่วทุกแห่งที่มี internet ส่วน XML คือภาษาสากลที่คุณสามารถปรับแต่งได้ตามใจชอบ เพื่อให้เกิดกิจกรรมระว่าง client และบริการ หรือระหว่างส่วนประกอบต่างๆ เบื้องหลัง Web server ก็คือ ข้อความ XML จะถูกแปลงให้การขอบริการจาก Middle ware และผลที่ได้ก็จะแปลงกลับมาในรูป XML
ยกตัวอย่างให้เห็นง่ายๆ คุณต้องการให้เครื่อง PC อ่านค่าจาก serial port แล้วส่งไปประมวลผลบนเครื่อง UNIX แล้วส่งผลกลับมาแสดงบนจอ PC ถ้าเป็นเมื่อก่อน คุณก็คงต้องแปลงข้อมูลที่ได้ให้อยู่ในรูปของ ASCII แล้วส่งไปยัง UNIX พร้อมคำสั่งว่าให้ทำอะไร ในฝั่ง UNIX คุณก็ต้องมาแยกว่าอันไหนคือคำสั่ง อันไหนคือข้อมูล เมื่อประมวลผลแล้ว จะส่งกลับมาในรูปแบบไหน แล้วถ้าหากจะส่งไปหาเครื่องที่เป็น MAC ท่านจะต้องเขียนโปรแกรมเพิ่มในส่วนไหนบ้าง จะพบว่าเราต้องพัฒนากันเป็นคู่ๆ ไป และต้องนิยามในแต่ละฝั่งให้ชัดเจน แต่หากเป็น Web Service คุณจะพบว่า เราแปลงข้อมูลให้อยู่ในรูป XML แต่ละคุณก็ต้องการรู้แค่ มาตรฐาน XML ก็พอ แล้วต่างคนต่างก็เขียน Service ของตัวเอง ไม่ต้องกังวลเรื่องของการเชื่อมโยงอีกต่อไป และ Protocol ที่ส่งก็คือ HTTP นั่นเอง ถ้าท่านเชื่อมโยงกับ HTTP (หรือเว็บ) ได้ ท่านก็ใช้บริการทุกอย่างได้
คุณลักษณะพื้นฐานของเว็บเซอร์วิสมีดังนี้
·         เว็บเซอร์วิสเป็นซอฟต์แวร์คอมโพเนนท์ที่ระบุตำแหน่งโดยใช้ URI
·         อินเตอร์เฟสและการติดตั้งของเซอร์วิสจะนิยาม อธิบาย และค้นหาโดยใช้ ภาษาXML
·         เว็บเซอร์วิสสนับสนุนการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ ผ่านโพรโทคอลอินเตอร์เน็ต
·         เว็บเซอร์วิสใช้เอกสารแบบ XML ในการส่งข้อมูลระหว่างผู้ให้บริการและผู้ใช้
·         เว็บเซอร์วิสช่วยในการเชื่อมโยงโปรแกรมประยุกต์ต่างแพลตฟอร์ม (Cross-platform
Integration) ผ่านอินเตอร์เน็ต
·        นักพัฒนาสามารถพัฒนาเว็บเซอร์วิสได้โดยใช้โปรแกรมภาษาคอมพิวเตอร์ต่างๆเช่น Java,
C, C# หรือ Visual Basic และสามารถพัฒนาโดยการเปลงซอฟต์แวร์คอมโพเนนท์ที่มีอยู่ให้
เป็นเว็บเซอร์วิส
·        เว็บเซอร์วิสจะไม่รวมถึงการจัดการส่วนแสดงผลเหมือน HTML
·        เว็บเซอร์วิสจะเป็นซอฟต์แวร์คอมโพเนนท์แบบ loosely couple ดังนั้นแต่ละคอมโพ
เนนท์จะเป็นอิสระและมีฟังก์ชันที่สมบูรณ์ในตัว
·        เราสามารถที่จะค้นหาและเรียกใช้เว็บเซอร์วิสจาก registry ที่เป็นแบบ public หรือ
private โดยใช้มาตรฐานกลางเช่น UDDI และ ebXML
·        เว็บเซอร์วิสสามารถที่จะเรียกใช้โดย client ต่างๆ ได้เช่น คอมพิวเตอร์ โทรศัพท์เคลื่อนที่
หรือ พีดีเอ
เหตุผลของการพัฒนาเว็บเซอร์วิส
     เว็บเซอร์วิสจะแตกต่างกับโปรแกรมประยุกต์บนเว็บ (Web Application) และDistributed Computing (Distributed Application) ทั้งนี้เพราะโปรแกรมประยุกต์บนเว็บ จะเป็นโปรแกรมเพื่อให้ผู้ใช้ (End User) สามารถโต้ตอบกับโปรแกรมผ่านเว็บไซต์ได้ ไม่ใช่ Distributed Computing ที่เป็นซอฟต์แวร์เซอร์วิสและไม่สามารถเรียกใช้จากผู้ใช้ที่หลากหลายได้ ส่วนข้อจำกัดของ Distributed Computing คือจะยึดติดกับโพรโทคอลเฉพาะเช่น RMI หรือ CORBA และโพรโทคอลเหล่านี้เป็นแบบไบนารี่ (Binary Protocol) จึงผูกอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง ดังนั้นจะเห็นได้ว่าเว็บเซอร์วิสไม่ใช่แนวคิดใหม่ เพียงแต่เปลี่ยนรูปแบบโพรโทคอลและหลักการบางอย่างที่เคยใช้ใน Distributed Computing เหตุผลสำคัญที่ควรเลือกพัฒนาเว็บเซอร์วิสมากกว่าการพัฒนาโปรแกรมประยุกต์บนเว็บและ Distributed Computing คือ
    1.เว็บเซอร์วิสใช้โพรโทคอลที่เป็นมาตรฐานโดยใช้รูปแบบ XML
    2.เราสามารถเรียกใช้เว็บเซอร์วิสโดย XML-based RPC จึงทำให้สามารถเรียกผ่าน Firewall ซึ่งแตกต่างกับกรณีของเทคโนโลยีแบบกระจาย
   3.เว็บเซอร์วิสสนับสนุนการทำงานร่วมกันของโซลูชัน ที่ข้ามแพลตฟอร์มและใช้ภาษาคอมพิวเตอร์ที่ต่างกันได้ โดยการส่งข้อมูลแบบ XML
   4.เว็บเซอร์วิสสนับสนุนการการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ ผ่านโพรโทคอลอินเตอร์เน็ต ซึ่งแตกต่างกับโปรแกรมประยุกต์บนเว็บที่เป็นการเรียกโดยตรงจากผู้ใช้
จุดเด่นของการพัฒนาเว็บเซอร์วิสสามารถที่จะสรุปได้ดังนี้
·         การเชื่อมโยง (Interoperable): สนับสนุนการเชื่อมโยงกันระหว่างโปรแกรมประยุกต์ที่
หลากหลาย (Heterogeneous Applications) ได้ โดยใช้มาตรฐานเว็บที่เป็นกลาง
·         ลดค่าใช้จ่าย (Economical): สนับสนุนการนำซอฟต์แวร์คอมโพเน้นท์กลับมาใช้ใหม่
(reuse) และไม่ต้องยึดติดกับเทคโนโลยีเดิม
·         อัตโนมัติ (Automatic): สนับสนุนการการเรียกใช้จากโปรแกรมโดยตรง โดยไม่ต้องโต้
ตอบกับผู้ใช้
·         เข้าถึงได้ (Accessible): สามารถที่จะเรียกใช้โปรแกรมเดิม (Legacy) หรือโปรแกรม
ภายในผ่านเว็บได้
·         ใช้ได้ตลอด (Available): สนับสนุนการเรียกใช้ได้ทุกที่ ทุกอุปกรณ์ และทุกเวลา
·         ขยายได้ (Scalable): ไม่ได้จำกัดขนาดของโปรแกรมหรือจำนวนของระบบต่างๆ
โมเดลการทำงานของเว็บเซอร์วิส
     กระบวนการการทำงานของเว็บเซอร์วิสจะมีขั้นตอนการทำงานเช่นเดียวกับซอฟต์แวร์เซอร์วิสที่ใช้ Distributed Computing ดังอธิบายในรูปที่ 1 ซึ่งเราสามารถที่จะแบ่งบทบาทองค์ประกอบของเว็บเซอร์วิสได้เป็นสามส่วน โดยทั้งสามองค์ประกอบมีความสัมพันธ์ดังแสดงในรูปที่ 2 และสามารถอธิบายได้ดังนี้
·         ผู้ให้บริการ (Service Provider): ผู้ให้บริการจะมีหน้าที่ในการพัฒนาและติดตั้งเว็บ
เซอร์วิส และเป็นผู้ที่นิยามความหมายของเซอร์วิสและลงทะเบียนเซอร์วิสกับ Service Registry
·         ผู้ใช้บริการ (Service Requestor): ผู้ใช้บริการจะเป็นผู้เรียกใช้เว็บเซอร์วิส โดยอาจ
ทำการค้นหาเซอร์วิสจากเซอร์วิสไดเร็กทอรี่ แล้วทำการเรียกใช้เซอร์วิสจากผู้ให้บริการ
·        Service Registry: หรืออาจเรียกว่า Service Broker มีหน้าที่ในการรับลงทะเบียนและช่วยในการค้นหาเว็บเซอร์วิส Service Registry จะเก็บรายละเอียดของเว็บเซอร์วิสต่างๆเช่น นิยาม และตำแหน่งของเว็บเซอร์วิส ทำหน้าที่คล้ายกับสมุดโทรศัพท์เพื่อช่วยให้ผู้ใช้บริการสามารถค้นหาเซอร์วิสที่ต้องการได้
รูปที่ 2 โมเดลการทำงานของเว็บเซอร์วิส


วันจันทร์ที่ 20 กุมภาพันธ์ พ.ศ. 2555

เว็บเซอร์วิส

          เว็บเซอร์วิส (Web service) คือระบบซอฟต์แวร์ที่ออกแบบมา เพื่อสนับสนุนการแลกเปลี่ยนข้อมูลกัน ระหว่างเครื่องคอมพิวเตอร์ผ่านระบบเครือข่าย โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์ คือเอกซ์เอ็มแอล เว็บเซอร์วิสมีอินเทอร์เฟส ที่ใช้อธิบายรูปแบบข้อมูลที่เครื่องคอมพิวเตอร์ประมวลผลได้ เช่น WSDL ระบบคอมพิวเตอร์ใช้งานสื่อสารโต้ตอบกับเว็บเซอร์วิสตามรูปแบบที่ได้กำหนดไว้แล้ว โดยการส่งสาสน์ตามอินเตอร์เฟสของเว็บเซอร์วิสนั้น โดยที่สาสน์ดังกล่าวอาจแนบไว้ในซอง SOAP หรือส่งตามอินเตอร์เฟสในแนวทางของ REST สาสน์เหล่านี้ปกติแล้วถูกส่งโดยอาศัย HTTP และใช้ XML ร่วมกับมาตรฐานเกี่ยวกับเว็บอื่นๆ โปรแกรมประยุกต์ที่เขียนโดยภาษาต่างๆ และทำงานบนแพลตฟอร์มต่างๆกันสามารถใช้เว็บเซอร์วิสเพื่อแลกเปลี่ยนข้อมูลผ่านทางเครือข่ายคอมพิวเตอร์ เช่น อินเทอร์เน็ต ในลักษณะเดียวกับการสื่อสารระหว่างโปรเซส (Inter-process communication) บนเครื่องเดียวกัน ความสามารถในการแลกเปลี่ยนข้อมูลระหว่างระบบที่ต่างกันนี้ (เช่น การแลกเปลี่ยนข้อมูลระหว่าง โปรแกรมที่เขียนโดยภาษาจาวา และโปรแกรมที่เขียนโดยภาษาไพทอน หรือการแลกเปลี่ยนข้อมูลระหว่างโปรแกรมประยุกต์ที่ทำงานบนไมโครซอฟท์วินโดวส์และโปรแกรมประยุกต์ที่ทำงานบนลินุกซ์) เกิดขึ้นได้เนื่องจากการใช้มาตรฐานเปิด โดย OASIS และ W3C เป็นคณะกรรมการหลักในการรับผิดชอบมาตรฐานและสถาปัตยกรรมของเว็บเซอร์วิส
          ความหมายของเซอร์วิส (Service) หรือบริการในแง่ของเทคโนโลยี เราลองมาพิจารณาความหมายของบริการหรือกระบวนการ (Process) ที่องค์กรต่างๆ ทั้งภาครัฐและเอกชนต่างให้บริการกับประชาชน ลูกค้า พนักงาน หรือคู่ค้า ตัวอย่างเช่นบริการที่พนักงานหน้าเคาท์เตอร์ของธนาคารสามารถให้บริการแก่ลูกค้าอาจมีหลากหลายอาทิเช่น บริการฝาก/ถอนเงิน บริการแลกเปลี่ยนเงินตราต่างประเทศ หรือบริการด้านสินเชื่อเป็นต้น บริการแต่ละบริการอาจจะมีกระบวนการในการทำงานที่ซับซ้อนแตกต่างกัน แต่ในมุมมองของลูกค้าจะไม่สนใจว่าบริการนั้นมีขั้นตอนการทำงานอย่างไร แต่จะมีวัตถุประสงค์หลักเพื่อให้บริการนั้นเสร็จสิ้นและได้ผลลัพธ์ออกมาตามที่ลูกค้าขอใช้บริการนั้นๆ
          ความหมายของเซอร์วิสในแง่ของซอฟต์แวร์ ก็มีคุณลักษณะเช่นเดียวกับบริการทั่วๆ ไป กล่าวคือเป็นซอฟต์แวร์คอมโพเนนท์ (Software Component) ที่อาจเป็น ฟังก์ชัน หรือ โมดูล ที่มีกระบวนการการทำงานภายใน สามารถรับอินพุตเข้ามาเพื่อประมวลผล และจะส่งผลลัพธ์กลับออกไป ซอฟต์แวร์เซอร์วิสเหล่านี้เราอาจกำหนดเป็นกระบวนการทางธุรกิจ (Business Process) กล่าวคือจะเป็นฟังก์ชันที่ทำเฉพาะการประมวลผลซึ่งจะไม่เกี่ยวข้องกับส่วนแสดงผล (Presentation Logic) นอกจากนี้ด้วยเทคโนโลยี Distributed Computing ทำให้สามารถที่จะพัฒนาซอฟต์แวร์เซอร์วิสเพื่อเรียกใช้จากระยะไกล (remote) ผ่าน Internet ได้โดยใช้เทคโนโลยีเฉพาะด้าน (proprietary technology) อาทิเช่น RMI, CORBA หรือ DCOM
                เว็บเซอร์วิส (Web Service) อาจไม่ได้เป็นเรื่องใหม่แล้ว และคนวงการไอทีส่วนใหญ่เริ่มเข้าใจเทคโนโลยีเว็บเซอร์วิสดีขึ้น มาตรฐานต่างๆ ของเว็บเซอร์วิสเริ่มเป็นที่ยอมรับกันมากขึ้นและกลายเป็นมาตรฐานหลักในการพัฒนา SOA แต่การพัฒนาเว็บเซอร์วิสสำหรับประยุกต์ใช้งานจริงในองค์กรยังเพิ่งเริ่มต้นและวัตถุประสงค์ในการพัฒนายังไม่ชัดเจนนัก แต่เมื่อมีการกล่าวถึงการพัฒนาสถาปัตยกรรมเชิงบริการ (SOA) ภายในองค์กรกันมากขึ้น โดยเฉพาะความต้องการขององค์กรที่จะทำการเชื่อมโยงระบบภายในองค์กร (Internal Enterprise Application Integration) จึงทำให้องค์กรสนใจจะนเทคโนโลยีเว็บเซอร์วิสเข้ามาช่วยในการพัฒนาโปรแกรมต่างๆ มากขึ้น      บทความนี้จะเป็นการแนะนำเทคโนโลยีเว็บเซอร์วิส ประโยชน์ และมาตรฐานต่างๆ ของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา (Java Technology)
          ตัวอย่างการใช้งานของซอฟต์แวร์เซอร์วิสโดยใช้ Distributed Computing จะเป็นไปดังแสดงในรูปที่ 1 ซึ่งจะเห็นได้ว่ามีระบบ Back-end ต่างๆ เช่น Airline Reservation System และ Hotel Reservation System ที่มีซอฟต์แวร์เซอร์วิสต่างๆ อยู่ ผู้ใช้ด้าน Front-end ที่จะเป็นผู้ใช้บริการเซอร์วิส (Service Requestor) ซึ่งอาจเรียกใช้จากอุปกรณ์ต่างๆ เช่น คอมพิวเตอร์ หรือโทรศัพท์เคลื่อนที่ (Mobile Phone) จะสามารถเรียกใช้ซอฟต์แวร์เซอร์วิสเหล่านี้ผ่านผู้ให้บริการเซอร์วิส (Services Provider) ซึ่งทำหน้าที่เป็น Middleware การเรียกใช้เซอร์วิสเหล่านี้อาจเป็นการเรียกใช้จากผู้ใช้โดยตรงหรือเรียกใช้โดยโปรแกรมซอฟต์แวร์คอมโพเนนท์ (Program to Program) จากอุปกรณ์ที่ใช้ นอกจากนี้ในกรณีที่ไม่ทราบชื่อหรือเซอร์วิสที่มีอยู่ เราสามารถที่จะค้นหาซอฟต์แวร์เซอร์วิสเหล่านี้ได้จาก Registry ที่ทำหน้าที่เก็บรายละเอียดของซอฟต์แวร์เซอร์วิสต่างๆที่มีอยู่ โดยผู้ให้บริการเซอร์วิสจะทำหน้าที่ลงทะเบียนรายละเอียดของเซอร์วิสไว้ ทั้งนี้การค้นหาเซอร์วิสผ่าน Registry สามารถทำได้อัตโนมัติโดยใช้คำสั่งในโปรแกรมด้านผู้ใช้บริการเซอร์วิส

  รูปที่ 1 ซอฟต์แวร์เซอร์วิสโดยใช้ Distributed Computing

 
          เว็บเซอร์วิสจะใช้หลักการของซอฟต์แวร์เซอร์วิสของ Distributed Computing แต่จะใช้โพรโทคอลที่มีมาตรฐานกลาง (Standard Protocol) ที่อยู่ในรูปแบบ XML (eXtensible Markup Language) และจะเป็นซอฟต์แวร์คอมโพเนนท์ที่ให้บริการผ่านอินเตอร์เน็ต