Gallery

Arsitektur MVC

Model-View-Controller (MVC) adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model) dari tampilan (View) cara bagaimana memprosesnya (Controller). Dalam implementasinya kebanyakan framework dalam aplikasi website adalah berbasis arsitektur MVC. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna dan bagian yang menjadi kontrol dalam sebuah aplikasi web. Pola pengembangan aplikasi dengan MVC hanya dapat diterapkan pada bahasa pemrograman yang berbasis objek (OOP), karena MVC sendiri merupakan objek dengan fungsi yang berbeda.

Model-View-Controller pertama kali dipublikasikan oleh peneliti XEROX PARAC yang bekerja dalam pembuatan bahasa pemrograman Smalltalk sekitar tahun 1970-1980.

Arsitektur Model-View-Controller adalah sebuah pola yang terbukti membangun proyek secara lebih efektif. Hal itu dilakukan dengan memilah komponen antara Model, View dan Controller pada bagian – bagian dalam proyek.

Aplikasi apapun, bagian dalam kode yang sering mengalami perubahan adalah bagian user interface. User interface adalah bagian yang paling terlihat oleh user dan bagaimana ia berinteraksi dengan aplikasi, membuatnya menjadi titik fokus pengubahan berdasar kemudahan penggunaan.

Business-logic yang rumit pada user-interface membuat pengubahan pada user interface menjadi lebih kompleks dan mudah terjadi kesalahan. Perubahan pada satu bagian memiliki potensi keterkaitan dengan keseluruhan aplikasi.

Pola MVC menyediakan sebuah solusi terhadap permasalahan tersebut dengan membagi aplikasi menjadi bagian – bagian tersendiri, Model, View dan Controller, memisahkan antar bagian tersebut dan membuat tata interaksi diantaranya.

  1. Model merupakan sesuatu yang merepresentasikan data, misalnya tabel database yang diolah (simpan, ubah, hapus) oleh Controller untuk ditampilkan (View). Model ini mengatur respon terhadap permintaan, serta memberi hak akses untuk memanipulasi data. Framework berbasis MVC menekankan pada pentingnya desain database yang valid, menggunakan Model ini memungkinkan developer melakukan query antar database bila diperintahkan oleh Controller (logic). Beberapa kelebihan menggunakan Model, yaitu dalam proses maintenance aplikasi yang lebih menguntungkan karena detail dari data dan operasinya dapat ditempatkan pada area yang ditentukan oleh Model. Keuntungan lainnya komponen Model dapat digunakan kembali oleh aplikasi lain yang memiliki kegunaan / fungsi yang hampir sama, karena telah dipisahkan secara total antara data dengan interface-nya.
  2. View merupakan informasi yang ditampilkan ke user sebagai media interface (menggunakan HTML, CSS, javasript), jadi tidak berisi proses bisnis yang berhubungan dengan data pada database. Komponen grafis menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi yang ada. Contoh View adalah template dari tampilan aplikasi atau pada website yang kita lihat, sehingga tidak ada layer lain yang berinteraksi dengan user kecuali pada layer View ini. Keuntungan View antara lain, memudahkan desaigner sehingga bisa berkonsentrasi penuh pada desain tanpa harus memperhatikan hal – hal detail lainnya. Dan juga, memungkinkan ketersediaan multiple interface (Swing, Web, Console) dalam aplikasi namun mengeksekusi komponen Model sesuai fungsionalitas yang diharapkan.
  3. Controller akan melakukan segala aktifitas proses bisnis dan aktifitas control lainnya seperti mengolah data dari Model, menyimpannya dalam variabel – variabel (manipulasi data) lalu menampilkannya pada View, benar atau tidaknya hasil olahan data akan sangat tergantung dari logika kerja aplikasi yang tersusun pada bagian Controller ini, sehingga Controller bisa disebut sebagai bagian yang paling signifikan dari aplikasi berbasis MVC. Dalam Controller ini menyediakan detail alur program dan bertanggung jawab menampung events dari user melalui View dan mengupdate komponen Model menggunakan data yang dimasukkan user.

Arsitektur MVC secara sederhana dirancang dan diadaptasi dalam penggunaan Web – Application. Arsitektur yang dihasilkan disebut dengan Model 2 Architecture. Umumnya aplikasi Model 2 Architecture memiliki: Servlet Controller yang menyediakan akses tunggal terhadap keseluruhan aplikasi. Controller ini bertanggungjawab menyediakan manajemen terpusat terhadap alur aplikasi, penanganan security dan user management. Controller Servlet umumnya menggunakan konfigurasi XML untuk menentukan alur aplikasi dan pemrosesan perintah. Hal itu membuat helper components (berfungsi sebagai Command objects) terasosiasikan dengan user actions dan dibuat/dipanggil untuk menangani actions yang terjadi, memanggil komponen Model sebagaimana diperlukan untuk memisahkan antara Controller servlet dari Model.

