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 บรรทัดเท่านั้น

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

I miss you all กับ I miss all of you ต่างกันอย่างไร

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นตรี สอบในสนามหลวง วันอังคาร ที่ ๒๙ กันยายน พ.ศ.๒๕๕๒

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