Jelaskan Pengendali Tampilan Model

13

Pengalaman saya dalam mengembangkan situs web dinamis sebagian besar terbatas pada servlets Java. Saya telah menggunakan Tomcat untuk mengembangkan berbagai servlets Java, dan saya tidak akan ragu untuk mengatakan bahwa saya cukup mahir dengan teknologi ini, serta dengan HTML / CSS / Javascript sisi klien untuk front-end.

Ketika saya berpikir "situs web dinamis", saya pikir: pengguna meminta URL dengan string kueri, server menerima kueri, dan kemudian melanjutkan ke output HTML secara dinamis untuk menanggapi permintaan. Ini sering melibatkan komunikasi dengan database untuk mengambil data yang diminta untuk ditampilkan. Ini pada dasarnya adalah ide di balik doGetmetode Java HttpServlet.

Namun belakangan ini, saya semakin banyak mendengar tentang kerangka kerja yang lebih baru seperti Django dan Ruby on Rails, yang semuanya memanfaatkan arsitektur "Model View Controller". Saya telah membaca berbagai artikel yang menjelaskan tentang MVC, tetapi saya mengalami kesulitan dalam memahami manfaatnya. Saya mengerti bahwa ide umumnya adalah memisahkan logika bisnis dari logika UI, tetapi saya gagal melihat bagaimana ini benar-benar berbeda dari pemrograman web normal. Pemrograman web, pada dasarnya, memaksa Anda untuk memisahkan logika bisnis (pemrograman sisi server) dari pemrograman UI (HTML sisi klien atau Javascript), karena keduanya ada dalam bidang pemrograman yang sepenuhnya berbeda.

Pertanyaan: Apa MVC menawarkan lebih dari sesuatu seperti servlet Java, dan yang lebih penting, apa sebenarnya adalah MVC dan bagaimana cara berbeda dari apa yang biasanya Anda lakukan untuk mengembangkan website dinamis dengan menggunakan pendekatan yang lebih tradisional seperti servlet Java (atau bahkan sesuatu yang lebih tua seperti CGI)? Jika mungkin, ketika menjelaskan MVC, berikan contoh yang menggambarkan bagaimana MVC diterapkan pada proses pengembangan web, dan bagaimana hal itu menguntungkan.

Channel72
sumber

Jawaban:

7

Pertama saya pikir pembicaraan terbaik tentang apa itu Arsitektur MVC dan kemudian melangkah lebih jauh ke cara Anda saat ini pemrograman.

Arsitektur MVC adalah cara untuk mengatur alur kerja di dalam sistem sotfware, menganggapnya sebagai cara berlapis untuk menerapkan perilaku sistem. Lapisan ini adalah:

  1. Model : Merupakan Model Data Anda, yang merupakan inti sistem tempat semua informasi terkait harus dilokalisasi. Jadi misalnya: jika Anda ingin bermain Game, Anda membutuhkan Pemain, Aturan, Rintangan, dan beberapa logika yang berkaitan dengan interaksi elemen-elemen ini seperti: Pemain harus dapat menyortir Rintangan ketika beberapa set Aturan berlaku.

    The Model adalah yang pertama pikir Anda harus berpikir off karena yang akan menjadi pusat aplikasi Anda .

  2. Controller : Di sinilah keajaiban terjadi dan di mana Arsitektur Layered memenuhi Paradigma Berorientasi Objek yang seharusnya digunakan. Di sinilah Anda menerapkan bagaimana sistem bereaksi ketika beberapa pengguna aplikasi meminta sesuatu tentang aplikasi sebelum antarmuka pengguna.

    Pengontrol harus dapat menangani Model Objects, melakukan operasi dengannya untuk mencapai apa yang diminta pengguna dan kemudian mendelegasikan hasilnya ke View Layer yang sesuai untuk membuatnya kembali ke pengguna kami.

  3. Lihat : Ini adalah Titik Awal dan Titik Akhir interaksi Pengguna. Di sinilah Anda menentukan bagaimana pengguna berinteraksi dengan aplikasi. Saat ini sangat umum pengguna mencoba mengakses, misalnya, aplikasi web dari berbagai jenis media seperti: Telepon Seluler, Tabel, PC, Laptop, dll.

    Secara umum setiap techonologie membutuhkan bahasa yang berbeda untuk membuat tampilan, jadi bayangkan bahwa Model Data Anda dan cara model berinteraksi dan bagaimana Anda merender bahwa semua interaksi adalah hardcoded, sama sekali tidak ada cara untuk menggunakan kembali kode Anda dengan cara yang bukan CopyPaste . Hasilnya adalah kode yang berbau dan banyak waktu terbuang untuk mengadaptasi sistem HOLE.

    Keutamaan memiliki Tampilan dalam lapisan terpisah, memungkinkan kita untuk bekerja secara independen dari Model yang sedang kita kerjakan . Kita hanya perlu tahu bagaimana kita harus membuat daftar objek yang dikirimkan controller kepada kita. Bagaimana dia membuatnya itu benar-benar sepele

