Mengapa menggunakan layanan web alih-alih akses langsung ke database relasional untuk aplikasi android?

19

Saya mencari di web bagaimana mengakses secara efisien ke database pusat di lokasi terpencil dan saya bertemu saran untuk menggunakan layanan web alih-alih akses langsung (yaitu JDBC dll) ke database. Saya bertanya-tanya alasan itu dan saran lainnya .

yesildal
sumber

Jawaban:

25

Menambahkan lapisan layanan web memberi Anda kesempatan untuk membuat klien Anda lebih ringan, baik dalam hal daya CPU yang diperlukan dan bandwidth yang digunakan selama pemrosesan. Kedua faktor ini sangat penting bagi pengguna akhir:

  • Menggunakan lebih sedikit CPU meningkatkan masa pakai baterai,
  • Menggunakan lebih sedikit bandwidth mengurangi pembayaran bulanan untuk pengguna dengan paket meteran

Dengan memperkenalkan lapisan aplikasi web, Anda memindahkan sebagian besar pemrosesan dari perangkat genggam daya rendah, bandwidth rendah, memori rendah ke server, bandwidth tinggi daya tinggi terpasang, server yang memiliki lebih banyak memori daripada itu kebutuhan - lingkungan di mana pemrosesan dan komunikasi menghabiskan sebagian kecil dari apa yang mereka keluarkan pada klien.

Tapi tunggu, ada sesuatu di dalamnya untuk Anda juga: dengan memisahkan sistem Anda mendapatkan lebih banyak kontrol atas aturan bisnis Anda, struktur database Anda, dan versi apa yang ada di luar sana. Setelah Anda membiarkan klien seluler terhubung langsung ke basis data, desain Anda "kawin" dengan struktur basis data itu: hampir setiap perubahan akan merusak kompatibilitas ke belakang ke klien yang mungkin enggan untuk meningkatkan aplikasinya.

Sebaliknya, menambahkan layanan web di antaranya memungkinkan Anda mengubah antarmuka menjadi klien seluler dengan cara yang lebih mudah dikelola: misalnya, Anda dapat mempertahankan antarmuka lama, menambahkan yang baru yang berfungsi "secara paralel" dengannya, dan kemudian seluruhnya merestrukturisasi basis data Anda tanpa melanggar satu klien.

Jika Anda mengikuti beberapa prinsip desain yang cukup mendasar saat mendesain layanan web Anda, Anda juga bisa mendapatkan manfaat yang signifikan dengan menggunakan kembali infrastruktur sisi server yang matang yang telah diterapkan: misalnya, Anda bisa mendapatkan layanan cache dan proxy secara gratis.

Akhirnya, ini akan membuka pintu bagi pengembang lain untuk mengekspos aplikasi Anda ke platform yang tidak dapat Anda layani sendiri, pada akhirnya bermain untuk keuntungan perusahaan Anda.

dasblinkenlight
sumber
1
"baik dalam hal daya CPU yang diperlukan dan bandwidth yang digunakan selama pemrosesan" adalah titik kunci yang saya cari. Terima kasih
yesildal
4
Selain itu, jika aplikasi Anda berkomunikasi secara langsung dengan database, Anda hanya merupakan kompiler balik dari seseorang yang menjatuhkan setiap tabel dalam database Anda. Dengan aplikasi-web, Anda dapat menggunakan kontrol yang lebih halus dan menghentikan hal-hal seperti itu
Earlz
1
@ Elarlz: bukan berarti saya pernah rela melakukannya untuk webapp, tetapi sebagian besar server database memang memiliki izin yang agak padat dan halus. Tidak ada alasan untuk pengguna web dengan izin drop table.
Wyatt Barnett
1
@ WyattBarnett ok ... tanpa prosedur tersimpan dan sejenisnya, bagaimana Anda mengizinkan pengguna untuk memperbarui profil pengguna mereka? baca / tulis izin ke tabel PENGGUNA ... Apa yang menghentikan mereka menghapus atau mengedit baris yang bukan milik mereka .. atau bahkan membaca baris yang bukan milik mereka. Saya cukup yakin tidak ada server database yang memiliki jenis ini tanpa menggunakan prosedur yang tersimpan atau semacamnya
Earlz
@ Earlz - tidak ada yang saya sadari, tapi itu intinya - mengapa Anda akan berbicara langsung ke basis data Anda dan sengaja mengabaikan fitur basis data untuk membuatnya waras? Dan apakah Anda akan melakukan sesuatu yang berpusat pada profil dan memperbarui dengan cara ini?
Wyatt Barnett
13

