Server-side Java: Menghitung tingkatan - satu, dua, atau n?

Saya benci artikel yang membuat Anda mengarungi pegunungan teks sebelum langsung ke intinya. Karenanya, berikut adalah bagan yang merangkum pro dan kontra dari berbagai arsitektur untuk aplikasi terdistribusi yang dibahas dalam artikel ini.

Pada tingkatan

Pada awalnya hidup itu sederhana. Komputer terpisah, perangkat individu. Program memiliki akses ke semua input dan output komputer melalui perangkat yang terhubung ke komputer. Dengan penemuan jaringan, hidup menjadi lebih rumit. Sekarang kita harus menulis program yang bergantung pada program lain yang berjalan di komputer yang jauh. Seringkali, kita harus menulis semua program yang jauh itu juga! Inilah yang disebut pemrograman terdistribusi.

Definisi singkat: aplikasi terdistribusi adalah sistem yang terdiri dari program yang berjalan pada beberapa komputer host. The arsitektur aplikasi terdistribusi ini adalah sketsa dari program yang berbeda, yang menggambarkan program yang berjalan pada yang host, apa tanggung jawab mereka, dan apa protokol menentukan cara di mana berbagai bagian dari sistem bicara satu sama lain.

Arsitektur Pro Kontra
Satu tingkat

Sederhana

Performa sangat tinggi

Mandiri

Tanpa jaringan - tidak dapat mengakses layanan jarak jauh

Potensi untuk kode spaghetti

Dua tingkatan

Bersih, desain modular

Lalu lintas jaringan lebih sedikit

Algoritme aman

Dapat memisahkan UI dari logika bisnis

Harus merancang / mengimplementasikan protokol

Harus merancang / menerapkan penyimpanan data yang andal

Tiga tingkatan

Dapat memisahkan UI, logika, dan penyimpanan

Data yang andal dan dapat direplikasi

Akses data bersamaan melalui transaksi

Akses data yang efisien

Perlu membeli produk database

Perlu menyewa DBA

Perlu belajar bahasa baru (SQL)

Pemetaan objek-relasional sulit

N tingkatan

Mendukung banyak aplikasi dengan lebih mudah

Protokol / API umum

Cukup tidak efisien

Harus mempelajari API (CORBA, RMI, dll.)

Produk mahal

Lebih kompleks; dengan demikian, lebih banyak potensi bug

Lebih sulit untuk menyeimbangkan beban

Konsep tingkatan menyediakan cara mudah untuk mengelompokkan kelas arsitektur yang berbeda. Pada dasarnya, jika aplikasi Anda berjalan di satu komputer, ia memiliki arsitektur satu tingkat. Jika aplikasi Anda berjalan di dua komputer - misalnya, aplikasi CGI Web biasa yang berjalan di browser Web (klien) dan server Web - maka aplikasi tersebut memiliki dua tingkatan. Dalam sistem dua tingkat, Anda memiliki program klien dan program server . Perbedaan utama antara keduanya adalah bahwa server menanggapi permintaan dari banyak klien yang berbeda, sedangkan klien biasanya memulai permintaan informasi dari satu server.

Aplikasi tiga tingkat menambahkan program ketiga ke dalam campuran, biasanya database, tempat server menyimpan datanya. Aplikasi tiga tingkat merupakan peningkatan bertahap dari arsitektur dua tingkat. Aliran informasi pada dasarnya masih linier: permintaan datang dari klien ke server; server meminta atau menyimpan data dalam database; database mengembalikan informasi ke server; server mengembalikan informasi kembali ke klien.

Arsitektur n-tier, di sisi lain, memungkinkan sejumlah program yang tidak terbatas untuk berjalan secara bersamaan, mengirim informasi satu sama lain, menggunakan protokol yang berbeda untuk berkomunikasi, dan berinteraksi secara bersamaan. Hal ini memungkinkan aplikasi yang jauh lebih kuat, menyediakan banyak layanan berbeda untuk banyak klien berbeda.

Ini juga membuka kaleng besar worm, menciptakan masalah baru dalam desain, implementasi, dan kinerja. Ada banyak teknologi yang membantu mengatasi mimpi buruk kompleksitas ini, termasuk CORBA, EJB, DCOM, dan RMI, dan banyak produk berdasarkan teknologi ini sedang dipasarkan dengan gencar. Namun, lompatan dari tingkat tiga ke tingkat n - atau lompatan dari tingkat satu ke tingkat dua, atau dari tingkat dua ke tingkat tiga, dalam hal ini - tidak boleh dianggap enteng. Sangat mudah untuk membuka sekaleng worm, tetapi Anda selalu membutuhkan kaleng yang lebih besar untuk memasukkannya kembali. Para pendukung teknologi ini tergila-gila dengan kelebihannya, dan sering gagal menyebutkan kerugian dari beralih ke arsitektur yang lebih rumit.

Pada artikel ini, saya akan membahas kelebihan dan kekurangan masing-masing gaya arsitektur, dan memberi Anda beberapa informasi yang akan membantu Anda memilih arsitektur yang tepat untuk aplikasi Anda. Pertimbangkan alasan berikut sebelum memilih produk karena lembar fakta menjanjikan untuk membuat hidup Anda lebih mudah.