Mengapa dalam beberapa kerangka logika lapisan disebut "Model" sedangkan dalam beberapa kerangka disebut "Layanan". Apakah mereka berbeda satu sama lain atau hanya berbeda dengan penamaan konvensi?
PEMBARUAN 1
Alasan saya bertanya adalah karena dalam Zend Framework, kerangka kerja MVC klasik, semua orang menggunakan konsep Model. Sekarang saya sedang belajar AngularJS dan tampaknya kata Model menghilang dan digantikan oleh layanan kata.
Apa yang saya perhatikan adalah bahwa layanan lebih seperti singleton yang dapat digunakan kembali berulang kali (contoh: klien REST) sedangkan model lebih terkait dengan manipulasi data yang berasal dari pengontrol dalam pola MVC.
Jawaban:
Model: Bidang yang termasuk objek, metode yang membantu untuk mendapatkan / mengatur data dari objek (pengakses nama lengkap yang mengembalikan nama depan + nama belakang)
Layanan: Metode untuk melakukan operasi dengan satu atau lebih model, lihat 'unit kerja', transaksi, dll ...
Karyawan :: buat hanya harus mengambil satu set data, melakukan validasi model jika perlu, dan mengembalikan Obyek Karyawan.
EmployeeService :: hireEmployee dapat membuat karyawan, mengirim mereka email selamat datang, membuat kotak surat, membuatkan mereka sandwich, dll ... itu dapat mengembalikan set data, atau kode hasil, dll ...
Ini juga dapat memengaruhi validasi:
Validasi Model: Karyawan harus memiliki id, nama depan dan belakang, dan tanggal lahir
Validasi Layanan: Karyawan untuk posisi bartender harus berusia 21 atau lebih, dan disetujui oleh manajer.
sumber
Menurut pengalaman saya, lapisan Model dalam pola desain MVC mengacu pada setiap komponen perangkat lunak yang terlibat dengan manipulasi data (POJO, DAO, semua jalan ke SQL, JDBC, dan sebagainya).
Sedangkan lapisan layanan sebenarnya merupakan tambahan untuk MVC:
Kita tahu bahwa komponen Model layer dipanggil di dalam lapisan Controller . Setelah yang terakhir dibangun, Anda menyadari bahwa itu tidak terlihat ringkas (berantakan dengan kode kotor); Pengontrol mungkin tidak memberikan detail tambahan (mis. memformat parameter permintaan sebelum memanggil metode DAO yang akan mengkonsumsinya ...). Oleh karena itu, Anda dapat menyertakan lapisan tambahan ini, yaitu Layanan lapisan .
Akhirnya, Anda dapat memasukkan kode kotor Anda ke dalam metode statis dengan nama yang bermakna, parameter, dan sebagainya, yang akan menghasilkan lapisan Kontroler sintetis.
Lihatlah tautan ini:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
sumber
Secara struktural kelas dasar ini adalah sama, namun mereka digunakan untuk mengklasifikasikan keprihatinan yang berbeda dari tingkat Layanan dan Model implementasi MVCS
Jadi, sementara kelas dasar sama, kelas konkret yang dibuat dengan memperluas kelas dasar ini melayani dua tujuan yang sama sekali berbeda.
sumber