Ini menempatkan lapisan abstraksi antara aplikasi dan DB. Ini memberi Anda banyak keuntungan seperti:

  • Membatasi akses ke DB hanya pada bagian-bagian yang dibutuhkan aplikasi. Ini menyederhanakan kode aplikasi, dan menjaga keamanan DB Anda.
  • Asbstrak kerja bagian dalam DB, jadi jika Anda kemudian memutuskan untuk mengubah skema, kueri, atau bahkan seluruh basis data Anda tautan ke aplikasi Anda tidak rusak selama Anda mempertahankan lapisan tengah dengan benar.
  • Ini memungkinkan Anda untuk menambahkan fungsionalitas di luar ruang lingkup DB. Caching data yang cukup konstan misalnya. Aturan bisnis adalah bagian lain yang harus dipisahkan dari DB.
Sistem Down
sumber
1
Keuntungan lain adalah memungkinkan Anda untuk menambahkan cache, baik sisi klien atau sisi server (atau keduanya, untuk tujuan yang berbeda).
TMN
@TMN - Poin bagus!
Sistem Down
Ok, tetapi fakta-fakta ini juga berlaku untuk semua jenis aplikasi web, bukan? Apakah Memasukkan lapisan (layanan web) menambah waktu respons untuk aplikasi seluler yang diharapkan merespons dengan cepat?
yesildal
1
@ Yesildal - Ya mereka masih valid. Bahkan, mereka berlaku untuk semua jenis aplikasi. Namun, dalam aplikasi web Anda tidak harus tetap menggunakan layanan web dan hanya dapat mengisolasi fungsi-fungsi ini ke dalam perakitan mereka sendiri (misalnya). Alasan untuk menggunakan layanan web untuk aplikasi jarak jauh (seperti aplikasi telepon) adalah bahwa server DB tidak berada dalam jarak dekat.
Sistem Down
@ Yesildal - re performance: tidak juga, jika Anda memiliki 1 pengguna maka ya, akan ada keterlambatan tambahan dalam mengembalikan hasilnya, tetapi jika Anda memiliki sejuta pengguna, berbagai hal berbeda, dan memecah kode menjadi 2 server dapat membuat kinerja keseluruhan lebih cepat.
gbjbaanb
4

Satu alasan lain untuk tidak mengekspos DB langsung - transportasi. Kebanyakan basis data relasional, jenis hal yang diajak bicara dengan JDBC, tidak dirancang untuk internet publik secara umum. Internet nirkabel adalah ujung yang sangat tidak dapat diandalkan dari internet publik tersebut. Penanganan pengecualian akan menjadi mimpi buruk dan Anda mungkin akhirnya akan menulis kebalikan dari lapisan layanan web di dalam aplikasi Anda untuk menghindari kehilangan transaksi.

Ada beberapa jenis database yang lebih baru yang berbicara HTTP dan mungkin cocok untuk hal semacam ini. Mereka juga cenderung menampilkan cara untuk memasukkan kode aplikasi dalam database. Anda mungkin ingin melihat CouchDb atau RavenDb - keduanya db dokumen dengan kemampuan peta / pengurangan yang bekerja di json dan http, seperti banyak layanan web modern.

Wyatt Barnett
sumber