Perbezaan antara CGI dan Servlet

CGI vs Servlet

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 berkaitan. Memandangkan ini adalah program, ia ditulis dalam sistem operasi asli dan kemudian disimpan dalam direktori tertentu. Servlet adalah pelaksanaan Java yang bertujuan menyediakan perkhidmatan yang sama seperti CGI, tetapi bukannya program yang dikompilasi dalam sistem operasi asli, ia dikompilasi dengan Java bytecode yang kemudian dijalankan di mesin virtual Java. Walaupun program Java boleh disusun ke dalam kod asal, mereka masih lebih suka menyusun dalam bytecode Java.

Keuntungan pertama servlet atas CGI berada dalam kemerdekaan platformnya. Servlet boleh berjalan 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 di ruang memori JVM. Ini boleh membawa kepada masalah yang berkaitan dengan overhead, terutamanya apabila anda meningkatkan bilangan pengguna secara eksponen. Ia juga mewujudkan 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 dieksekusi yang berasal dari sistem operasi pelayan, walaupun servlet juga dapat dikompilasi ke OS asli yang dapat dikompilasi dengan Java bytecode yang kemudian dijalankan pada JVM
2. Program CGI bergantung pada platform manakala servlet adalah platform yang bebas
3. Program CGI dijalankan sebagai proses yang 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 ketika perlu diterjemahkan dan dikompilasi sebelum dapat dijalankan sebagai servlet