Jadi, akhirnya kami mendapatkan Model independen yang dapat diadaptasi sesuai keinginan kami (hari ini saya perlu menangani Game Monouser tanpa aturan, besok saya dapat bermain dengan teman dan sekarang Multiuser, dan sebagainya) itu tidak tergantung pada bagaimana kita akan memberikannya kepada pengguna. Kemudian, Pengontrol yang menangkap permintaan pengguna yang berasal dari tampilan, memproses Model Objects, dan kemudian memberikan informasi kembali ke tampilan untuk membuatnya.

Kembali ke pertanyaan pertama yang Anda tanyakan: Seperti yang Anda lihat (saya harap) MVC adalah CARA untuk melakukan sesuatu dan bukan TECHNOLOGIE untuk membuat perangkat lunak. Anda bisa menggunakan java Servlets Anda, dan mengimplementasikan MVC Achitecture di bawahnya.

Berikut ini adalah situs contoh T&J menggunakan Arsitektur MVC untuk menjelaskan sedikit masukkan deskripsi gambar di sini

guiman
sumber
6

Untuk menjawab pertanyaan Anda

What does MVC offer over something like a Java servlet

MVC adalah sebuah pola, bukan teknologi. Jadi polanya dapat diterapkan ketika Anda pemrograman dengan Servlets juga.

Biarkan saya mencoba menjelaskan pola MVC dengan Servlets itu sendiri. Jadi apa yang Anda coba lakukan ketika Anda berbicara tentang penerapan MVC adalah, pisahkan Model (logika bisnis), tampilan (logika presentasi) dan Controller (controller Servlet yang mendelegasikan kontrol ke logika bisnis yang sesuai).

Dalam hal ini, MVC bukan hanya tentang memisahkan bisnis dari lapisan presentasi dan lapisan pengontrol, tetapi lapisan bisnis bahkan tidak tahu bahwa ada pengontrol atau presentasi.

Kerangka kerja utama di Jawa seperti Struts mengikuti pola ini. Saya pikir Anda salah konsep. Anda dapat membaca lebih lanjut di internet.

Vinoth Kumar CM
sumber
2

MVC sangat mudah dipahami, ini hanya pola desain, namun, saya telah melihat bahwa yang paling sulit / diawasi adalah bagian Model.

  • Model : Data Anda (bukan database Anda secara eksklusif!, Model tersebut bahkan dapat berupa file inisial atau xml, atau data dari layanan web). Kelas model melayani tujuan mendefinisikan, menyusun, dan menangani data. Baca artikel bagus yang disebut " M dalam MVC: Mengapa Model Disalahpahami dan Tidak Dihormati ". Model harus diakses hanya oleh pengontrol.
  • Tampilan : Kode GUI (presentasi) Anda. Seharusnya hanya mengakses controller
  • Pengendali : Logika Anda. Menangani komunikasi antara model dan tampilan.
dukeofgaming
sumber
1

Konsep Model-View-Controller bukanlah hal baru. Dimulai dengan Smalltalk sekitar tahun 1979.

Pada intinya, MVC adalah cara untuk mengatur tanggung jawab kode Anda sehingga bersifat modular, dapat diprediksi, dan kuat.

Pemisahan ini memungkinkan Anda kebebasan berikut:

  • Kemampuan untuk mengembangkan model tanpa memengaruhi logika aplikasi atau menampilkan data
  • Kemampuan untuk mengubah logika bisnis tanpa mempengaruhi model (mis. Tambahkan langkah baru, dll.)
  • Kemampuan untuk mewakili model dalam berbagai cara

Dengan hati-hati, Anda berpotensi dapat merancang model dan pengontrol sehingga Anda dapat sepenuhnya mengganti aplikasi desktop dengan aplikasi web sebagai ujung depan.

Baru-baru ini, pendekatan Ruby on Rails ke MVC memperkenalkan beberapa konsep baru yang disalin di hampir semua kerangka kerja aplikasi web gaya MVC. Ini termasuk konsep "Konvensi konfigurasi", memetakan tindakan pengontrol ke metode kelas, dan merutekan permintaan URL ke kode yang mendasarinya.

Berin Loritsch
sumber