Bagaimana aplikasi desktop berkomunikasi dengan server jauh sebelum layanan web?

11

Saya tidak memiliki banyak expierence dengan aplikasi desktop, tetapi jika saya harus membuat aplikasi desktop server klien, akses data akan dilakukan melalui layanan web. Saya percaya akses data melalui layanan web memberikan keamanan - Saya tidak perlu memasukkan nama pengguna dan kata sandi server db dll.

Sebelum layanan web, bagaimana aplikasi database melakukan ini? Apakah semua informasi db penting diteruskan ke instalasi aplikasi desktop? Jika demikian, bagaimana programmer mengatur aspek keamanan? Atau apakah programmer menggunakan sesuatu yang mirip dengan layanan web?

Howl Hagrid
sumber
5
Ada hal-hal lucu untuk panggilan prosedur jarak jauh, seperti DCOM (Distributed COM), CORBA, Java RMI ... Saya tidak pernah sepenuhnya memahami salah satu dari mereka, ketika meminta beberapa data melalui HTTP masuk akal secara instan. Saya kira menggunakan browser web setiap hari membuat layanan web lebih mudah untuk grok :-)
marcus
3
@marcus: mungkin karena HTTP memiliki respons permintaan di dalamnya, sedangkan "beberapa protokol melalui soket" menghasilkan setiap orang yang menciptakan roda dengan bentuk yang sedikit berbeda.
Steve Jessop

Jawaban:

11

Tergantung pada apa yang Anda sebut layanan web.

Sebelum WSDL dan REST, masih ada HTTP, jadi pada dasarnya semua yang dapat Anda lakukan sekarang dapat dilakukan sebelumnya juga.

Ada kurangnya keseragaman (itulah sebabnya WSDL dan REST dibuat di tempat pertama), tetapi memberikan tingkat kerahasiaan dan keamanan data yang sama yang Anda bicarakan.

Anda sebenarnya dapat menghindari menggunakan HTTP juga: Anda dapat membuat draft protokol Anda sendiri, dan menggunakan server khusus dan klien khusus yang akan membuka soket ke server ini dan mendapatkan data yang mereka butuhkan (atau memposting data). Di sini, Anda kehilangan semua manfaat standardisasi HTTP, tetapi sekali lagi, Anda tidak memberikan akses ke database untuk klien.

Arseni Mourzenko
sumber
17

Ah, dulu ketika kita punya tongkat dan batu.

Sebelum Internet, kami memiliki sesuatu yang disebut arsitektur "klien / server" dan Jaringan Area Lokal. Jika Anda tidak mencoba membuat koneksi dengan server beberapa mil jauhnya, jaringan ini bekerja dengan sangat baik untuk mencapai hampir semua hal. Anda bahkan dapat membuat huruf drive dan menggunakan koneksi ke server file seperti hard drive jarak jauh, jika Anda mau. Jika Anda berada beberapa mil jauhnya, Anda bisa menggunakan Wide Area Network untuk melakukan dasarnya hal yang sama, meskipun pada kecepatan yang lebih lambat dan dengan biaya yang lebih besar.

Cara murah untuk berbicara dari jarak jauh adalah dengan mengirimkan informasi melalui saluran telepon menggunakan perangkat yang disebut modem, dan jika Anda ingin mengaitkan sesuatu di mana dua komputer saling berbicara melalui aplikasi komputer, Anda melakukannya dengan cara yang sama seperti Anda melakukannya hari ini: dengan membangun protokol komunikasi. Tidak ada yang ajaib sama sekali tentang itu; kedua belah pihak hanya harus menyetujui apa artinya semua byte.

Dari tahap awal Internet, ada cara bagi mesin untuk berkomunikasi melewatinya. Layanan Web hanyalah cita rasa terbaru dalam seminggu.

Robert Harvey
sumber
5
"Tidak ada yang ajaib sama sekali tentang itu; kedua belah pihak hanya harus setuju tentang apa artinya semua byte." Dan endianness :)
hjk
2
@ hjk, itu mudah: little-endian jelas lebih unggul dari semua opsi lain :-)
Mark
3
Saya bahkan melangkah lebih jauh dengan mengatakan definisi internet mensyaratkan bahwa ada cara bagi mesin untuk berkomunikasi dengannya. Jika mereka tidak bisa melakukan itu, itu bukan internet, itu adalah banyak kabel dengan delusi keagungan.
Steve Jessop
2
@SteveJessop: Anda salah, " Ini serangkaian tabung ".
Deduplicator
3

Hanya untuk menjernihkan beberapa konsep terlebih dahulu ...

Saya percaya akses data melalui layanan web memberikan keamanan - Saya tidak perlu memasukkan nama pengguna dan kata sandi server db dll.

Saya pikir Anda sedang menggabungkan konsep (1) Transport Layer Security (TLS) dan (2) kontrol akses dalam pernyataan di atas ... Apakah nama pengguna dan kata sandi perlu diberikan atau tidak tidak terkait dengan apakah layanan web disediakan melalui (1) saluran terenkripsi dan (2) otentikasi (misalnya kunci API).

Layanan web yang ditulis dengan sangat buruk mungkin masih memerlukan kata sandi untuk dikirim dalam bentuk plaintext melalui HTTP. Seseorang yang ditulis dengan buruk dapat melakukannya di atas HTTPS (aman, tetapi sekali rusak, misalnya melalui serangan manusia-di-tengah , terbuka untuk penyalahgunaan). Layanan web yang ditulis lebih baik harus menangani konektivitas basis data secara internal berdasarkan input lain, misalnya ID sesi, setelah otentikasi dan kontrol hak divalidasi.

Kembali ke poin utama, komentar @ marcus pada pertanyaan Anda pada dasarnya adalah itu. Aspek keamanan ditangani dengan tidak berbeda dari teknologi "modern", dan itu mencakup pertanyaan implementasi seperti:

  • Apakah protokol komunikasi Anda (meminjam sedikit dari jawaban @ RobertHarvey) mendukung transmisi data terenkripsi.
  • The pesan payload struktur yang disampaikan antara server dan client.
    • Apakah klien hanya memberi tahu server untuk tetap menggunakan alamat tempat tinggal pengguna ini, atau untuk terhubung ke database di IP X.X.X.Xdengan nama pengguna dan kata sandi, lalu jalankan kueriINSERT INTO user_address ... ?
  • Bagaimana server mengelola konektivitas databasenya (yang benar-benar terisolasi dari klien, lihat paragraf pertama).

Untuk informasi lebih lanjut:

hjk
sumber