HACK#52 โมดูล SOAP::Lite ของ Perl

อธิบายการติดตั้งโมดูล SOAP::Lite ของ Perl ซึ่งถือเป็นหัวใจสำคัญในการพัฒนาแอพพลิเคชันที่เป็นเว็บเซอร์วิส
SOAP::Lite (http://www.soaplite.com) เป็นมาตรฐานในการติดต่อกับ Saop-Based Web Service จาก Perl ที่ถูกใช้เป็นส่วนใหญ่ในหนังสือเล่มนี้ ซึ่งเนื้อหาในบทที่ 6 เกือบทั้งหมดจะใช้โมดูลนี้เป็นหลัก
ปัญหาระหว่าง SOAP::Lite กับ ISP ของคุณ
โชค ไม่ดีสักเท่าไหร่ ที่ ISP บางแห่งไม่สนับสนุนการใช้งาน SOAP::Lite ให้แก่สมาชิกของเขา โดยทั่วไปแล้ว ISP ส่วนใหญ่จะจำกัดการใช้งานโมดูลเพิ่มเติมบางอย่าง รวมทั้งความสามารถในการ Execute สคริปต์ต่างๆของบรรดาสมาชิก ดังนั้นก่อนที่คุณจะเสียเวลาทำการติดตั้ง SOAP::Lite ก็น่าจะสอบถาม ISP ที่คุณใช้บริการอยู่ว่าสนับสนุนการใช้งาน SOAP::Lite หรือเปล่า
การติดตั้ง SOAP::Lite
บาง ครั้งวิธีที่ง่ายที่สุดในการติดตั้งโมดูล SOAP::Lite ก็คือการติดตั้งผ่านโมดูลอีกอันหนึ่งของ Perl ซึ่งก็คือ CPAN (มีอยู่แล้วในดิสทริบิวชันรุ่นใหม่ๆของ Perl) ซึ่งจะทำการติดตั้งโมดูลต่างๆของ Perl ให้โดยอัตโนมัติ รวมทั้งรับเอาคอมโพเนนต์ต่างๆเข้ามาด้วย
  • Tip: CPAN จะติดตั้งโมดูลต่างๆลงไปในโฟลเดอร์มาตรฐานของแต่ละระบบที่นิยมติดตั้ง โปรแกรมลงไป ดังนั้นคุณจึงต้องทำการติดตั้งในฐานะ Root User เท่านั้น แต่ถ้าหากคุณเป็นผู้ใช้ทั่วไป (regular user) คุณจะต้องติดตั้ง SOAP::Lite รวมถึงสิ่งที่อาจจะต้องติดตั้งก่อนหน้านั้น (prerequisite) โดยตัวคุณเอง (ดู “การติดตั้งภายใต้ Unix ด้วยตัวเอง”)
การติดตั้ง SOAP::Lite ด้วย CPAN ภายใต้ระบบ Unix และ Mac OS X
ถ้าหากคุณมีโมดูล CPAN อยู่แล้ว รวมทั้งคุณเป็น root ของระบบและเชื่อมต่อกับอินเทอร์เน็ตอยู่ การติดตั้งจะทำโดยการใช้คำสั่งดังนี้
% su
Password:
# perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.52)
ReadLine support available (try ``install Bundle::CPAN'')
cpan> install SOAP::Lite

หรือถ้าหากต้องการติดตั้งง่ายๆด้วยคำสั่งเพียงบรรทัดเดียวก็ย่อมทำได้ ดังนี้
% sudo perl -MCPAN -e 'install SOAP::Lite'
คุณอาจจะถูกถามคำถามสัก 2-3 คำถาม ซึ่งก็สามารถตอบได้ง่ายๆโดยเพียงการกดปุ่ม Enter เพื่อตอบคำถามนั้นๆตามค่าเริ่มต้น (default) ที่โปรแกรมกำหนดมาให้เท่านั้น

การติดตั้งภายใต้ระบบ Unix
ถ้า หากการติดตั้ง SOAP::Lite ด้วย CPAN ไม่สำเร็จ มีอีกวิธีหนึ่งคือคุณต้องติดตั้งด้วยตัวคุณเองทีละขั้นตอน แต่ก่อนอื่นคุณต้องดาวน์โหลด SOAP::Lite เวอร์ชันล่าสุดมาจาก SOAPLite.com (http://www.soaplite.com) เสียก่อน จากนั้นก็ unpack ไฟล์ที่ได้มาแล้วทำตามขั้นตอนดังต่อไปนี้
% tar xvzf SOAP-Lite-latest.tar.gz
SOAP-Lite-0.55
SOAP-Lite-0.55/Changes
...
SOAP-Lite-0.55/t/37-mod_xmlrpc.t
SOAP-Lite-0.55/t/TEST.pl
% cd SOAP-Lite-0.55
% perl Makefile.PL
...
% make
mkdir blib
mkdir blib/lib
...
% make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib
-I/System/Library/Perl/darwin -I/System/Library/Perl -e 'use
Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;'
t/01-core.t t/02-payload.t t/03-server.t t/04-attach.t t/05-customxml.t
t/06-modules.t t/07-xmlrpc_payload.t t/08-schema.t t/01-core...........
...
% su
Password:
# make install
Installing /Library/Perl/XMLRPC/Lite.pm
Installing /Library/Perl/XMLRPC/Test.pm
ถ้า หากในระหว่างการติดตั้งอยู่นั้น คุณได้รับข้อความเตือน (warning message) ให้ติดตั้งโปรแกรมที่จำเป็นต้องมีก่อน (prerequisite) จึงจะติดตั้ง SOAP::Lite ได้แล้วล่ะก็ คุณจำเป็นต้องติดตั้งโปรแกรมนั้นๆก่อน แล้วค่อยกลับมาติดตั้ง SOAP::Lite ใหม่อีกที ซึ่งโดยปกติข้อความดังกล่าวมักจะมีลักษณะดังนี้
Checking if your kit is complete...
Looks good
Warning: prerequisite HTTP::Daemon failed to load: Can't locate
HTTP/Daemon.pm in @INC (@INC contains: /System/Library/Perl/darwin
/System/Library/Perl /Library/Perl/darwin /Library/Perl /Library/Perl
/Network/Library/Perl/darwin /Network/Library/Perl
/Network/Library/Perl .) at (eval 8) line 3.
ถ้า หากคุณเป็น User ทั่วไปที่ไม่ใช่ Root แล้วต้องการติดตั้ง SOAP::Lite ด้วยตัวคุณเอง คุณจะต้องติดตั้งสิ่งต่างๆทั้งหมดที่กล่าวมาแล้วลงใน home directory ของคุณเท่านั้น ซึ่งใน ~/lib นับเป็นที่ที่ค่อนข้างเหมาะสมในการติดตั้งสิ่งต่างๆลงไป โดยการใช้คำสั่งดังนี้
% perl Makefile.PL LIB=/home/login/lib
การติดตั้ง SOAP::Lite ในวินโดว์ด้วย PPM
ถ้าหากคุณจะใช้ Perl ภายใต้ระบบปฏิบัติการวินโดว์ ก็นับเป็นโอกาสอันดีของ ActivePerl ซึ่งเป็นดิสทริบิวชันจากบริษัท ActiveState (http://www.activestate.com/Products/ActivePerl) ที่จะได้รับใช้คุณ และคงต้องขอขอบคุณ ActivePerl สำหรับโมดูลการติดตั้งที่ทำหน้าที่คล้ายกับ CPAN ซึ่งนั่นก็คือ Programmer’s Package Manager (PPM, http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/) ซึ่งจะทำการติดตั้งโมดูลต่างๆจาก ActiveState ลงสู่วินโดว์ด้วยความง่ายดาย โดยคุณแทบจะไม่ต้องสั่งคำสั่งใดๆเพิ่มเติมเลย
ขั้นตอนก็เพียงเรียก PPM จาก command line ในดอสแล้วติดตั้ง SOAP::Lite ด้วยคำสั่งนี้
C:\>ppm
PPM interactive shell (2.1.6) - type 'help' for available commands.
PPM> install SOAP::Lite
ถ้าหากคุณดาวน์โหลด ActivePerl เวอร์ชันใหม่ๆมา คุณอาจจะได้รับข้อความแจ้งว่า SOAP::Lite ได้ถูกติดตั้งอยู่แล้ว
C:\>ppm
PPM interactive shell (2.1.6) - type 'help' for available commands.
PPM> install SOAP::Lite
Version 0.55 of 'SOAP-Lite' is already installed.
ทางเลือกอื่นๆนอกจาก SOAP::Lite
บาง ครั้ง ISP ของคุณอาจจะไม่ได้มองว่า SOAP::Lite มีความสำคัญพอที่จะให้การสนับสนุน ซึ่งถ้าเป็นดังนั้น การติดตั้งของคุณอาจจะทำให้คุณเสียเวลาเปล่าก็ได้
ใน ขณะที่ SOAP::Lite เป็นโมดูลที่ค่อนข้างลงตัวสำหรับการติดต่อกับ Google Web API รวมถึง Web Service โดยทั่วไปด้วย แต่ก็เป็นการยากที่จะยอมให้ผู้ใช้งานที่ไม่สามารถใช้ SOAP::Lite อันเนื่องมาจาก ISP ที่ใช้อยู่ไม่สนับสนุน พลาดโอกาสใช้งานจากประโยชน์อันมากมายของหนังสือเล่มนี้
ไม่ ต้องเป็นห่วง! เรายังมีทางเลือกอยู่ โดยการใช้ PoXML [Hack #53] ซึ่งเป็นเพิร์ลโมดูลขนาดเล็กๆของเราเอง ซึ่งจะทำงานร่วมกับ SOAP ของ Google ในแบบ Plain Old XML ด้วยการใช้ LWP::UserAgent เพื่อสร้าง HTTP request และใช้ XML::Simple สำหรับประมวลผล XML response
นอก จาก PoXML แล้วยังมี NoXML [Hack #54] ซึ่งไม่ต้องการแม้กระทั่งตัวประมวลผล XML (XML parser) ใดๆเลย แต่จะทำงานทุกอย่างด้วย Regular Expression จากนั้นก็มี XooMLe [Hack #36] ซึ่งเป็น third-party service มาเป็นตัวกลางในการติดต่อกับ Google Web API อีกทีหนึ่ง ซึ่งการใช้งานทั้ง PoXML และ NoXML แทน SOAP::Lite นั้น ไม่ได้ยุ่งยากไปกว่าการแก้ไขในสคริปต์ที่เดิมใช้กับ SOAP::Lite เพียงแค่ 2 บรรทัดเท่านั้น

โพสต์ยอดนิยมจากบล็อกนี้

ปัญหาและเฉลยธรรม นักธรรมชั้นโท สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันพฤหัสบดี ที่ ๑๖ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวินัยบัญญัติ นักธรรมชั้นเอก สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันเสาร์ ที่ ๑๘ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นโท สอบในสนามหลวง วันเสาร์ ที่ ๑๙ พฤศจิกายน พ.ศ. ๒๕๔๘