ปัจจุบันโปรแกรมคอมพิวเตอร์ถูกแยกออกเป็นหลายรูปแบบ หลายประเภท แต่ละประเภทก็มีเครื่องมือและภาษาโปรแกรมในการสร้างขึ้นมาเป็นของตนเอง ถ้าเราลองแยกกลุ่มโปรแกรมคอมพิวเตอร์ตามเครื่องมือหรือภาษาโปรแกรมยอดนิยมที่ใช้ในการพัฒนาโปรแกรม ปัจจุบันอาจจะแบ่งออกมาได้เป็น 3 ค่ายใหญ่ๆ ได้แก่ Java, .NET และพวก Opensource อื่นๆ พวก Opensource อื่นๆในที่นี้หมายความรวมถึงกลุ่มเล็กกลุ่มน้อยที่ใช้ภาษาโปรแกรมเฉพาะทางเพื่อทำงานที่มีลักษณะเฉพาะเป็นตนเอง เช่น ภาษา PHP ที่เหมาะสำหรับการทำเว็บ หรือภาษา Python ที่มีประสิทธิภาพสูงในงานวิศวกรรม เป็นต้น

เนื่องจากโปรแกรมคอมพิวเตอร์ถูกสร้างขึ้นมาจากผู้ผลิตต่างค่าย และต่างรูปแบบกัน ส่งผลให้การรวมระบบสารสนเทศเข้าด้วยกันกลายเป็นเรื่องยุ่งยากและแทบจะไม่ประสบความสำเร็จเลยตลอดระยะเวลาหลายสิบปีที่ผ่านมา เราจะพบว่ามีนักพัฒนาระบบสารสนเทศจำนวนมากพยายามคิดค้น ค้นหา เครื่องมือหรือเทคนิคที่จะนำมารวมระบบสารสนเทศเข้าด้วยอยู่ตลอดเวลา สิ่งที่เป็นปัญหาก็คือ เทคนิคที่จะนำมารวมระบบที่ถูกคิดค้นขึ้นมาเหล่านั้น ไม่ได้รับการยอมรับจากผู้ผลิตต่างค่าย เนื่องจากอาจจะมีปัญหาทางเทคนิคที่ทำให้ยากต่อการใช้งานและบำรุงรักษาระบบ

ในท้ายที่สุดเทคโนโลยีที่ได้รับการยอมรับจากทุกค่ายว่าสามารถใช้เชื่อมต่อระบบสารสนเทศเข้าด้วยกันได้จริง ก็คือ XML และ Web Services เหตุผลที่เป็นเช่นนั้น เนื่องจาก XML เป็นข้อมูลประเภทตัวอักษรที่ง่ายต่อการทำความเข้าใจ ส่วน Web Services เองก็ไม่ได้มีกฏเกณฑ์อะไรซับซ้อน หรือบังคับโปรแกรมต้องทำอะไรบ้าง ซึ่ง Web Services เองเป็นเพียงแค่ข้อมูลที่บอกว่าโปรแกรมนั้นทำอะไรได้บ้าง ซึ่งก็ถือว่าเพียงพอสำหรับการเชื่อมต่อระบบแล้ว

แม้ว่า XML และ Web Services จะเกิดขึ้นมาได้เกือบ 10 ปีแล้วก็ตาม แต่การนำมาใช้เชื่อมต่อระบบเข้าด้วยกันอย่างแท้จริงในหน่วยงานต่างๆ ก็ยังคงเป็นไปอย่างค่อยเป็นไป จากเท่าที่สำรวจดู เหตุผลก็เนื่องจากในหลายหน่วยงานยังอยู่ระหว่างการเรียนรู้ และค่อยๆนำไปทดแทนเทคโนโลยีดั้งเดิมที่ใช้งานอยู่ และถึงกระนั้นก็ตามคาดว่าในอนาคตข้างหน้า เราจะพบว่าระบบสารสนเทศส่วนใหญ่จะมีส่วนเชื่อมต่อที่เป็น Web Services ประกอบเข้าเป็นส่วนหนึ่งของระบบด้วยเกือบทุกระบบ

