Apa perbedaan antara "Layers" dan "Tiers"?

214

Apa perbedaan antara "Layers" dan "Tiers"?

cretzel
sumber
3
Hampir semua orang yang saya temui di dunia perangkat lunak menggunakan dua istilah ini secara bergantian seolah-olah mereka sama persis.
RBT

Jawaban:

260

Lapisan logis hanyalah cara mengatur kode Anda. Lapisan tipikal termasuk Presentasi, Bisnis dan Data - sama dengan model 3-tier tradisional. Tetapi ketika kita berbicara tentang lapisan, kita hanya berbicara tentang organisasi logis dari kode. Sama sekali tidak tersirat bahwa lapisan ini dapat berjalan pada komputer yang berbeda atau dalam proses yang berbeda pada satu komputer atau bahkan dalam satu proses pada satu komputer. Semua yang kita lakukan adalah membahas cara mengatur kode ke dalam seperangkat lapisan yang ditentukan oleh fungsi tertentu.

Namun tingkatan fisik , hanya tentang di mana kode berjalan. Secara khusus, tingkatan adalah tempat di mana lapisan dikerahkan dan di mana lapisan dijalankan. Dengan kata lain, tingkatan adalah penyebaran fisik lapisan.

Sumber: Rockford Lhotka, Haruskah semua aplikasi n-tier?

Panos
sumber
43

Baca posting Scott Hanselman tentang masalah ini: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

Ingat juga, bahwa di "Scott World" (yang semoga dunia Anda juga :)) "Tier" adalah unit penyebaran, sedangkan "Layer" adalah pemisahan logis dari tanggung jawab dalam kode. Anda mungkin mengatakan Anda memiliki sistem "3-tier", tetapi menjalankannya di satu laptop. Anda mungkin mengatakan Anda memiliki sistem "3-layer", tetapi hanya memiliki halaman ASP.NET yang berbicara ke database. Ada kekuatan dalam presisi, teman-teman.

Josh
sumber
36

Layers merujuk pada pemisahan kode secara logis. Lapisan logis membantu Anda mengatur kode Anda dengan lebih baik. Misalnya aplikasi dapat memiliki lapisan berikut.

1) Lapisan Presentasi atau Lapisan UI 2) Lapisan Bisnis atau Lapisan Logika Bisnis 3) Lapisan Akses Data atau Lapisan Data

Tiga lapisan di atas berada di proyek mereka sendiri, mungkin 3 proyek atau bahkan lebih. Ketika kami mengkompilasi proyek, kami mendapatkan masing-masing layer DLL. Jadi kita punya 3 DLL sekarang.

Bergantung pada bagaimana kita menyebarkan aplikasi kita, kita mungkin memiliki 1 hingga 3 tingkatan. Karena kita sekarang memiliki 3 DLL, jika kita menggunakan semua DLL pada mesin yang sama, maka kita hanya memiliki 1 lapis fisik tetapi 3 lapisan logis.

Jika kami memilih untuk menggunakan setiap DLL pada mesin yang terpisah, maka kami memiliki 3 tingkatan dan 3 lapisan.

Jadi, Layers adalah pemisahan logis dan Tiers adalah pemisahan fisik. Kita juga dapat mengatakan bahwa, tingkatan adalah penyebaran lapisan secara fisik.

Satish
sumber
Apa yang saya mengerti dari jawaban Anda bahwa kami dapat menggunakan 3 lapisan (DLL) pada tiga server yang berbeda. Baik ? Bisakah Anda memberi tahu saya bagaimana saya bisa memberikan referensi lapisan Logika Bisnis pada lapisan presentasi?
Mazhar Khan
@MazharKhan Anda mungkin ingin menggunakan layanan untuk mengekspos fungsionalitas lapisan bisnis ke lapisan presentasi
Amit Saxena
32

Kenapa selalu berusaha menggunakan kata-kata yang rumit?

Sebuah lapisan = bagian dari kode Anda , jika aplikasi Anda kue, ini adalah sepotong.

Sebuah lapis = mesin fisik , server.

Tier meng-host satu atau lebih layer.


