it-swarm-id.com

Praktik Terbaik untuk Arsitektur MVC

Pertanyaan saya lebih lanjut tentang bagaimana merancang aplikasi MVC. Sebagai contoh, kami dianjurkan untuk menggunakan DI dengan pola Repositori untuk memisahkan akses data dari pengontrol, namun sangat sedikit yang dikatakan tentang BAGAIMANA untuk melakukannya khusus untuk MVC. Di mana kita menempatkan kelas Repositori, misalnya? Mereka tampaknya tidak terkait model secara khusus, karena model juga harus relatif dipisahkan dari teknologi akses data yang sebenarnya.

Pertanyaan kedua melibatkan bagaimana menyusun lapisan atau tingkatan. Sebagian besar contoh aplikasi (Nerd dinner, Music Store, dll.) Semua tampaknya menggunakan tier tunggal, pendekatan 2 lapis (tidak termasuk tes) yang biasanya memiliki pengendali yang secara langsung memanggil kode L2S atau EF.

Jika saya ingin membuat aplikasi multi-tier/layer apa sajakah praktik terbaik yang ada dalam hal MVC?

28
Erik Funkenbusch

DI diselesaikan dalam ASP MVC menggunakan Pabrik Pengontrol. Pabrik ini digunakan untuk menyelesaikan dependensi pengontrol Anda.

MvcContrib memiliki beberapa implementasi Controller Facotry yang dapat Anda gunakan di luar kotak. Saya menggunakan implementasi Castle Windsor mereka dan itu bekerja dengan baik. Sarankan juga memeriksa Kelas TestHelper mereka. Ini memiliki beberapa fungsi yang sangat keren untuk mengejek Controller HTTPContext, Sessions, dll. MVCContrib

Secara pribadi saya ingin memberikan contoh Repositori Model saya untuk bekerja dengannya. Model mengekspos api ke repositori (CRUD). Ketergantungan pengontrol pada model tertentu disuntikkan pada penciptaan (konstruktor) ini disuntikkan melalui Pabrik Pengendali. Ini adalah titik masuk saya ke grafik objek yang dikelola wadah IoC saya.

5
Nick

Di mana kita menempatkan kelas Repositori, misalnya?

Mereka termasuk dalam model; mereka adalah model dalam aplikasi.

Bagaimana cara saya menyusun lapisan? Jika saya ingin membuat aplikasi multi-tier/layer apa sajakah praktik terbaik yang ada dalam hal MVC?

Tiers Merupakan pemisahan kode secara fisik. Lapisan mewakili pemisahan logis. Lapisan (sebagaimana adanya) berfungsi dengan baik untuk MVC. Bergantung pada jumlah logika bisnis, itu dapat ditempatkan di Pengontrol Anda, atau dapat ditempatkan di Majelis yang terpisah dan dapat digunakan oleh pengontrol selama siklus permintaan.

2
George Stocker