Penglibatan C++ dalam Pembangunan Web
Oleh Hazman Halid, Consultant C++ Developer,
Ford Motor Company, Dearborn, MI 48126, USA

Bila kita bercakap tentang pembangunan web, kerapkali teknologi/bahasa yang 
keluar merupakan ASP, PHP, Java dan bahasa-bahasa yang sudah diketahui umum 
sebagai 'bahasa internet'. Di sini saya akan menceritakan tentang peranan 
yang boleh dimainkan oleh bahasa C++ dalam pembangunan web.

Bahasa C++ selalunya diklasifikasikan sebagai 'bahasa sistem' yang digunakan 
untuk menghasilkan perisian-perisian dalaman -- seperti device drivers, 
system services, batch processor dan aplikasi-aplikasi desktop 
bukan-internet. Persepsi ini timbul kerana bahasa C++ telah dicipta jauh 
sebelum bahasa-bahasa internet ini menjadi ikutan, dan memang benar bahawa 
kebanyakan penggunaan C++ masih terhad kepada skop-skop di atas.

Namun akhir-akhir ini, bahasa C++ sudah mula mendapat tempat di alam 
internet. Bahasa C++ lebih sukar dipelajari dari bahasa-bahasa peringkat 
tinggi seperti VBScript, tetapi terdapat aplikasi-aplikasi yang advanced di 
mana penggunaan C++ bukan sahaja mendatangkan manfaat, malah ada kalanya 
diperlukan.

Satu kelebihan program yang dihasilkan melalui C++ yang ketara ialah 
kelajuannya dan kemampatannya (saiz footprint yang lebih kecil berbanding 
bahasa-bahasa lain). Tetapi kekuatan utamanya ialah kuasa yang diberi oleh 
C++ terhadap program tersebut. Program-program C++ mampu menggunakan 
struktur data yang kompleks, lalu dapat mewakili keadaan dunia sebenar 
dengan lebih tepat dan efisien.

C++ boleh digunakan dalam 3 senario dalam pembangunan web.

1. CGI.

Dalam senario ini, program C++ ditulis untuk menjanakan dan mengoutputkan 
keseluruhan laman HTML melalui saluran output yang normal. Inputnya 
(maklumat yang dihantar melalui HTML form), boleh datang sama ada melalui 
saluran input normal atau melalui environment variables, bergantung kepada 
cara form tersebut dihantar (Cara POST atau cara GET).

Program C++ yang ditulis kelihatan sama saja seperti program C++ biasa, dan 
yang membezakannya hanyalah format output yang dikeluarkan (ia menjanakan 
output dalam bahasa HTML) dan cara input difahami (input yang diterima 
adalah dalam bentuk pasangan-pasangan variable dan nilai). Program C++ 
tersebut perlu tahu mengasingkan pasangan-pasangan variable/nilai tersebut 
dari ayat yang diterima sebagai input.

Gateway CGI bertanggungjawab untuk menterjemahkan input yang datang dari web 
server kepada program C++ tersebut, dan begitu juga sebaliknya. Di sini, CGI 
mengaut output yang keluar dari "saluran normal" tersebut lalu menghantarnya 
ke web server. Begitu juga, input yang diterima dari web server dimasukkan 
oleh CGI ke dalam input normal program C++ tersebut atau ke dalam 
environment variable. CGI menjadi penterjemah antara web server dengan C++.

Setiap kali program C++ ini dipanggil oleh browser, satu salinan program ini 
akan dilarikan dalam ruangan memorynya sendiri. Dalam suasana di mana 
terdapat banyak pengunjung serentak, keadaan ini boleh menyebabkan web 
server crash kerana setiap pengunjung mengakibatkan penggunaan memory yang 
tinggi. ISAPI Extension (akan saya bincangkan nanti) membetulkan keadaan 
ini. Kita akan lihat perbezaannya kelak.

2. ISAPI Extension.