Contoh lapisan:

  • Lapisan presentasi = biasanya semua kode yang terkait dengan Antarmuka Pengguna
  • Lapisan Akses Data = semua kode yang terkait dengan akses basis data Anda

Tingkat:

Kode Anda di-host di server = Kode Anda di-host di tingkat.

Kode Anda di-host di 2 server = Kode Anda di-host di 2 tingkatan.

Misalnya, satu mesin hosting Situs Web itu sendiri (lapisan Presentasi), mesin lain lebih aman hosting semua kode sensitif lebih keamanan (kode bisnis nyata - lapisan bisnis, lapisan akses basis data, dll.).


Ada begitu banyak manfaat untuk mengimplementasikan arsitektur berlapis. Ini rumit dan benar menerapkan aplikasi berlapis membutuhkan waktu. Jika Anda memiliki beberapa, lihat posting ini dari Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx

Andrew
sumber
13

Saya telah menemukan definisi yang mengatakan bahwa Layers adalah pemisahan logis dan tingkatan adalah pemisahan fisik.

cretzel
sumber
10
  1. Dalam bahasa Inggris biasa, kata Tiermengacu pada "masing-masing dalam serangkaian baris atau tingkat struktur yang ditempatkan satu di atas yang lain" sedangkan yang Layermengacu pada "selembar, jumlah, atau ketebalan bahan, biasanya satu dari beberapa, meliputi permukaan atau badan ".

  2. Tier adalah unit fisik , tempat kode / proses berjalan. Misalnya: klien, server aplikasi, server database;

    Lapisan adalah unit logis , cara mengatur kode. Misalnya: presentasi (tampilan), pengontrol, model, repositori, akses data.

  3. Tiers mewakili pemisahan fisik dari presentasi, bisnis, layanan, dan fungsionalitas data desain Anda di komputer dan sistem yang terpisah.

    Lapisan adalah pengelompokan logis dari komponen perangkat lunak yang membentuk aplikasi atau layanan. Mereka membantu membedakan antara berbagai jenis tugas yang dilakukan oleh komponen, sehingga memudahkan untuk membuat desain yang mendukung usabilitas komponen. Setiap layer logis berisi sejumlah tipe komponen diskrit yang dikelompokkan ke dalam sublayers, dengan setiap sublayer melakukan jenis tugas tertentu.

Pola dua tingkat mewakili klien dan server.

Dalam skenario ini, klien dan server mungkin ada di mesin yang sama, atau mungkin berada di dua mesin yang berbeda. Gambar di bawah ini, menggambarkan skenario aplikasi Web umum di mana klien berinteraksi dengan server Web yang terletak di tingkat klien. Tingkat ini berisi logika lapisan presentasi dan logika lapisan bisnis apa pun yang diperlukan. Aplikasi Web berkomunikasi dengan mesin terpisah yang meng-host tingkat database, yang berisi logika lapisan data.

Layers vs Tiers

Keuntungan Layers dan Tiers:

  • Layering membantu Anda memaksimalkan pemeliharaan kode, mengoptimalkan cara aplikasi bekerja saat digunakan dengan cara yang berbeda, dan memberikan penggambaran yang jelas antara lokasi di mana teknologi atau keputusan desain tertentu harus dibuat.

  • Menempatkan lapisan Anda pada tingkatan fisik yang terpisah dapat membantu kinerja dengan mendistribusikan beban di beberapa server. Ini juga dapat membantu keamanan dengan memisahkan komponen dan lapisan yang lebih sensitif ke jaringan yang berbeda atau di Internet versus intranet.

Aplikasi 1-Tier bisa menjadi aplikasi 3-Lapisan.

TryinHard
sumber
6

Ya teman-teman tersayang saya katakan dengan benar. Lapisan adalah partisi logis dari aplikasi sedangkan tier adalah partisi fisik dari tier sistem tergantung pada partisi lapisan. Sama seperti aplikasi yang dieksekusi pada mesin tunggal tetapi mengikuti 3 arsitektur berlapis, jadi kita dapat mengatakan bahwa arsitektur lapisan bisa ada dalam arsitektur tingkat. Secara sederhana arsitektur 3 layer dapat diimplementasikan dalam mesin tunggal maka kita dapat mengatakan bahwa itu adalah arsitektur 1 tingkat. Jika kita menerapkan setiap layer pada mesin yang terpisah maka disebut arsitektur 3 tier. Lapisan juga dapat menjalankan beberapa tingkat. Secara arsitektur komponen terkait untuk berkomunikasi satu sama lain dengan mudah.
Sama seperti yang kita ikuti di bawah ini diberikan arsitektur

  1. lapisan presentasi
  2. lapisan logika bisnis
  3. lapisan akses data

