Hampir dan seketika setiap kali saya berbicara dengan pengembang tentang Model View Controller ( MVC ) mereka mengatakan Anda membuat permintaan ke url server membangun entitas (MODEL) dan memberi Anda representasi visual dari model itu.
Jadi apakah ini berarti MVC hanya untuk web atau sudahkah saya bertemu orang-orang yang hanya pengembang yang menggunakan MVC untuk menulis aplikasi web?
Apakah ada penggunaan untuk MVC pada aplikasi gaya desktop?
Saya baru mengenal paradigma dan ingin mengetahui super-set untuk MVC
web-development
design-patterns
mvc
Deeptechtons
sumber
sumber
Jawaban:
MVC adalah sebuah pola. Pola berlaku di semua pemrograman. MVC kebetulan bekerja dengan sangat baik dalam konteks web.
Seperti yang ditunjukkan oleh nyamuk, lihatlah pada tag mvc dan Anda akan melihat beberapa contoh penerapannya.
sumber
Mengingat MVC berasal dari tahun 1977, dan web hanya ditemukan pada tahun 1991, seharusnya cukup jelas bahwa MVC tidak hanya untuk web.
sumber
Tidak, pengembangan untuk OS X dan iOS menggunakan pola Model View Controller.
sumber
Ajukan pertanyaan di lingkungan Microsoft dan banyak orang akan menganggap Anda maksud Asp.Net MVC yang merupakan implementasi MVC khusus untuk web.
Sayangnya ada banyak orang yang tidak menyadari bahwa ini adalah implementasi dari pola MVC dan menganggapnya sebagai istilah yang dapat dipertukarkan, yang mengarah pada asumsi "hanya web".
sumber
Setidaknya sejauh yang saya tahu, implementasi pertama MVC adalah di Smalltalk. Itu pasti hadir di Smalltalk-80. Meskipun saya tidak memiliki dokumentasi yang berguna untuk membuktikannya, saya percaya (atau sesuatu yang sangat mirip) sudah ada di Smalltalk selama beberapa tahun saat itu.
Sebagian besar kerangka kerja OO GUI telah menyertakan setidaknya beberapa varian MVC. Namun, saya tidak yakin persis apa arti "superset" dalam kasus ini. Agak sulit untuk mengatakan apakah varian yang diberikan adalah superset, subset, atau peer dari MVC, tetapi saya cenderung menganggap sebagian besar dari mereka sebaya.
Bagaimanapun, banyak (sebagian besar?) Ini telah digunakan untuk pengembangan desktop, bukan pengembangan web. Berkat beberapa paten AT&T lama, sebagian besar sistem windowing membutuhkan program untuk dapat menghasilkan kembali pandangan tentang permintaan. Ini (hampir) memaksa setidaknya beberapa derajat pemisahan antara kode yang mempertahankan keadaan saat ini (model) dan kode yang menampilkan keadaan itu (tampilan). Itu masih menyisakan banyak ruang untuk variasi dalam 1) sejauh mana fungsi pengontrol terisolasi, dan 2) detail yang tepat dari mana harus menggambar garis antara masing-masing bagian utama.
sumber
Tidak, itu berlaku bahkan untuk aplikasi mandiri. Contoh Java Swing mengikuti MVC.
sumber
Jadi ada banyak pola desain yang berbeda di area ini.
dan seterusnya. Selama bertahun-tahun ini telah terjalin, disatukan, diubah dan diterapkan dalam berbagai konteks. Yang penting di sini, adalah bahwa pola desain MVC dari tahun 1977 telah banyak berubah, dan bukan lagi pola desain yang digunakan oleh kerangka kerja server di sisi server. Sebagai contoh dalam implementasi smalltalk asli Model akan mengamati tampilan untuk perubahan, yang tidak lagi terjadi karena sisi server tidak dapat mengamati elemen html di browser pengguna. Sebaliknya jika tampilan berubah, tampilan akan mengirim permintaan ke controller yang kemudian akan memperbarui tampilan. Sekali lagi implementasi MVC asli tidak diikuti, karena pembaruan untuk model akan menyiratkan bahwa semua tampilan bergantung pada model akan diperbarui.
Kerangka kerja web modern mengikuti arsitektur tiga tingkat sederhana yang juga dikenal sebagai arsitektur Model 2.
Tentu saja ada contoh arsitektur MVC nyata di web, tetapi ini sering hanya sisi klien, terhubung ke server yang mengikuti arsitektur Model 2, karena pandangannya xml dan json, dan tidak diamati untuk perubahan. Contoh arsitektur sisi murni mvc klien adalah Sencha Touch dan Sproutcore.
Jika Anda memiliki MVC di browser, mvc suka di server, dan mvc suka sebagai lapisan data, Anda memiliki implementasi mvc hirarkis.
Catatan. Saya hanya berbicara tentang kerangka kerja web, implementasi lain dari MVC seperti java swing dan Flex memiliki perbedaan implementasi lainnya.
sumber
Satu hal yang harus Anda ketahui adalah bahwa ada banyak rasa MVC karena ada kerangka kerja yang mengklaim untuk mengimplementasikan MVC.
Sebagian besar setuju pada kenyataan bahwa Model memiliki kondisi tertentu dan Tampilan membuatnya. Tetapi Controller memiliki peran yang sangat berbeda.
Di Smalltalk, tempat pertama kali dijelaskan, Model adalah inti dari aplikasi, data, dan metode bisnis Anda. Tampilan adalah representasi grafis dari keadaan aplikasi (alias Model), dan Pengontrol mengelola input pengguna, peristiwa mouse dan keyboard. Pengontrol, misalnya, merutekan acara keyboard ke elemen tampilan yang memiliki fokus.
Di halaman .jsp, Model sebagian besar data, Lihat membuat Model ke HTML dan Controller melakukan routing Model ke Tampilan yang tepat untuk membuatnya.
Jadi, untuk menjawab pertanyaan Anda, sementara MVC digunakan baik pada aplikasi mandiri (Java, .Net, Flex) dan web (halaman jsp), itu adalah hal yang sangat berbeda. Itu berarti MVC yang Anda tahu tidak digunakan dalam aplikasi mandiri.
sumber