ก่อนหน้านี้ผมได้อ่านเกี่ยวกับเว็บเซอวิส  รู้สึกว่ามันเป็นอะไรที่ไกลตัว และค่อนข้างยุ่งยาก ซับซ้อน ต้องมี 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() ใหม่ มันน่าจะมาแล้วล่ะ

ในบทต่อไป ผมจะนำเสนอโค้ดเช็กเลขบัตรประชาชน กับเว็บสรรพากร ห้ามพลาด