Klien dapat berinteraksi dengan "lapisan presentasi", tetapi mereka mengakses komponen publik di bawah lapisan (seperti komponen publik lapisan logika bisnis) ke "lapisan logika bisnis" karena alasan keamanan.
Q * mengapa kita menggunakan arsitektur layer? karena jika kita menerapkan arsitektur lapisan maka kita meningkatkan efisiensi aplikasi seperti

==> keamanan

==> pengelolaan

==> skalabilitas

kebutuhan lain seperti setelah mengembangkan aplikasi kita perlu mengubah dbms atau memodifikasi logika bisnis dll. maka itu perlu untuk semua.

T * mengapa kita menggunakan arsitektur tier?

karena implementasi secara fisik dari setiap layer memberikan efisiensi yang lebih baik, tanpa arsitektur layer kita tidak dapat mengimplementasikan arsitektur tier. mesin terpisah untuk mengimplementasikan tier terpisah dan tier terpisah menerapkan satu atau lebih lapisan itu sebabnya kami menggunakannya.
digunakan untuk tujuan toleransi kesalahan. ==> mudah dirawat.

Contoh sederhana

Persis seperti bank yang buka di kamar, di mana kategori karyawan:

  1. penjaga gerbang
  2. seseorang untuk uang tunai
  3. seseorang yang bertanggung jawab untuk memperkenalkan skema perbankan
  4. Pengelola

mereka semua adalah komponen terkait sistem.

Jika kita pergi ke bank untuk tujuan pinjaman maka pertama penjaga gerbang membuka pintu dengan senyum setelah itu kita pergi ke dekat orang yang memperkenalkan semua skema pinjaman setelah itu kita pergi ke kabin manajer dan melewati pinjaman. Setelah itu akhirnya kami pergi ke konter kasir mengambil pinjaman. Ini adalah arsitektur lapisan bank.

Bagaimana dengan tier? Cabang bank terbuka di kota, setelah itu di kota lain, setelah itu di kota lain tetapi apa persyaratan dasar masing-masing cabang

  1. penjaga gerbang
  2. seseorang untuk uang tunai
  3. seseorang yang bertanggung jawab untuk memperkenalkan skema perbankan
  4. Pengelola

konsep layer dan tier yang persis sama.

atul
sumber
Penjelasan bagus sayang
Dulaj Kulathunga
6

Lapisan adalah pemisahan logis dari related-functionality[code] suatu aplikasi, Komunikasi antara lapisan secara eksplisit dan longgar digabungkan. [Logika presentasi, Logika aplikasi, Logika Akses Data]

Tingkatan adalah pemisahan fisik layers[yang di-host di server individu] di komputer individu (proses).

masukkan deskripsi gambar di sini

Seperti yang ditunjukkan dalam diagram:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n- Keunggulan Tier : Skalabilitas
Keamanan yang Lebih Baik : Seiring pertumbuhan organisasi Anda, Anda dapat meningkatkan DB-Tier Anda dengan DB-Clustering tanpa menyentuh tingkatan lainnya. Maintainability : Desainer web dapat mengubah View-code, tanpa menyentuh lapisan lain pada tingkatan lainnya. Tingkatkan atau Tingkatkan dengan Mudah [Contoh: Anda dapat menambahkan Kode Aplikasi Tambahan, Tingkatkan Area Penyimpanan, atau bahkan menambahkan Beberapa Lapisan Presentasi untuk perangkat terpisah seperti ponsel, tablet, pc]


Yash
sumber
6

Saya suka uraian di bawah ini dari Panduan Arsitektur Aplikasi Microsoft 2