Yang ini juga dikenali sebagai ISAPI DLL. Tapi untuk ringkaskan, saya 
panggil IE saja. IE merupakan jawapan Microsoft untuk menangani 
kelemahan-kelemahan CGI seperti yang saya sudah ceritakan di atas.

IE hanya boleh digunakan bila web server tersebut menggunakan Microsoft IIS. 
Dari segi prestasi, perbezaan yang paling ketara ialah apa yang berlaku 
ketika seorang pengunjung memanggil sesuatu IE.

Seperti yang saya ceritakan, dalam CGI, satu proses baru akan dicipta dan 
proses ini akan diber keseluruhan sumber yang diperlukan oleh satu proses 
baru. Bukan saja terdapat kerja ke atas CPU untuk melancarkan proses baru 
ini, tetapi banyak memory akan dibazirkan.

Dalam IE, sebuah proses baru hanya dicipta buat kali pertama sesuatu IE 
dipanggil. Bila IE yang sama dipanggil berkali-kali oleh 
pengunjung-pengunjung, IIS tidak mencita sebuah proses baru untuk setiap 
panggilan. Sebaliknya, IIS mengguna-kembali proses yang telah diciptanya 
awal tadi. Yang dicipta hanyalah sebuah thread kecil untuk membolehkan IE 
tersebut memproses permintaan pengunjung serentak dengan 
permintaan-permintaan lain.

Dengan strategi begini, penggunaan CPU dan memory hanya tinggi pada 
panggilan pertama, tetapi panggilan-panggilan seterusnya akan 
mengguna-kembali sebanyak mungkin sumber yang telah diperuntukkan ini.

Sepertimana CGI, sebuah program IE juga perlu menjanakan keseluruhan laman 
HTML. Bahawa IE menjanakan keseluruhan laman ini ada baik dan buruknya. Dari 
segi keburukan, adalah sukar untuk melakukan perubahan kepada layout laman 
ini kerana kod HTMLnya bercampur-aduk dengan kod C++. Ini juga menghalang 
kita dari menggunakan peralatan-peralatan WYSIWYG seperti FrontPage atau 
InterDev.

Untuk mengatasi kekurangan ini, kita boleh gunakan komponen-komponen COM, 
dan sebentar lagi kita akan belajar tentangnya.

3. Komponen COM

Setakat ini kita telah lihat CGI dan ISAPI Extension, di mana kita perlu 
menjanakan kod untuk keseluruhan laman web dalam satu program. Akibat dari 
kengkangan ini, kerapkali bahagian visual laman tersebut sukar untuk 
dikemaskini. Dan jika boleh dikemaskini sekalipun, ia akan mengakibatkan 
program CGI atau ISAPI Extension tersebut perlu dikompil dan di install 
semula.

Untuk mengatasi masalah ini, kita gunakan komponen COM. Di antara 
ketiga-tiga cara yang telah saya bincangkan, membuat komponen COM merupakan 
tugas yang paling mencabar kerana ia memerlukan latarbelakang yang kukuh 
bukan sahaja dari segi C++ dan pemprograman berorientasikan objek (OOP), 
tetapi juga perlu mengetahui arkitektur Component Object Model yang 
merupakan extension kepada OOP.

Namun, setelah mengharungi cabaran-cabaran tersebut, kita dapat menggunakan 
satu hasil teknologi yang dapat menolong meringkaskan kerja serta melakukan 
kerja-kerja pemprosesan yang rumit.

Bila kita mencipta komponen, komponen yang kita cipta itu hanya 
bertanggung-jawab ke atas satu bidang kecil di dalam laman web kita. 
Ertinya, kita boleh mencipta komponen-komponen yang melakukan tugas-tugas 
khas, dan hanya mengoutputkan hasil dari tugas individu mereka ke laman web. 
Selebihnya, laman web tersebut boleh diprogramkan menggunakan ASP -- iaitu 
satu arkitektur yang jauh lebih mudah digunakan daripada C++.