Jenis MVC pada website :

  1. Server Side MVC, biasa terjadi pada aplikasi web tradisional, yang tidak melibatkan client side seperti Javascript, Jva applet, flash dan lain-lain. Server Side MVC menyerahkan keseluruhan proses bisnis pada server, aplikasi pada sisi pengguna hanya dapat menerima. MVC jenis ini kadang-kadang disebut juga dengan nama thin client.
  2. Mixed Client Side and Server Side MVC, Pada Mixed Client Side and Server Side MVC 1 client tidak menggunakan model sebagai jembatan untuk melakukan komunikasi pada server, dibandingkan dengan Server Side MVC, arsitektur ini memiliki tingkat kompleksitas yang lebih tinggi karena lebih banyak komponen yang terlibat. Untuk selanjutnya arsitektur ini disebut, dengan Mixed MVC 1. Pada Mixed Client Side and Server Side MVC 2, client menggunakan model sebagai jembatan untuk melakukan komunikasi pada server, dibandingkan dengan arsitektur MVC yang lain, arsitektur ini memiliki tingkat kompleksitas yang paling tinggi karena lebih banyak komponen yang terlibat, sehingga membutuhkan sumber daya yang lebih besar pula. Untuk selanjutnya arsitektur ini disebut dengan Mixed MVC 2.
  3. Rich Internet Application MVC, Application MVC Rich Internet Application (RIA) disebut juga dengan nama Fat Client, merupakan aplikasi web yang memiliki kemampuan dan fungsi hampir seperti aplikasi desktop. RIA pada sisi client, memiliki mesin untuk mengambil data yang berada pada server, sehingga pada client terdapat bagian MVC sendiri dan hanya membutuhkan bagian model pada sisi server.

Contoh Framework MVC pada PHP :

  • CakePHP yang bersifat open source ini juga mengadopsi konsep arsitektur MVC(Model View Controller) dan ORM(Object Relational Mapping), yang mendukung JavaScript, AJAX, RSS, Email dan XML yang sudah terintegrasi dalam core library-nya. Aplikasi ini bisa dijalankan di PHP4 maupun PHP5, serta mendukung berbagai database populer seperti MySQL, SQLite, PostSQL, Oracle, MS SQL, dan DB 2. Dengan menggunakan modul tambahan seperti Security, Session, Access Control List (memungkinkan pengaturan user dan hak aksesnya dalam aplikasi yang kita kembangkan dengan sarana yang lebih mudah dipahami), Authentication memungkinkan kita membangun aplikasi dengan cepat dan mudah, serta Scaffolding (fitur yang barangkali jarang dijumpai pada framework lain, fitur ini bisa mengenerate semua yang dibutuhkan untuk membuat aplikasi (create, read, update, delete) secara lengkap). Kekurangannya adalah pada bagian dokumentasi, dokumentasi yang disediakan kurang begitu bagus namun sudah lengkap. Struktur kerja MVC pada CakePHP yaitu, user melakukan request yang ditangani oleh Controller, Controller memiliki banyak metode untuk menangani request tersebut. Controller mengambil data pada database melalui Model, Model tersebut memberikan data yang relevan ke dalam Controller. Controller akan mengolah data dan memberikannya pada View (tampilan yang dipilih). View ini yang akan dilihat oleh browsernya.
  • Zend Framework merupakan pustaka berbasis PHP5 yang menggunakan arsitektur pemrograman ModelViewController (MVC). Zend Framework dikembangkan oleh perorangan dari developer yang berpengalaman dalam menangani aspek – aspek dari OOP yang lebih kompleks, lebih fleksibel untuk masalah hierarki direktori, lebih mudah digunakan dan dikembangkan karena tidak harus dipelajari semua untuk memakai sebagian saja. Fokus dari Zend Framework adalah untuk membangun aplikasi web 2.0 dan untuk memudahkan dalam mengakses API dari berbagai vendor seperti Google, Yahoo!, Flickr dan Amazon. Modul yang digunakan sangat spesifik untuk web 2.0 saja, seperti AJAX, Syndication, Web Services dan Search.
  • Symfony Project merupakan framework yang ditujukan untuk PHP5, serta menganut Model MVC. Dukungan AJAX juga tersedia, dokumentasi cukup baik serta kompatibel terhadap berbagai sistem database. Kekurangan dari Symfony adalah proses instalasi dan konfigurasi yang cukup rumit.
  • Canvas (web framework) merupakan web aplikasi framework yang bersifat open source, dapat dijalankan pada PHP 5, dapat mendukung konsep ORM, serta menganut Model View Controller. Menggunakan MySQL sebagai default database relasionalnya dan Smarty sebagai default template sistemnya, tapi tetap memungkinkan untuk menggunakan database dan template sistem yang lainnya.
  • CodeIgniter juga mendukung PHP4 dan PHP5, mengadopsi arsitektur MVC namun tidak mendukung konsep ORM. Modul siap pakai yang disediakan seperti Session Management, Email Sending, Image Manipulation Library, File Uploading, XML-RPC, Calendaring. Berbeda dengan CakePHP, CodeIgniter ini tersedia dokumentasi yang sangat banyak dan terorganisir dengan baik.
  • Prado merupakan framework yang berbasis komponen dan Event-Driven, dengan konsep yang mirip seperti pemrograman di ASP.Net dan Delphi yang mendukung pemakaian database populer. Komponen di Prado merupakan gabungan dari file spesifikasi dalam format XML, template HTML dan PHP class. Kekurangan dari Prado sendiri, hanya mendukung PHP 5 saja.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s