Lapisan menggambarkan pengelompokan logis dari fungsi dan komponen dalam suatu aplikasi; sedangkan tingkatan menggambarkan distribusi fisik dari fungsionalitas dan komponen pada server, komputer, jaringan, atau lokasi terpencil yang berbeda. Meskipun kedua lapisan dan tingkatan menggunakan rangkaian nama yang sama (presentasi, bisnis, layanan, dan data), ingatlah bahwa hanya tingkatan yang menyiratkan pemisahan fisik.

sanjaykumar81
sumber
5

Saya menggunakan lapisan untuk menggambarkan tumpukan arsitek atau teknologi dalam komponen solusi saya. Saya menggunakan tingkatan untuk secara logis mengelompokkan komponen-komponen tersebut biasanya ketika jaringan atau komunikasi antar proses terlibat.

Brian Matthews
sumber
1

Secara teknis, Tier dapat menjadi semacam lingkungan minimum yang diperlukan untuk menjalankan kode.

Misalnya secara hipotesis aplikasi 3-tier dapat berjalan

  1. 3 mesin fisik tanpa OS.
  2. 1 mesin fisik dengan 3 mesin virtual tanpa OS.

    (Itu adalah aplikasi tingkat 3 (perangkat keras))

  3. 1 mesin fisik dengan 3 mesin virtual dengan 3 OS yang berbeda / sama

    (Itu adalah aplikasi tingkat 3 (OS))

  4. 1 mesin fisik dengan 1 mesin virtual dengan 1 OS tetapi 3 AppServers

    (Itu adalah aplikasi tingkat 3 (AppServer))

  5. 1 mesin fisik dengan 1 mesin virtual dengan 1 OS dengan 1 AppServer tetapi 3 DBMS

    (Itu adalah aplikasi tingkat 3- (DBMS))

  6. 1 mesin fisik dengan 1 mesin virtual dengan 1 OS dengan 1 AppServers dan 1 DBMS tetapi 3 buku kerja Excel.

    (Itu adalah aplikasi tingkat 3 (AppServer))

Buku kerja Excel adalah lingkungan minimum yang diperlukan untuk menjalankan kode VBA.

Ketiga buku kerja itu bisa duduk di satu komputer fisik atau banyak.

Saya perhatikan bahwa dalam praktiknya orang berarti "OS Tier" ketika mereka mengatakan "Tier" dalam konteks deskripsi aplikasi.

Itu adalah jika sebuah aplikasi berjalan pada 3 OS terpisah maka itu adalah aplikasi 3-Tier.

Jadi cara pedantically benar menggambarkan suatu aplikasi akan menjadi

"1-ke-3-Tier mampu, berjalan pada aplikasi 2 Tiers".

:)


Lapisan hanyalah jenis kode sehubungan dengan pemisahan fungsional tugas dengan aplikasi (misalnya Presentasi, Data, Keamanan dll.)

Dimitri KOH
sumber
0

Lapisan adalah entitas konseptual, dan digunakan untuk memisahkan fungsionalitas sistem perangkat lunak dari sudut pandang logis; ketika Anda menerapkan sistem Anda mengatur lapisan ini menggunakan metode yang berbeda; dalam kondisi ini kami menyebutnya bukan sebagai lapisan tetapi sebagai tingkatan.

gst
sumber
0

Ketika Anda berbicara tentang presentasi, layanan, data, lapisan jaringan, Anda berbicara tentang lapisan. Ketika Anda "menyebarkannya secara terpisah", Anda berbicara tentang tingkatan.

Tingkatan adalah tentang penyebaran. Ambillah seperti ini: Kami memiliki aplikasi yang memiliki frontend dibuat di Angular, itu memiliki backend sebagai MongoDB dan lapisan tengah yang berinteraksi antara frontend dan backend. Jadi, ketika aplikasi frontend ini, aplikasi database, dan lapisan tengah semuanya dikerahkan secara terpisah, kita katakan itu adalah aplikasi 3 tingkat.

Manfaat: Jika kita perlu meningkatkan backend kita di masa depan, kita hanya perlu mengukur backend secara mandiri dan tidak perlu meningkatkan frontend.

Aarzoo Trehan
sumber