เอกสารฉบับนี้เหมาะสำหรับผู้ที่อยู่ระหว่างการเริ่มต้นใช้งาน XML และ Web Services เพื่อแลกเปลี่ยนข้อมูลระหว่างระบบสารสนเทศที่ผลิตมาจากต่างค่ายต่างแพลตฟอร์ม โดยจะพาท่านผู้อ่านเดินไปทีละขั้นเพื่อให้เห็นภาพอย่างครบวงจรว่าเราสามารถแลกเปลี่ยนข้อมูลกันด้วยวิธี XML และ Web Services ได้อย่างไร หากท่านผู้อ่านเป็นผู้ที่เคยมีประสบการณ์ด้านคอมพิวเตอร์มาแล้วอย่างโชกโชน แต่ยังไม่เคยศึกษาด้าน XML และ Web Services เอกสารฉบับนี้จะช่วยให้ท่านเข้าใจวิธีการแบบ Web Services ได้อย่างง่ายดาย ถือว่าเป็นความรู้เพิ่มเติมสำหรับท่าน แต่หากท่านผู้อ่านเป็นผู้ที่เคยประสบกับความยากลำบากในการแลกเปลี่ยนข้อมูลระหว่างระบบสารสนเทศ รวมทั้งเคยพยายามใช้ XML หรือ Web Services แล้วติดปัญหาเนื่องจากไม่เข้าใจชิ้นส่วนแต่ละชิ้นอย่างถ่องแท้ ต้องขอบอกว่าเอกสารฉบับนี้น่าจะช่วยให้ท่านทลายกำแพงอุปสรรคเหล่านั้น และสามารถกำหนดกลยุทธ์ในการแลกเปลี่ยนข้อมูลที่จะเกิดขึ้นในอนาคตได้อย่างไม่ผิดพลาด

กรณีศึกษาระบบห้องสมุด

เราจะสมมุติตัวอย่าง ระบบห้องสมุด ให้ท่านผู้อ่านเห็นภาพของการแลกเปลี่ยนข้อมูลแบบง่ายๆ ภายในหน่วยงาน ท่านคงจะเคยใช้บริการจากห้องสมุด และเข้าใจดีอยู่แล้วว่าห้องสมุดให้บริการยืม-คืน หนังสือ และห้องสมุดก็ถือว่าเป็นหน่วยงานสำคัญในการรวบรวมองค์ความรู้ขององค์การ ดังนั้นนักศึกษาที่ยืมหนังสือไปแล้ว ปกติจะต้องส่งคืนหนังสือก่อนที่จะลงทะเบียนในภาคเรียนถัดไป หรือก่อนที่จะจบการศึกษา อาจจะได้รับเตือนให้คืนหนังสือห้องสมุดให้หมดเสียก่อน

สรุปก็คือ ห้องสมุดจำเป็นต้องบอกสถานะของการยืมคืนหนังสือ ให้หน่วยงานอื่นรู้ได้ว่านักศึกษาคนนั้นได้คืนหนังสือจนครบหมดแล้วหรือยัง ส่วนเงื่อนไขว่าถ้าหากยังคืนไม่หมดแล้วจะเป็นอย่างไรนั้น ก็สุดแล้วแต่ว่าแต่ละหน่วยงานจะไปดำเนินการกันเอง เช่น ที่งานทะเบียนอาจจะไม่ยอมให้นักศึกษาลงทะเบียนในเทอมต่อไป ส่วนที่บัณฑิตศึกษาก็อาจจะไม่ยอมให้นักศึกษาแจ้งจบ ถ้าหากยังคืนหนังสือไม่หมด เป็นต้น

จากตัวอย่างข้างต้น แสดงให้เห็นว่าระบบอื่นจะต้องเชื่อมต่อเข้ามาเอาข้อมูลสถานะการยืม-คืนหนังสือ จากระบบห้องสมุด ซึ่งถ้าเป็นการเชื่อมโยงระบบแบบดั้งเดิมที่ไม่ใช่ XML หรือ Web Services ลักษณะเช่นนี้จะต้องพูดคุยกันหลายฝ่าย ทั้งฝ่ายไอทีที่รับผิดชอบงานทะเบียนและฝ่ายไอทีที่เป็นผู้รับผิดชอบระบบห้องสมุด หากเป็นองค์กรขนาดใหญ่เรื่องอาจจะยุ่งยากมากขึ้นอีก เพราะระบบไอทีทั้งหลายถูกพัฒนาขึ้นโดยผู้ผลิตหลายรายที่เข้ามารับจ้างผลิตให้ ซึ่งท่านจะเห็นแล้วว่า แค่เราต้องการสถานะการยืมคืนจากห้องสมุด ทำไมเรื่องที่ดูเหมือนจะง่ายเช่นนี้ จึงกลับกลายเป็นเรื่องยุ่งยากทันทีถ้าหากเป็นองค์กรขนาดใหญ่ที่มีระบบไอทีหลากหลาย

