ก่อนหน้านี้ผมได้อ่านเกี่ยวกับเว็บเซอวิส รู้สึกว่ามันเป็นอะไรที่ไกลตัว และค่อนข้างยุ่งยาก ซับซ้อน ต้องมี XML เข้ามาเกี่ยวข้อง ต้องอ่านเอกสาร WSDL เข้าใจยาก และสิ่งที่เป็นปราการด่านสำคัญของการอยากจะรู้มันก็คือ ไม่รู้จะเอาไปทำขี้เกลืออะไร
แต่หลายวันมานี้ ผมต้องเขียนโปรแกรมให้กับสนามบินสุวรรณภูมิ โปรแกรมในบริษัทที่จะนำไปใช้ที่นั่น 4 ตัว แต่ละตัวจะต้องส่งและรับข้อมูลกันได้ ถามว่าทำไมต้องทำอย่างนั้น เหตุผลหนึ่งก็คือ ทั้ง 4 ตัวนี้เขาอยากให้อิสระต่อกัน แต่แชร์ข้อมูลกันได้ อนาคตถ้าหากไม่อยากแชร์ข้อมูลกันแล้ว ก็แยกต่างหากออกจากกันได้ทันที
ไม่มีฐานข้อมูลจะต้องมาเกี่ยวข้องกัน คือแยกได้ ประกอบได้ เอาง่ายๆ
อีกส่วนก็คือโปรแกรมเดิมของเขามีอยู่แล้วบางส่วน ต้องการทำเพิ่มในบางส่วน ของเดิมก็จะใช้ ของใหม่ต้องทำแยกต่างหาก แต่ให้จัดการข้อมูลในฐานข้อมูลได้เสมือนหนึ่ง เป็นโปรแกรมเดียวกัน
เว็บเซอวิสคือคำตอบ ของความต้องการ
ฟังดูอาจจะวุ่นวาย แต่ด้วยความสามารถของ เว็บเซอวิส มันกลายเป็นเรื่องกล้วยๆ ที่ลิงก็ยังสามารถโปรแกรมได้
เอาละครับ มาฟังหลักการกันสักนิด เพื่อให้สงสัยกันเล่นๆ
เว็บเซอวิสคืออะไร
ผมขอยกอ้างข้อความจาก http://www.oknation.net/blog/Siraprapa/2010/08/30/entry-2 มาให้อ่าน เข้าไปอ่านดูนะครับ ค่อยๆอ่าน ถ้างงๆก็อ่านหลายรอบหน่อยนะ ถ้ายังงงอยู่อีก ก็ไม่ต้องสนใจอะไรมันมาก ผมจะทำให้ท่านเข้าใจเอง มันง่ายเว่อร์ครับ บอกได้แค่เนี้ย
เว็บเซอร์วิส (Web service) คือ ระบบซอฟต์แวร์ที่ออกแบบมา เพื่อสนับสนุนการแลกเปลี่ยนข้อมูลกัน ระหว่างเครื่องคอมพิวเตอร์ผ่านระบบเครือข่าย โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์ คือเอกซ์เอ็มแอล เว็บเซอร์วิสมีอินเทอร์เฟส ที่ใช้อธิบายรูปแบบข้อมูลที่เครื่องคอมพิวเตอร์ประมวลผลได้ เช่น WSDL
ระบบคอมพิวเตอร์ใช้งานสื่อสารโต้ตอบกับเว็บเซอร์วิสตามรูปแบบที่ได้กำหนดไว้แล้ว โดยการส่งสาสน์ตามอินเตอร์เฟสของเว็บเซอร์วิสนั้น
โดยที่สาสน์ดังกล่าวอาจแนบไว้ในซอง SOAP หรือส่งตามอินเตอร์เฟสในแนวทางของ REST สาสน์เหล่านี้ปกติแล้วถูกส่งโดยอาศัย HTTP และใช้ XML ร่วม กับมาตรฐานเกี่ยวกับเว็บอื่นๆ โปรแกรมประยุกต์ที่เขียนโดยภาษาต่างๆ และทำงานบนแพลตฟอร์มต่างๆกันสามารถใช้เว็บเซอร์วิสเพื่อแลกเปลี่ยนข้อมูล ผ่านทางเครือข่ายคอมพิวเตอร์ เช่น อินเทอร์เน็ต
พูดให้ง่ายก็คือ เว็บที่ให้บริการข้อมูล ตอนแรกผมเข้าจำคำว่าให้บริการข้อมูลแคบไปหน่อย เลยมองเห็นประโยชน์จากมันไม่มาก แต่ที่จริงแล้ว เราสามารถเขียนโปรแกรมให้เว็บหนึ่ง ส่งข้อมูลไปจัดเก็บยังอีกเว็บหนึ่ง ได้เลยทีเดียว หรือจะเขียนให้เว็บหนึ่ง ขอข้อมูลการล้อกอินจากอีกเว็บหนึ่งได้
พูดให้ง่ายเข้าไปอีก คือ เราสามารถเรียกใช้งานฟังก์ชั่น ข้ามเว็บไซต์ กันได้เลย ไม่ว่าเว็บไซต์นั้นจะเขียนด้วยภาษาที่ต่างกันหรือเปล่า
ตัวอย่างที่นิยมใช้และเห็นถามกันบ่อยในโลกไซเบอร์คือ จะเช็กหมายเลยบัตรประชาชนอย่างไร ให้แน่ใจว่ามีตัวตนอยู่จริงๆ เพราะถ้าหากแค่เช็กแพทเทิร์น มันก็ปลอมกันได้ คำตอบของคำถามนี้ง่ายมากครับ กรมสรรพากรเขาเปิดเว็บให้บริการเช็กข้อมูลบัตรประชาชนอยู่แล้ว แค่ท่านเขียนโค้ดเว็บเซอวิสเป็น ท่านก็สามารถส่งข้อมูลไปเช็กที่เว็บสรรพากรได้เลย ถูกต้องชัวร์ เพราะเขามีฐานข้อมูลเลขบัตรเก็บไว้
ที่สำคัญนะ ในภาษา PHP เขียนโค้ดแค่ 5 บรรทัดเท่านั้น 5 บรรทัดครับท่าน น้อยนิดมากสำหรับความสามารถอันยิ่งใหญ่ เจ๋งปะล่ะ
SOAPคืออะไร
คำสองคำที่จะได้ยินบ่อยคู่กัน คือ เว็บเซอวิส กับ soap เว็บเซอวิสพูดถึงในแง่ว่า ทำให้เว็บสองเว็บสื่อสารกันได้ สื่อสารกันได้ เขาเรียกเว็บเซอวิส เป็นคำระดับหลักการ พูดรวมๆ แล้วจะให้เว็บสองเว็บคุยกันได้อย่างไรล่ะ มันก็ต้องมีสิ่งที่กำหนดร่วมกัน แบบเดียวกัน SOAP คือหนึ่งในข้อกำหนด เรียกอย่างเป็นทางการว่า โปรโตคอล (ฟังแล้วขนลุก)
SOAP ก็คือโปรโตคอลที่ใช้สื่อสารกันระหว่างเว็บ 2 เว็บ โดยมีฟอร์แมตเป็น XML เว็บนี้ส่ง XML ไปให้เว็บโน้น เว็บโน้นรันฟังก์ชั่นที่ร้องขอมา แล้วส่ง XML ตอบกลับ อาจจะตอบกลับแค่ สำเร็จหรือไม่สำเร็จ หรือตอบกลับมาเป็นเรคคอร์ดในฐานข้อมูลก็ได้ แล้วแต่ว่าจะถูกออกแบบมาอย่างไร
สิ่งที่ผมตั้งใจไว้ก็คือ ผมจะสอนให้ท่าน เขียนได้ทั้งโค้ดไปเรียกใช้ฟังก์ชั่นจากเว็บชาวบ้านเขา และสร้างเว็บเซอวิสเป็นของท่านเอง เพื่อเชื่อมต่อเว็บหลายๆตัวของท่านเข้าด้วยกัน หรือ เพื่อให้เว็บอื่นมาขอบริการบางอย่างจากเว็บท่าน
เอากันอย่างนั้นเลย และย้ำอีกรอบว่า ง่ายมากๆครับท่าน ถ้าท่านเคยอ่านที่เว็บไหนมาแล้ว รู้สึกอยาก อ่านเว็บผมครับ จะเข้าใจอย่างกระจ่าง
ถึงตอนท้ายผมจะให้ท่านอุทานว่า “เห้ย ไมง่ายงี้วะ”, “โห… ที่จริงแล้วมันง่ายมาก แค่นี้เองเหรอ” กันเลยทีเดียว
ก่อนจะเขียนโค้ด จะต้องมีการเตรียมเครื่องนิดหนึ่ง ต้องดูว่า PHP ของเราเปิดใช้ไลบรารี SOAP หรือยัง โดยใช้คำสั่ง
phpinfo(); |
ไล่หาคำว่า SOAP ถ้ามีแสดงว่าเครื่องพร้อม ถ้าไม่มีให้เปิด ตามนี้
1. เปิดไฟล์ php.ini
2. มองหา
extension=php_soap.dll |
3. ถ้ามีเครื่องหมาย ; นำหน้า ลบมันออกซะ
4. รีสตาร์ท Apache
ลองเรียก phpinfo() ใหม่ มันน่าจะมาแล้วล่ะ
ในบทต่อไป ผมจะนำเสนอโค้ดเช็กเลขบัตรประชาชน กับเว็บสรรพากร ห้ามพลาด
John Snow says:
21/10/2556 at 21/10/2556
ให้เดา น่าจะใช้ NUSOAP ช่วย 55
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
23/10/2556 at 23/10/2556
ท่านเดาผิด ผมใช้ soap ที่มีให้มาอยู่แล้วใน PHP
Nutchawat says:
03/11/2556 at 03/11/2556
เรียนถามเจ้าของเว็บครับ เห็นท่านเชี่ยวชาญการใช้งาน fire fox
what does the fox say
http://www.youtube.com/watch?v=jofNR_WkoCE
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
04/11/2556 at 04/11/2556
เพลงน่ารักเชียว
wee says:
23/02/2557 at 23/02/2557
พวกปุ่มไลค์ปุ่มแชร์จากเฟสบุ๊คนี่ ถือว่าเป็นเว็บเซอร์วิสด้วยป่ะฮะ
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
25/02/2557 at 25/02/2557
โดยสภาพแล้วไม่ถือว่าเป็นเว็บเซอวิสนะ แต่วิธีการที่เอาข้อมูลไปเก็บ มันใช้เว็บเซอวิส ไม่งงนะ
batistutor says:
21/05/2557 at 21/05/2557
พี่วัชรเมธน์ครับ ผมเจอทางแก้สิ่งที่เป็นปัญหากับผมแล้วครับ คือเรื่องการเปลี่ยน service endpoint สามารถทำได้โดยการ สร้างตัวแปร ระดับ project ขึ้นมาครับ
อย่างของผม ทำงี้ครับ http://goo.gl/AakNvi
แล้วก็เอาตัวแปรมาใส่ในระดับ request http://goo.gl/cdjskQ
ทีนี้ถ้าเราจะเปลี่ยน server เราก็จะเปลี่ยน service endpoint ได้ที่ตัวแปรระดับโปรเจคที่เดียว
batistutor says:
21/05/2557 at 21/05/2557
อัพลง facebook แล้วรูปเล็กลงเลย ไม่รู้ว่าดูรู้เรื่องรึเปล่านะครับพี่