Menggunakan komponen, laman web kita kini terbahagi kepada dua. Pertamanya, 
kod untuk menghasilkan laman web itu secara am -- menggunakan ASP -- dan 
keduanya, kod khas untuk mengeluarkan hasil pemprosesan yang khusus, 
dihasilkan oleh komponen.

Adanya sempadan ini menyenangkan kerja-kerja mengemaskini. Sekiranya 
bahagian yang perlu dikemaskini tiada kena-mengena dengan komponen tersebut, 
maka komponen tersebut tidak perlu disentuh, dikompil dan diinstall semula. 
Hanya kod ASP yang berkaitan saja yang perlu dirombak.

Adanya sempadan ini juga membolehkan sesuatu laman web dihasilkan secara 
bersepadu oleh sepasukan programmer. Programmer-programmer ASP 
bertanggungjawab untuk menghasilkan layout yang menarik misalnya, dan 
programmer-programmer C++ bertanggungjawab melakukan pemprosesan di belakang 
tabir. Dengan ini, setiap programmer dapat menumpukan perhatian terhadap 
satu bidang tugas yang kecil dan khas.


4. ActiveX Control

Kesemua penggunaan yang telah kita lihat sebelum ini merupakan pemprosesan 
di sebelah server. Saya terlupa untuk mention bahawa C++ juga boleh 
menghasilkan komponen-komponen yang memproses di sebelah client.

Sekiranya antaramuka yang dibekalkan oleh JavaScript, VBScript dan HTML 
tidak memadai untuk aplikasi kita, maka kita boleh mencipta antaramuka yang 
lebih canggih dan interaktif menggunakan teknologi ActiveX.

ActiveX Control merupakan sejenis komponen COM yang ditulis berlandaskan 
satu piawaian tertentu supaya dapat bekerjasama dengan aspek-aspek GUI 
(graphical user interface) yang terdapat dalam sistem operasi Windows.

Komponen ActiveX Control ini di install secara automatik ke dalam komputer 
pengunjung bilamana laman web yang mengandungi Control ini dilawati. Caranya 
hampir menyerupai Java Applet yang terdapat di merata-rata.

Tetapi berlainan dengan Java Applet, ActiveX Control tidak ditulis dalam 
bahasa Java, sebaliknya diprogramkan menggunakan C++. Sepertimana yang 
mungkin anda ketahui, bahasa Java merupakan satu bahasa cross-platform yang 
mampu menghasilkan program untuk pelbagai sistem operasi tanpa perlu 
dikompil semula.

Bahawa bahasa ini cross-platform mempunyai kelebihan dan kelemahan. Dari 
segi kelebihan, Java Applet boleh mencapai audiens yang lebih besar. Tetapi 
dari segi kelemahan, program-program Java terbatas dari kebolehannya 
mempergunakan facility-facility yang khas dalam satu-satu sistem operasi 
tertentu.

Oleh kerana ActiveX Control bukan cross-platform, malah ditulis khas untuk 
Windows, maka ActiveX Control mampu mempergunakan ciri-ciri GUI yang hanya 
terdapat dalam Windows dan memberikan "look and feel" yang setara dengan 
aplikasi desktop biasa. ActiveX Control juga boleh digunakan untuk melakukan 
tugas-tugas sistem seperti membersihkan harddisk dan membuang virus.

Sebagai rumusannya, bahasa C++ mempunyai masa hadapan yang cerah di dalam 
dunia internet. Meskipun tahap teknologi perisian di Malaysia masih 
membangun, dan belum memerlukan aplikasi-aplikasi C++ seperti yang saya 
ceritakan, tetapi saya percaya bahawa semakin Malaysia menghampiri kemajuan 
teknologi, keperluan terhadap C++ juga akan semakin dirasai.

    Source: geocities.com/tukangtaip