การประชุมเพื่อขอแลกเปลี่ยนข้อมูล

เมื่อต้องการแลกเปลี่ยนข้อมูลกันระหว่างหน่วยงาน เราจะพบว่างานอย่างแรกที่หลีกเลี่ยงไม่ได้ก็คือการจัดประชุมร่วมกันระหว่างฝ่ายที่เกี่ยวข้อง เพื่อจะแจ้งให้ทราบว่ามีใครต้องการข้อมูลอะไรจากใครบ้าง และหลังจากนั้นจึงถกประเด็นในรายละเอียดว่าเป็น ข้อมูลอะไร แบบไหน เอาไปทำอะไร เมื่อใด อย่างไร การประชุมเช่นนี้อาจจะจบลงที่สุดท้ายต้องให้ฝ่ายไอทีของหน่วยงานที่เกี่ยวข้อง มาประชุมร่วมกันอีกครั้ง เพื่อให้ได้รายละเอียดด้านเทคนิค และอาจจะยากลำบากมากขึ้นไปอีก ถ้าหากฝ่ายไอทีของหน่วยงานที่จะต้องแลกเปลี่ยนข้อมูลกัน ไม่ยอมรับเทคนิคที่อีกฝ่ายขอไว้ ด้วยเหตุผลอันเนื่องมาจากใช้เครื่องมือและเทคโนโลยีไม่ตรงกัน

การแลกเปลี่ยนข้อมูลด้วยวิธีการ XML และ Web Services จะช่วยลดปัญหาข้างต้นนี้ได้อย่างชัดเจน เนื่องจากสิ่งที่นักเทคนิค จำเป็นต้องพูดคุยกันเพื่อขอแลกเปลี่ยนข้อมูลมีเพียง 2 ประเด็น เท่านั้น คือ 1) ข้อมูลแบบไหน (XML Schema) และ 2) กระบวนการอะไร (Operation)

หากยกตัวอย่างระบบห้องสมุดข้างต้น สมมุติว่าปัจจุบันระบบห้องสมุดเป็นระบบที่สร้างขึ้นจากแพลตฟอร์ม Microsoft .NET ส่วนระบบงานทะเบียนเป็นระบบที่สร้างขึ้นจากแพลตฟอร์ม Java และเพื่อให้เห็นชัดเจนยิ่งขึ้นไปอีกว่าวิธีการแบบ XML และ Web Services ไม่ได้อ้างอิงค่ายใดค่ายหนึ่ง เราจะขอสมมุติว่ามีกลุ่มที่สามที่ต้องการข้อมูลนี้ด้วย คือกองกิจการนักศึกษา ซึ่งรับผิดชอบหน้าเว็บประจำตัวนักศึกษา จะต้องนำข้อมูลการยืม-คืนหนังสือ ไปแสดงผลที่หน้าเว็บประจำตัวนักศึกษาด้วย โดยปัจจุบันฝ่ายไอทีของกองกิจการนักศึกษา สร้างหน้าเว็บด้วยแพลตฟอร์ม PHP เพราะฉะนั้นภาพการเชื่อมต่อระบบที่เกิดขึ้นจะเป็นดังนี้

รูปภาพ 1 ตัวอย่างการขอข้อมูลข้ามระบบที่ต่างแพลตฟอร์ม

จากภาพข้างต้นเราจะเห็นว่า ผู้ที่เป็นฝ่ายให้ข้อมูลก็คือระบบห้องสมุด ส่วนผู้ที่เป็นคนนำข้อมูลไปใช้ก็คือ ระบบทะเบียน และ กองกิจการนักศึกษา ซึ่งในโลกของ SOA (Service-Oriented Architecture) เราจะเรียกฝ่ายที่ให้ข้อมูลว่าเป็น Service Provider และฝ่ายที่เป็นผู้ขอข้อมูลไปใช้ว่าเป็น Service Consumer ดังนั้นในที่นี้ ระบบห้องสมุดจึงเป็น Service Provider ส่วนระบบลงทะเบียนและกองกิจการนักศึกษา ก็จะเป็น Service Consumer นั่นเอง

