BAB II KAJIAN PUSTAKA Bab ini berisi penjelasan tentang kajian berbagai pustaka yang digunakan dalam penyusunan Tugas Akhir ini. Kajian pustaka akan dilakukan terhadap beberapa literatur tentang Extensible Markup Language (XML), web service, PHP, dan CMS. XML dibahas karena merupakan dasar dari protokol web service yang digunakan dalam Tugas Akhir. Pembahasan web service meliputi definisi, arsitektur, dan komponen-komponen web service. PHP dibahas karena dalam Tugas Akhir ini aplikasi akan dikembangkan dalam bahasa tersebut. Pembahasan tentang PHP akan difokuskan pada implementasi web service pada bahasa tersebut. Pembahasan CMS diawali dengan pengertian CMS dan diakhiri dengan fitur CMS.
2.1 XML Dalam subbab ini, akan dibahas teori tentang XML yang menjadi dasar dari salah satu protokol web service yang digunakan pada Tugas Akhir ini yaitu SOAP. Subbab akan diawali dengan penjelasan tentang XML secara umum. Setelah itu, akan dilanjutkan dengan pembahasan tentang skema XML. Terakhir, subbab ini akan berisi pembahasan parser XML.
XML adalah bagian dari Standard Generalized Markup Language (SGML). XML merupakan bagian yang penting bagi pengembang yang ingin membangun web service. XML berbasis pada teks, sehingga bersifat platform independent. Sifat ini membuat pertukaran data antar platform menjadi mungkin.
Sebuah objek data dapat dikatakan sebagai dokumen XML jika memenuhi kriteria wellformed. Adapun kriteria well-formed adalah sebagai berikut [JOR02]: 1. Satu dan hanya satu root element yang ada dalam satu dokumen. 2. Setiap elemen harus memiliki start-tag dan end-tag. 3. Setiap elemen harus properly nested. 4. Karakter pertama dari nama atribut harus berupa huruf alfabet atau underscore. 5. Suatu nama atribut hanya boleh muncul satu kali pada start-tag yang sama.
Selain itu, nama elemen adalah case-sensitive, yaitu huruf kapital dibedakan dengan huruf kecil. Jadi, elemen dengan nama Book dianggap berbeda dengan elemen book. Karena itu, jika start-tag
ditutup dengan end-tag akan menyebabkan kesalahan pada saat validasi.
II-1
II-2 2.1.1 Skema XML Skema diperlukan untuk menjelaskan struktur dokumen XML beserta informasi tipenya. Terdapat dua teknologi dominan yang dapat digunakan untuk mendefinisikan skema XML, yaitu Document Type Definition (DTD) dan XML Schema [SOR02]. DTD dapat digunakan untuk mendefinisikan struktur sebuah dokumen XML. DTD tidak berbasis pada XML sehingga DTD tidak dapat diurai dengan memakai parser XML dan tidak dapat dengan mudah ditanamkan ke dalam dokumen XML yang lain. Hal inilah yang menjadi alasan mengapa DTD tidak dipakai dalam web service. Kelemahan lain dari DTD adalah tidak dapat mengekspresikan tipe data yang dimuatnya. Cara lain yang dapat dilakukan untuk mengekspresikan skema bagi web service berbasis XML adalah dengan menggunakan XML Schema. XML Schema tidak hanya menyediakan kemampuan untuk mendefinisikan struktur dokumen XML, tetapi juga menyediakan kemampuan untuk mendefinisikan tipe data beserta batasan-batasan yang terdapat di dalamnya. Contoh XML Schema dapat dilihat pada Gambar II-1. <schema xmlns=’http://www.w3.org/2001/XMLSchema’> <element name=’Amount’/> Gambar II-1 Contoh XML Schema [SOR02]
Dari Gambar II-1 dapat dilihat bahwa XML Schema sebenarnya juga merupakan dokumen XML. Hal ini memungkinkan XML Schema untuk dipakai oleh semua parser XML. Bahasa XML Schema disebut dengan XML Schema Definition (XSD). Berikut adalah hal-hal yang dapat dilakukan oleh XML Schema [SIS04]: -
Mendefinisikan elemen yang dapat muncul di dokumen.
-
Mendefinisikan atribut yang dapat muncul di dokumen.
-
Mendefinisikan elemen mana yang merupakan anak elemen
-
Mendefinisikan urutan dari anak elemen
-
Mendefinisikan jumlah anak elemen.
-
Mendefinisikan apakah sebuah elemen dapat berisi teks atau kosong
-
Mendefinisikan tipe data dari elemen maupun atribut
-
Mendefinisikan nilai default dan nilai tetap untuk elemen dan atribut
Dokumen skema dapat berisi definisi-definisi elemen, atribut, dan tipe. Definisi-definisi ini dapat dicakup dalam sebuah namespace khusus dengan mengatur atribut targetNameSpace yang terdapat dalam elemen schema. Skema tersebut kemudian dapat dirujuk oleh dokumen
II-3 instance. Cara yang dapat dilakukan untuk melakukan hal ini adalah dengan menggunakan atribut xmlns pada sebuah elemen di dokumen instance.
XML Schema menyediakan sebuah sistem tipe standar. Sistem tipe dipakai untuk mendefinisikan sebuah cara yang bersifat platform-independent untuk menerangkan tipe data yang dapat dimuat dalam sebuah elemen atau atribut. Sistem tipe juga menyediakan seperangkat tipe built-in, seperti int, string, dan float. Selain itu, sistem tipe juga dapat diperluas untuk mendefinisikan tipe-tipe sederhana dan tipe-tipe kompleks baru.
2.1.2 Parser XML Sebelum dilewatkan ke aplikasi lain atau dilakukan pengecekan validitas, nilai suatu atribut yang ada dalam dokumen XML perlu untuk dinormalisasi terlebih dahulu [XML00]. Oleh karena itu, dibutuhkanlah sebuah parser XML yang akan menangani acuan-acuan dan karakter-karakter yang ada dalam dokumen, seperti acuan karakter, acuan entitas, white space character, dan karakter-karakter yang lain.
Secara umum, terdapat dua tipe parser XML, yaitu: non-validating dan validating [XML00]. Parser XML yang bertipe non-validating hanya menangani objek data yang memenuhi kriteria well-formed. Sementara itu, parser XML yang bertipe validating menggunakan DTD untuk menentukan validitas dari dokumen well-formed.
Parser XML dapat diimplementasikan dengan dua pendekatan, yaitu: 1. Event-driven Parser Dalam pendekatan ini, parser akan mengirimkan event, seperti elemen awal atau akhir, ke event handler yang memproses informasi. Penanganan data XML akan diserahkan kepada aplikasi, sehingga parser XML tidak akan mengurusi struktur pohon atau data apapun yang telah diurai. Dalam pendekatan ini, aksi penguraian dapat dilakukan tanpa perlu menunggu seluruh dokumen selesai dibaca. Contoh parser yang mengimplementasikan pendekatan ini antara lain adalah Simple API for XML (SAX) dan Expat. 2. Tree-based Parser Dalam pendekatan ini, dokumen direpresentasikan sebagai sebuah pohon. Beberapa algoritma umum digunakan untuk melakukan penelusuran, pencarian, atau modifikasi terhadap pohon. Objek pemrograman yang membangun dokumen XML dikenal sebagai simpul. Dalam pendekatan ini, aksi pemanipulasian hanya dapat dilakukan bila pohon dokumen telah selesai dibangun di dalam memori. Parser yang menggunakan pendekatan ini umumnya sesuai dengan standar Document Object
II-4 Model yang dikeluarkan oleh W3C. Parser ini membutuhkan virtual memory yang besar karena struktur pohon harus dibangun di dalam memori sebelum dokumen bisa dimanipulasi. Contoh parser yang berbasis pohon ini adalah Microsoft’s XML parser (MSXML).
2.2 Web Service Subbab ini berisi pembahasan web service secara umum, yang meliputi: definisi, arsitektur, SOAP, WSDL, dan UDDI.
2.2.1 Pengertian Web Service Berikut adalah beberapa definisi tentang web service: 1. Web service adalah sebuah antarmuka yang mendeskripsikan sekumpulan operasi yang dapat diakses dalam sebuah jaringan melalui pesan XML yang telah distandarkan [KRE01]. 2. Web service adalah sebuah sistem perangkat lunak yang dirancang untuk mendukung inter operasi mesin ke mesin di sebuah jaringan [WSA04]. 3. Web service merupakan komponen perangkat lunak yang loosely coupled, dapat digunaulang, membungkus fungsionalitas diskret, didistribusikan, dan dapat diakses secara programatik melalui protokol internet standar [THE01].
Dari beberapa definisi di atas, dapat ditarik kesimpulan bahwa pada dasarnya web service merupakan middleware internet yang memungkinkan berbagai sistem untuk saling berkomunikasi tanpa terpengaruh pada perbedaan platform. Web service membungkus operasi-operasi ke dalam sebuah antarmuka yang ditulis dalam notasi XML. Antarmuka ini menyembunyikan detil implementasi dari layanan. Pertukaran informasi yang terjadi dalam suatu web service juga menggunakan pesan dalam format XML. Hal ini membuat aplikasi berbasis web service menjadi bersifat loosely coupled dan component-oriented. Loosely coupled memiliki arti bahwa perubahan desain dan implementasi yang terjadi pada sebuah sistem tidak akan mempengaruhi sistem lain yang terhubung dengannya. Sementara itu, component-oriented menawarkan konsep guna ulang, sehingga memungkinkan pengembang untuk membangun sebuah aplikasi tanpa harus menuliskan program dari awal.
2.2.2 Model Web Service Web service dibangun dari tiga komponen utama, yaitu service provider, service registry, dan service requestor [KRE01]. Komponen-komponen tersebut saling berinteraksi melalui artifak web service, yang berupa deskripsi dan implementasi layanan. Terdapat tiga macam operasi
II-5 yang memungkinkan komponen-komponen tersebut untuk dapat saling berinteraksi, yaitu publish, find, dan bind.
Dalam skenario yang umum, service provider akan menempatkan sebuah modul perangkat lunak yang dapat diakses dalam sebuah jaringan, kemudian mendeskripsikan antarmuka yang sesuai dengan layanan tersebut dan mempublikasikannya secara langsung ke service requestor atau melalui service registry. Pihak yang hendak mengonsumsi web service akan menjalankan operasi find untuk menemukan deskripsi layanan yang diinginkan. Setelah ditemukan, service requestor akan menggunakan deskripsi layanan tersebut untuk mengikatkan diri ke service provider dan berinteraksi dengan implementasi dari web service. Keterkaitan antara peran, operasi, dan artifak web service dapat dilihat pada Gambar II-2.
Gambar II-2 Komponen, Operasi, dan Artifak Web Service [KRE01]
Seperti terlihat pada Gambar II-2, komponen yang terdapat dalam web service yaitu [KRE01]: 1. Service provider Dari sudut pandang bisnis, komponen ini adalah pihak yang memiliki layanan. Dari sudut pandang arsitektural, komponen ini adalah platform yang menyediakan akses layanan. 2. Service requestor Dari sudut pandang bisnis, komponen ini adalah pihak yang membutuhkan fungsifungsi tertentu untuk dipenuhi. Dari sudut pandang arsitektural, komponen ini adalah aplikasi yang mencari dan berinteraksi dengan layanan. 3. Service registry Komponen ini merupakan tempat dimana service provider mendaftarkan layanan dan tempat dimana service requestor mencari dan mendapatkan informasi layanan yang dibutuhkan.
II-6 Sementara operasi-operasi yang terdapat dalam arsitektur web service adalah [KRE01]: 1. Publish Operasi ini dilakukan oleh service provider untuk mempublikasikan service description yang akan ditemukan dan diakses oleh service requestor. 2. Find Operasi ini merupakan operasi yang dilakukan oleh service requestor untuk mendapatkan service description yang diinginkan. Terdapat dua alternatif yang dapat dilakukan oleh service requestor, yaitu mengambil service description secara langsung ke service provider atau dengan melakukan query ke service registry. 3. Bind Operasi ini merupakan operasi yang dilakukan oleh service requestor untuk menginisiasi interaksi dengan layanan pada saat waktu eksekusi.
Sedangkan artifak-artifak dari sebuah web service yaitu [KRE01]: 1. Service Service merupakan sebuah modul perangkat lunak yang disediakan oleh service provider dan dapat diakses oleh sistem lain dalam sebuah jaringan. Selain itu, service dapat pula berperan sebagai service requestor, dimana dalam implementasinya, service akan menggunakan web service yang lain. 2. Service description Service description berisi penjelasan mengenai antarmuka dan implementasi dari service. Hal-hal yang dicakup dalam service description antara lain adalah tipe data yang digunakan dalam service, operasi-operasi yang terdapat didalam service, dan lokasi jaringan tempat service diimplementasikan.
2.2.3 Arsitektur Web Service Agar model web service dapat berjalan dengan baik, diperlukanlah sebuah arsitektur yang memenuhi standar di setiap level [KRE01]. Lapisan Gambar II-3 menunjukkan konsep arsitektur web service.
Lapisan dasar arsitektur web service adalah jaringan. Web service harus dapat diakses oleh service requestor dalam sebuah jaringan. HTTP merupakan protokol jaringan standar untuk web service yang disebarkan di internet. Meskipun demikian, web service juga mendukung protokol jaringan yang lain, seperti SMTP, Message Queuing (MQ), FTP, dan lain-lain.
II-7
Gambar II-3 Konsep Arsitektur Web Service [KRE01]
Lapisan yang terletak di atas jaringan adalah XML-based messaging. Lapisan ini merepresentasikan penggunaan XML sebagai dasar protokol pertukaran pesan. Salah satu teknologi standar yang mengaplikasikan lapisan ini adalah SOAP. Penjelasan tentang SOAP dapat dilihat pada subbab 2.2.4.
Lapisan service description merupakan kumpulan dokumen yang digunakan untuk mendeskripsikan layanan. WSDL merupakan standar de facto yang digunakan untuk mendeskripsikan layanan berbasis XML. Penjelasan tentang WSDL dapat dilihat pada subbab 2.2.5.
Dokumen WSDL dapat dilengkapi dengan dokumen deskripsi layanan yang lain. Dokumen deskripsi layanan selain WSDL biasanya digunakan untuk mendeskripsikan aspek web service yang tidak tercakup di dalam WSDL. Struktur data Universal Description Discovery Integration (UDDI) merupakan salah satu contoh dokumen yang digunakan untuk mendeskripsikan aspek bisnis dari web service. Penjelasan tentang UDDI dapat dilihat pada subbab 2.2.6.
Lapisan service publication dan service discovery dapat diimplementasikan dengan berbagai macam alternatif solusi. Service publication merupakan aksi yang dilakukan untuk mempublikasikan dokumen WSDL ke service requestor. Direct publication merupakan salah satu contoh paling sederhana dari lapisan ini. Dalam direct publication, service provider mengirimkan dokumen WSDL secara langsung kepada service requestor. Cara lain yang dapat digunakan untuk menyebarkan dokumen WSDL adalah dengan menggunakan WSDL registry atau UDDI registry. Sedangkan service discovery merupakan mekanisme yang digunakan oleh service requestor untuk mendapatkan service description. Contoh paling
II-8 sederhana dari service discovery adalah pada saat service requestor mendapatkan dokumen WSDL pada file lokal. Cara lain dari service discovery adalah dengan menggunakan WSDL registry maupun UDDI registry.
Lapisan paling atas dari arsitektur web service mendeskripsikan bagaimana komunikasi dan kolaborasi yang dilakukan antar layanan. Web Services Flow Language (WSFL) merupakan dokumen yang digunakan untuk mendeskripsikan interaksi ini. Lapisan jaringan, XML-based messaging, dan service description merupakan lapisan yang paling penting dalam suatu web service. Ketiga lapisan tersebut harus didukung oleh semua pihak yang menyedikan dan menggunakan web service. Arsitektur yang lebih sederhana dari suatu web service terdiri dari HTTP sebagai lapisan jaringan, SOAP sebagai lapisan XMLmessaging, dan WSDL sebagai lapisan service description.
2.2.4 SOAP SOAP (Simple Object Access Protocol) adalah sebuah protokol berbasis XML yang digunakan untuk mempertukarkan informasi dalam lingkungan yang terdesentralisasi dan terdistribusi [SOA00]. Pertukaran pesan tersebut pada umumnya menggunakan protokol HTTP. Inti dari web service adalah SOAP yang menyediakan sebuah cara standar untuk memaketkan pesan. SOAP terdiri dari tiga bagian utama, yaitu: 1. SOAP envelope Merupakan bagian yang mendefinisikan sebuah framework untuk mendeskripsikan apa yang terkandung dalam pesan dan bagaimana memrosesnya. 2. SOAP encoding rules Bagian ini mendefinisikan cara untuk menyerialkan data dalam sebuah pesan SOAP. SOAP encoding mengklarifikasi bagaimana data seharusnya dikodekan dan meliputi item-item yang tidak secara eksplisit tercakup dalam spesifikasi XML. 3. SOAP RPC representation Bagian ini mendefinisikan konvensi yang dapat digunakan untuk merepresentasikan RPC (Remote Procedure Call) dan response-nya.
Pesan SOAP tersusun dari sebuah amplop yang berisi informasi header dan body. Header dari sebuah pesan bersifat opsional. Jika dalam sebuah pesan SOAP terdapat header, header harus dituliskan sebagai elemen anak langsung dari amplop. Header dapat digunakan untuk berbagai keperluan, seperti otentikasi, keamanan, informasi routing, transaksi, dan sebagainya. Sementara itu, pesan SOAP yang sah harus mempunyai satu elemen body. Body berisi muatan pesan. Tidak terdapat batasan tentang bagaimana body dikodekan. Pesan tersebut dapat berupa sebuah string sederhana atau XML. Satu-satunya persyaratan isi pesan
II-9 adalah tidak boleh mempunyai karakter yang dapat membatalkan dokumen XML yang dihasilkan. Jika dalam sebuah pesan SOAP terdapat header, penulisan body dilakukan setelah elemen header. Jika tidak, body dituliskan sebagai elemen anak pertama dari amplop. Contoh dari pesan SOAP dapat dilihat pada Gambar II-4 dan II-5.
Secara umum, pesan-pesan SOAP dapat dikelompokkan ke dalam dua kategori, yaitu pesanpesan yang berorientasi prosedur dan pesan-pesan yang berorientasi dokumen. Pesan-pesan berorientasi prosedur menyediakan komunikasi dua arah dan biasanya disebut sebagai pesanpesan RPC. Body dari pesan RPC berisi informasi mengenai aksi beserta parameter masukan dan keluarannya. Salah satu sasaran dari desain SOAP adalah menyediakan cara standar dan terbuka untuk memfasilitasi RPC menggunakan teknologi internet. Sementara itu, pesanpesan berorientasi dokumen biasanya menyediakan komunikasi searah. Yang termasuk dalam pesan jenis ini antara lain adalah dokumen bisnis.
Gambar II-4 Contoh Pesan SOAP Request
Gambar II-5 Contoh Pesan SOAP Response
Karena berbasis pada XML, SOAP dapat digunakan untuk mempertukarkan data antar sistem walaupun berbeda platform. SOAP juga dapat digunakan untk mengirimkan data yang kompleks, seperti array, objek, dan sebagainya. Selain itu, SOAP juga tidak terikat pada protokol transpor tertentu. Pesan SOAP dapat dikirim lewat sembarang protokol transpor yang mampu mengangkut XML, seperti Hypertext Transport Protocol (HTTP), Simple Mail Transport Protocol (SMTP), maupun protokol yang lain.
II-10 Protocol binding mendefinisikan bagaimana sebuah pesan SOAP dibawa oleh protokol transpor tertentu. Salah satu protocol binding yang ada adalah pengiriman pesan-pesan SOAP melalui HTTP POST. Sebuah permintaan HTTP terdiri dari dua bagian, yaitu header dan body. Header berisi informasi mengenai permintaan dari client. Header HTTP untuk pesan SOAP mirip dengan header pesan HTTP biasa. Perbedaannya terletak pada entri header Content-Type yang selalu diatur ke text/xml. Perbedaan yang lain, setiap permintaan HTTP POST harus berisi entri header SOAPAction. Sementara itu, bagian body dari permintaan HTTP berisi muatan yang dalam hal ini berupa pesan SOAP.
2.2.5 WSDL WSDL (Web Service Definition Language) adalah format XML untuk menjelaskan layanan jaringan sebagai sekumpulan endpoint komunikasi yang dapat mempertukarkan pesan [WSD01]. WSDL termasuk artifak dari suatu web service yang berupa service description. Di dalam WSDL, operasi-operasi dan pesan-pesan yang ada dideskripsikan secara abstrak dan diikat dengan protokol jaringan dan format pesan untuk mendefinisikan endpoint.
Dokumen WSDL menyediakan informasi yang dibutuhkan client untuk berinteraksi dengan web service. Dengan dokumen WSDL, pihak yang membutuhkan layanan dapat memahami apa yang ditawarkan oleh layanan, bagaimana cara berkomunikasi dengannya, dan dimana letak dari layanan. Informasi ini didefinisikan lewat serangkaian elemen-elemen beserta asosiasinya. Akar dari dokumen WSDL adalah elemen definitions. Elemen ini memiliki peran yang sama dengan elemen schema dalam dokumen XML Schema. Sebagaimana XML Schema, dokumen WSDL juga dapat mendefinisikan namespace-nya sendiri dengan menambahkan atribut targetNameSpace.
Di dalam elemen definitions terdapat lima tipe elemen anak, yaitu [SOR02]: 1. Type Berisi definisi elemen pesan yang dapat dikirim dan diterima oleh web service. 2. Message Merupakan sebuah abstraksi dari definisi data yang dipertukarkan antara client dan server. 3. PortType Mendefinisikan serangkaian operasi yang dapat dimunculkan web service. Dokumen WSDL mendefinisikan empat tipe operasi, yaitu:
Permintaan-jawaban Komunikasi bergaya RPC dimana client melakukan permintaan dan server mengirimkan jawaban.
II-11
Satu arah Komunikasi bergaya dokumen dimana client mengirimkan pesan, tapi tidak menerima jawaban dari server.
Solicit-response Server mengirimkan permintaan dan client mengirimkan jawabannya.
Notifikasi Server mengirimkan komunikasi bergaya dokumen ke client.
4. Binding Elemen ini digunakan untuk mengasosiasikan portType dengan protokol tertentu. Hal ini dilakukan lewat elemen perluasan. Elemen perluasan adalah elemen yang didefinisikan diluar namespace WSDL. Spesifikasi WSDL [WSD01] mendefinisikan serangkaian elemen perluasan untuk menyebutkan informasi pengikatan, yaitu: SOAP, HTTP GET/POST, dan MIME. 5. Service Elemen service digunakan untuk mengelompokkan serangkaian port yang terkait. Elemen port sendiri digunakan untuk mendefinisikan alamat web service.
2.2.6 UDDI UDDI (Universal Description Discovery and Integration) menyediakan mekanisme bagi penyedia web service untuk mengiklankan service yang dimiliki, sehingga client dapat menemukan layanan yang ditawarkan. Informasi yang terdapat dalam UDDI adalah sebagai berikut [SYS03]: 1. Business Entity Mengandung informasi mengenai bisnis, seperti nama, deskripsi singkat, dan informasi kontak. 2. Business Service Mengandung deskripsi dari service yang ditawarkan, daftar kategori yang dapat mendeskripsikan service, serta daftar binding templates yang berisi informasi teknis mengenai service tersebut. 3. Binding Templates Menyediakan informasi dimana lokasi service dapat ditemukan dan bagaimana menggunakannya. 4. Service Type Mendefinisikan sebuah konstruksi untuk mendeskripsikan abstrak dari service.
II-12
2.3 Web Service di PHP PHP merupakan salah satu bahasa pembuat halaman web dinamis yang dapat digunakan untuk membangun dan memanfaatkan web service [JOH02]. Terdapat berbagai macam cara untuk mengimplementasikan web service di PHP. Pengembang dapat dengan bebas memilih cara terbaik yang sesuai dengan kebutuhan dan lingkungannya. Beberapa perbedaan terdapat dalam protokol komunikasi dan pemrosesan response.
Web service mendukung tiga protokol untuk berinteraksi dengan client, yaitu dengan HTTPGET, HTTP-POST, dan SOAP. PHP memberikan dukungan untuk mengimplementasikan ketiga protokol ini. Berikut adalah penjelasan tentang ketiga protokol tersebut: 1. HTTP-GET Dengan HTTP-GET, client akan mengirimkan permintaan ke server melalui query string yang terdapat dalam URL. Server yang menerima permintaan tersebut akan memprosesnya untuk kemudian akan mengirimkan response berupa halaman web yang sesuai. Penggunaan HTTP-GET ini memiliki keterbatasan karena client hanya dapat mengirimkan permintaan dalam format name/value. 2. HTTP-POST HTTP-POST hampir sama dengan HTTP-GET, akan tetapi parameternya tidak lagi dimasukkan ke dalam URL. Parameter yang ada dalam HTTP-POST langsung dimasukkan di dalam HTTP request message. Server akan membaca dan memecah request untuk kemudian dapat diketahui parameter yang dikirimkan beserta nilainya. HTTP-POST banyak digunakan dalam form HTML. Sebagaimana yang terdapat dalam HTTP-GET, permintaan yang terdapat dalam HTTP-POST masih terbatas pada format name/value. 3. SOAP Tidak seperti HTTP-GET dan HTTP-POST yang menggunakan HTTP request message, SOAP mengandalkan XML untuk menyebarkan informasi. Meskipun demikian, informasi SOAP juga dapat berjalan melalui HTTP, tetapi tidak terbatas pada model request/response. Implementasi SOAP di PHP dapat dilakukan dengan berbagai cara, antara lain adalah dengan menggunakan SOAP extension.
SOAP extension merupakan usaha pertama yang dilakukan untuk mengimplementasikan protokol SOAP di PHP [STO04]. SOAP extension ditulis dalam bahasa C. Jika dibandingkan dengan implementasi SOAP yang lain, SOAP extension memiliki beberapa kelebihan. Kelebihan yang utama terletak pada unsur kecepatan. Selain itu, SOAP extension juga mengimplementasikan sebagian besar bagian dari SOAP 1.1, SOAP 1.2 dan spesifikasi
II-13 WSDL 1.1. Tujuan utama dari SOAP extension adalah untuk memfasilitasi penggunaan fitur RPC pada protokol SOAP.
Secara umum, ada beberapa tahapan pembangunan web service dengan menggunakan SOAP extension, yaitu: 1.
Menyiapkan komponen yang hendak ditransformasikan menjadi web service.
2.
Menentukan kelas-kelas/method yang menjadi bagian dari web service yang hendak dibangun. Method yang dapat diekspos merupakan method yang bersifat public.
3.
Membuat dokumen WSDL yang mendeskripsikan layanan dalam format yang dapat dimengerti oleh pihak yang akan menggunakan layanan. Dokumen WSDL ini tidak dibangkitkan secara otomatis oleh SOAP extension. Oleh karena itu, pengembang web service harus membuatnya terlebih dahulu.
4.
Membangun server untuk layanan yang hendak dipublikasikan sebagai web service. Dalam membangun server ini, ada beberapa bagian yang harus dilakukan, yaitu: a.
Menciptakan instance untuk server yang akan dibangun. SOAP extension telah menyediakan kelas SoapServer untuk pembentukan instance dari server baru. Contoh kode untuk menuliskan tahap ini di PHP dapat dilihat pada Gambar II-6. $server = new SoapServer("someService.wsdl");
Gambar II-6 Sintaks Penciptaan Instance untuk SOAP Server
b.
Mendaftarkan kelas-kelas/fungsi-fungsi sebagai bagian dari layanan. Aplikasi lain hanya dapat memanggil fungsi-fungsi yang telah diregistrasikan ini. Contoh kode untuk menuliskan tahap ini di PHP dapat dilihat pada Gambar II-7. $server->setClass("someClass");//registrasi kelas $server->addFunction("someFunction");//registrasi fungsi Gambar II-7 Sintaks Registrasi Fungsi ke dalam SOAP Server
c.
Mengatur server agar dapat menangani setiap request yang ditujukan kepadanya. Contoh kode untuk menuliskan tahap ini di PHP dapat dilihat pada Gambar II-8. $server->handle(); Gambar II-8 Sintaks untuk Mengatur Listener
5.
Membangun client untuk layanan yang telah dibangun. Pada pembangun client ini, SOAP extension menyediakan kelas SoapClient untuk menciptakan instance dari client. Contoh kode untuk menuliskan tahap ini di PHP dapat dilihat pada Gambar II-9.
II-14 someFunction("someone")); ?> Gambar II-9 Sintaks untuk Membangun SOAP Client
Selain memiliki beberapa variasi dalam mengimplementasikan protokol komunikasi, PHP juga menyediakan beberapa ekstensi untuk menguraikan response yang muncul dalam format XML. PHP menyediakan beberapa parser XML, baik yang berbasiskan Simple API for XML (SAX) maupun Document Object Model (DOM), antara lain: 1. XML extension Merupakan parser XML standar yang berbasis pada SAX. 2. SimpleXML SimpleXML dikenal sebagai XML parser berbasis DOM yang paling sederhana. 3. DOM DOM disediakan oleh PHP versi 5 dan menawarkan fleksibilitas dalam mem-parsing dan membuat XML. 4. XMLReader XMLReader merupakan parser berbasis SAX yang mengkombinasikan kemudahan penggunaan dengan performansi yang tinggi.
2.4 Content Management System CMS (Content Management System) merupakan suatu perangkat lunak yang digunakan untuk mengelola content [CON07]. Yang dimaksud dengan content adalah semua bentuk informasi digital, yang dapat berupa file gambar, audio, video, teks, dan file komputer lainnya. CMS berbentuk aplikasi berbasis web yang diimplementasikan menggunakan bahasa pemrograman yang memiliki kemampuan pemrograman berbasis web.
Beberapa keuntungan yang diperoleh dari penerapan CMS [ROB03] yaitu: 1. Penciptaan dan pengubahan halaman situs dapat dilakukan secara cepat dan mudah. 2. Memperbaiki navigasi situs. 3. Meningkatkan fleksibilitas situs. 4. Mendukung pembuatan content secara desentralisasi. 5. Mengurangi duplikasi informasi dan meningkatkan konsistensi. 6. Meningkatan keamanan situs. 7. Mengurangi biaya untuk pemeliharaan situs. 8. Mempermudah penggunaan kembali suatu content pada saat diperlukan.
II-15 9. Meningkatkan kinerja dan produktifitas pengelola situs. 10. Memfasilitasi pembuatan aliran kerja dari proses penerbitan content, dan penentuan peran pengelola situs.
2.4.1 Anatomi CMS Fungsionalitas CMS dapat dipecah menjadi kategori utama sebagai berikut [ROB03]: 1.
Penciptaan content Fungsionalitas ini memungkinkan CMS untuk membuat dan menyimpan content sesuai dengan keinginan pengguna. CMS juga harus menyediakan suatu cara yang mudah bagi pengguna dalam melakukan proses penciptaan content tersebut.
2.
Manajemen content Fungsionalitas ini memungkinkan CMS untuk melakukan pengelolaan terhadap content yang telah dibuat dan disimpan. Pengelolaan ini meliputi pengawasan terhadap perubahan content yang dilakukan oleh pengguna, dan penyediaan aliran kerja terhadap proses penerbitan content. Pengawasan yang dilakukan terhadap content yaitu perubahan content harus dapat dirunut waktu dan pengubahnya dan pengguna hanya dapat mengubah content yang sesuai dengan hak dimilikinya.
3.
Penerbitan content Content yang telah dibuat dan disimpan akan diperiksa oleh pengguna CMS untuk kemudian memasuki tahap selanjutnya yaitu penerbitan. Dengan fungsionalitas ini, content dapat ditampilkan dalam halaman situs yang dikelola.
4.
Presentasi content Fungsionalitas ini memungkinkan CMS untuk menyediakan kemudahan bagi pengguna dalam hal tampilan halaman web yang dikelolanya, seperti pembuatan navigasi situs secara otomatis, dan pengubahan tampilan halaman web secara mudah.
Gambar II-10 Anatomi CMS [ROB03]
Keempat fungsionalitas CMS ini dapat digambarkan menjadi sebuah anatomi CMS seperti terlihat pada Gambar II-10. Pada Gambar II–10 terlihat tiga bulatan yang masing-masing melambangkan penciptaan content, manajemen content, dan presentasi. Pada penciptaan
II-16 content, tersedia lingkungan penciptaan content yang dapat digunakan dengan mudah walaupun penggunanya tidak mengetahui hal teknis seperti struktur dokumen HTML. Lingkungan penciptaan ini sebaiknya didesain memiliki antar muka mirip aplikasi word processor agar memudahkan pengguna dalam berinteraksi.
Content yang telah diciptakan disimpan pada penyimpanan yang terpusat. Content yang tersimpan dapat diubah isinya menggunakan lingkungan yang sama dengan penciptaan content. Pada bagian ini juga dilakukan kontrol terhadap akses pengguna terhadap content yang ada, status dari content, dan penerbitan content tersebut.
Presentasi merupakan komponen terakhir pada anatomi CMS, dimana content yang telah disetujui melalui proses penerbitan, sehingga dapat dilihat oleh pengunjung situs. Bagian presentasi mengatur format tampilan content yang dilihat oleh pengunjung. Hal ini menjamin konsistensi tampilan situs, dan memudahkan pengubahan format tampilan sesuai dengan keinginan pemilik situs.
2.4.2 Fitur CMS CMS diciptakan sebagai alat bantu bagi pengelola situs untuk mempermudah pengelolaan situsnya. Bentuk pengelolaan situs yang dilakukan oleh pengguna CMS tergantung pada jenis dan bentuk situs yang berkaitan. Oleh karena itu, setiap situs yang berbeda akan membutuhkan fitur CMS yang berbeda-beda pula. Namun, secara umum fitur-fitur yang mungkin dimiliki oleh sebuah aplikasi CMS diantaranya [CON07]: 1. Dapat memasukkan dan membuat dokumen pendukung content, seperti arsip dokumen dan arsip multimedia. 2. Dapat mengidentifikasi pengguna aplikasi dan menentukan perannya dalam pengelolaan content. 3. Dapat menentukan peran dan tanggung jawab kepada kategori content atau jenis content yang berbeda. 4. Dapat mendefinisikan aliran kerja bagi pemrosesan content. 5. Dapat merunut perubahan yang terjadi pada sebuah content. 6. Dapat menyimpan content ke dalam media penyimpanan, yang mungkin akan dipergunakan oleh sistem yang lain. 7. Dapat memisahkan aspek tekstual dengan aspek presentasi content.