Perbezaan Antara CGI dan Servlet Perbezaan Antara
CGI (Common Gateway Interface) adalah percubaan pertama dalam menyediakan pengguna dengan kandungan dinamik. Ia membolehkan pengguna menjalankan program yang berada di pelayan untuk memproses data dan juga mengakses pangkalan data untuk menghasilkan kandungan yang relevan. Memandangkan ini adalah program, ia ditulis dalam sistem operasi asli dan kemudian disimpan dalam direktori tertentu. Servlet adalah pelaksanaan Java yang bertujuan untuk menyediakan perkhidmatan yang sama seperti CGI, tetapi bukannya program yang dikompilasi dalam sistem operasi asli, ia dikompil ke Java bytecode yang kemudian dijalankan di mesin virtual Java. Walaupun program Java boleh disusun ke dalam kod asal, mereka masih lebih suka menyusunnya dengan bytecode Java.
Kelebihan pertama servlet atas CGI berada dalam kemerdekaan platformnya. Servlet boleh dijalankan di mana-mana sistem operasi selagi JVM dipasang, yang bermaksud bahawa anda tidak akan mengalami sebarang masalah walaupun anda memilih untuk menukar sistem operasi. Dengan CGI, menukar sistem operasi adalah proses yang sukar dan susah payah kerana anda perlu menyusun semula program dalam sistem operasi baru.
Oleh kerana anda menjalankan program bebas di CGI, mereka membuat proses mereka sendiri apabila mereka dilaksanakan, sesuatu yang tidak berlaku dengan servlet kerana mereka hanya berkongsi ruang memori JVM. Ini boleh membawa kepada masalah yang berkaitan dengan overhead, terutamanya apabila anda meningkatkan jumlah pengguna secara eksponen. Ia juga menimbulkan isu-isu kelemahan kerana program ini tidak terkawal dalam apa cara sekalipun dijalankan pada pelayan.
Kemudian, kaedah yang lebih biasa apabila menggunakan CGI adalah melalui skrip. Ini mengurangkan masa yang diperlukan dalam mewujudkan program dan pada umumnya lebih selamat. Dengan CGI, anda boleh menjalankan skrip dengan serta-merta, semasa servlet, anda perlu menterjemahkan skrip ke Java dan menyusunnya menjadi servlet yang menambah sedikit masa loading.
Ringkasan:
1. CGI biasanya boleh laksana yang berasal dari sistem operasi pelayan, walaupun servlet juga boleh dikompilasi kepada OS asli yang dapat dikompilasi oleh Java bytecode yang kemudian dijalankan pada JVM
2. Program CGI bergantung kepada platform manakala servlet adalah platform bebas
3. Program CGI dijalankan sebagai proses berasingan pada komputer manakala servlet berjalan pada JVM
4. CGI boleh menjadi lebih terdedah kepada serangan daripada servlet
5. CGI boleh memproses skrip secara langsung semasa perlu diterjemahkan dan dikompilasi sebelum dapat dijalankan sebagai servlet