หากเราไม่ใช้วิธีการแบบ XML และ Web Services การขอข้อมูลเช่นในภาพข้างต้นจะประสบปัญหายุ่งยากหลายอย่างอันเนื่องมาจากความแตกต่างของแพลตฟอร์ม เพราะจะเห็นว่าทั้ง 3 ระบบดำเนินการอยู่บนแพลตฟอร์มที่แตกต่างกัน สิ่งที่เป็นปัญหาใหญ่ที่อาจจะพบก็คือ ทั้งฝ่ายผู้ให้ข้อมูลและผู้ขอข้อมูลจะต้องยอมรับร่วมกันใน 2 เรื่อง คือ 1) รูปแบบข้อมูล (Data Model) ต้องเข้าใจตรงกัน และ 2) วิธีการรับ-ส่งข้อมูล (Communication Protocol) ที่จะใช้ร่วมกัน

รูปภาพ 2 ปัญหาด้านเทคนิคที่ต้องตกลงร่วมกัน เมื่อจำเป็นต้องแลกเปลี่ยนข้อมูลข้ามระบบ

จากตัวอย่างข้างต้นเราจะเห็นแล้วว่า ไม่ว่าจะเลือกใช้วิธีการส่งข้อมูลแบบไหน หรือจะใช้เนื้อหาข้อมูลเป็นเช่นไร แต่การแลกเปลี่ยนข้อมูลจะสำเร็จได้ก็ต่อเมื่อนักเทคนิคทั้งสองฝ่ายยอมใช้วิธีการเดียวกันในการส่งและการรับข้อมูล

ในตัวอย่างข้างต้น หากนักเทคนิคของระบบทะเบียนถนัด Java และพยายามจะใช้วิธีการ RMI/IIOP ในการสื่อสารข้อมูล แต่ทางนักเทคนิคของระบบห้องสมุดถนัด .NET และต้องการใช้วิธีการ COM+ ในการสื่อสารข้อมูล หากเป็นเช่นนี้ก็จะทำให้แลกเปลี่ยนข้อมูลกันไม่ได้ เพราะทั้งสองฝ่ายใช้เทคนิคที่แตกต่างกัน ซึ่งถ้าท่านพบว่าการประชุมเพื่อแลกเปลี่ยนข้อมูลเริ่มกลายเป็นความขัดแย้งด้านเทคนิคแล้วละก็ วิธีการ XML และ Web Services จะกลายเป็นทางออกที่ดีที่สุดในการแก้ปัญหาเช่นนี้

ทางออกร่วมกันที่เป็นแบบ XML และ Web Services

จากตัวอย่างระบบห้องสมุดข้างต้น จะเห็นว่าการประชุมเพื่อตกลงร่วมกันด้านเทคนิคการแลกเปลี่ยนข้อมูลเช่นนี้ ควรจะจบลงได้อย่างรวดเร็ว เพียงแค่เรากำหนดให้ใช้วิธีการแบบ XML และ Web Services เหตุผลก็เพราะวิธีการนี้เป็นมาตรฐานที่ทุกแพลตฟอร์มล้วนให้การยอมรับ หรือกล่าวอีกอย่างหนึ่งก็คือ นักเทคนิคที่ดูแลระบบทะเบียน และ นักเทคนิคที่ดูแลระบบห้องสมุด ไม่สามารถอ้างว่าไม่สามารถแลกเปลี่ยนข้อมูลระหว่างระบบได้ เป็นเพราะมีข้อจำกัดของแพลตฟอร์มที่ใช้แตกต่างกัน

เนื่องจากปัจจุบัน ทุกแพลตฟอร์มต่างก็จัดเตรียมเครื่องมือสำหรับ XML และ Web Services ไว้ให้กับนักพัฒนาระบบอยู่แล้ว เช่น นักเทคนิคที่ดูแลระบบทะเบียนด้วยภาษา Java จะทราบว่า Java สามารถส่งข้อมูลให้กับ Web Services ได้ด้วย JAX-RPC หรือ JAX-WS และสามารถเล่นกับข้อมูล XML ที่เข้ามาได้ด้วย JAXP

ส่วนนักเทคนิคที่ดูแลระบบห้องสมุดด้วย .NET ก็อาจจะรู้ว่า .NET สามารถสร้างเว็บเซอร์วิส ได้ง่ายๆโดยการใส่แอททริบิวท์ [Web Method] เข้าไปที่หัวฟังก์ชัน เป็นต้น ส่วนทางด้านกองกิจการนักศึกษา ที่ปัจจุบันสร้างหน้าเว็บด้วย PHP อยู่ก็สามารถใช้คลาสที่ชื่อว่า SOAPClient ที่มีอยู่ใน PHP อยู่แล้ว ดึงข้อมูลจาก Web Services ไปแสดงผลที่หน้าเว็บได้

รูปภาพ 3 การแลกเปลี่ยนข้อมูลด้วยวิธีการ XML และ Web Services ที่ได้รับการสนับสนุนจากแพลตฟอร์มใหญ่ทั้ง 3 แพลตฟอร์ม

เราจะเห็นว่าวิธีการแลกเปลี่ยนข้อมูลแบบ XML และ Web Services จะช่วยให้ปัญหาความแตกต่างกันระหว่างแพลตฟอร์มหายไป และสามารถเชื่อมโยงระบบเพื่อนำข้อมูลจากระบบที่ต่างแพลตฟอร์มกันมาใช้งานในอีกระบบหนึ่งได้ อย่างไรก็ตามผู้ที่จะใช้วิธีการแบบ XML และ Web Services จำเป็นต้องกำหนดความต้องการของตนเองออกมาให้ชัดเจนอย่างน้อย 2 เรื่องคือ

  • รูปแบบข้อมูลที่ต้องการ
    • โดยเขียนกำหนดไว้ในเอกสารที่เรียกว่า XML Schema Definition (XSD) และ
  • ฟังก์ชันในการแลกเปลี่ยนข้อมูลที่ต้องการ
    • ว่าต้องการให้มีฟังก์ชันอะไรบ้าง โดยเขียนกำหนดไว้ในเอกสารที่เรียกว่า Web Services Description Language (WSDL)

ดังนั้นผลลัพธ์ของการประชุมร่วมเพื่อให้ได้ข้อตกลงด้านการแลกเปลี่ยนข้อมูลควรจะมีคำถามที่เกี่ยวข้องกับข้อมูลและฟังก์ชันที่ทำให้สามารถนำไปเขียนเป็นไฟล์ XSD และ WSDL ได้ เช่นนี้

รูปภาพ 4 ตัวอย่างลำดับการประชุมเพื่อแลกเปลี่ยนข้อมูลแบบ XML และ Web Services ของนักเทคนิคทั้ง 3 ฝ่ายที่ได้ผลลัพธ์เป็นรูปธรรม

และผลลัพธ์ที่เกิดขึ้นจากการประชุมเพื่อแลกเปลี่ยนข้อมูลก็คือไฟล์ XSD และ WSDL ที่จะใช้เป็นมาตรฐานร่วมกัน ทั้ง 2 ไฟล์นี้จะถูกวางไว้บนอินทราเน็ต (หรืออินเตอร์เน็ต) ณ ตำแหน่งที่ทั้ง 3 ฝ่ายจะสามารถมาดาวน์โหลดไปใช้งานได้ แต่โดยส่วนใหญ่แล้วระบบที่เป็นผู้ให้บริการจะเป็นผู้จัดเตรียมและวางไฟล์ทั้ง 2 ตัวนี้ไว้ให้ ในที่นี้ระบบผู้ให้บริการคือระบบห้องสมุด ดังนั้น ผู้ดูแลระบบห้องสมุดอาจจะวางไฟล์ทั้ง 2 ไฟล์นี้ไว้ให้เช่นนี้

รูปภาพ 5 ตัวอย่างการวางไฟล์ XSD และ WSDL ไว้บนอินทราเน็ตเพื่อให้ใช้เป็นมาตรฐานร่วมกัน

เมื่อมาถึงขั้นตอนนี้ผู้อ่านอาจจะเริ่มสงสัยแล้วว่าในไฟล์ XSD และไฟล์ WSDL นี้เก็บข้อมูลอะไรไว้ ถึงทำให้การแลกเปลี่ยนข้อมูลที่ดูเหมือนจะเป็นเรื่องยุ่งยาก กลายเป็นเรื่องที่ทุกแพลตฟอร์มยอมรับและทำงานร่วมกันได้

ในเอกสารฉบับนี้จะใช้ตัวอย่างระบบห้องสมุดข้างต้น โดยสมมุติว่าหลังจากประชุมเสร็จแล้ว นักเทคนิคทั้ง 3 ฝ่ายได้เขียนไฟล์ XSD และไฟล์ WSDL ขึ้นมาเป็นไฟล์ชื่อว่า library.xsd และ library.wsdl ตามลำดับ โดยภายในไฟล์ทั้งสองไฟล์นี้ จะมีรายละเอียดที่เราจะใช้ศึกษาร่วมกันในหัวข้อถัดไป

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *