Memahami internet stateless [ditutup]

15

Saya beralih dari menjadi pengembang desktop menjadi pengembang web, dan saya mengalami kesulitan memahami mengapa HTTP tidak memiliki kewarganegaraan. Apa alasannya? Apa saja cara pengembang desktop seperti saya dapat melakukan transisi ke lingkungan pengembangan tanpa kewarganegaraan?

P.Brian.Mackey
sumber
3
Halo Brian, Programmers.SE bukan papan diskusi . Apakah ada masalah khusus yang Anda hadapi sehingga Anda perlu bantuan? Jika demikian, dapatkah Anda mengulangi pertanyaan Anda?
Biasanya Anda membiarkan server menangani rincian hal-hal cookie sesi.
FrustratedWithFormsDesigner
Saya pikir ini harus dibuka kembali, sekarang memiliki selusin "jawaban yang memadai". Terutama karena itu ditunjukkan oleh pertanyaan baru lain yang dikatakan menduplikasi pertanyaan ini. Ini tidak dapat menjadi duplikat di kedua arah jika tidak seharusnya ada di sini. Mari kita memiliki kewarasan di sini.

Jawaban:

18

Ini adalah penjelasan terbaik dari internet tanpa kewarganegaraan yang telah saya lihat:

Bagaimana Saya Menjelaskan REST  ke My Wife
http://www.looah.com/source/view/2284

Istri: Siapa itu Roy Fielding?

Ryan: Beberapa pria. Dia pintar.

Istri: Oh? Apa yang dia lakukan?

Ryan: Dia membantu menulis server web pertama dan kemudian melakukan banyak penelitian menjelaskan mengapa web bekerja seperti itu. Namanya ada pada spesifikasi untuk protokol yang digunakan untuk mendapatkan halaman dari server ke browser Anda.

Istri: Bagaimana cara kerjanya?

Ryan: Web?

Istri: Ya.

Ryan: Hmm. Yah, itu semua sungguh menakjubkan. Dan lucunya adalah semuanya sangat diremehkan. Protokol yang saya bicarakan, HTTP, mampu melakukan semua hal yang orang abaikan karena suatu alasan.

Istri: Maksud Anda http seperti awal dari apa yang saya ketik di browser?

Ryan: Ya. Bagian pertama itu memberi tahu browser protokol apa yang digunakan. Hal-hal yang Anda ketikkan di sana adalah salah satu terobosan paling penting dalam sejarah komputasi.

Istri: Kenapa?

Ryan: Karena mampu menggambarkan lokasi sesuatu di mana saja di dunia dari mana saja di dunia. Itu adalah dasar dari web. Anda dapat menganggapnya seperti koordinat GPS untuk pengetahuan dan informasi.

Istri: Untuk halaman web?

Ryan: Sebenarnya apa pun. Orang itu, Roy Fielding, dia banyak berbicara tentang apa yang ditunjukkan hal-hal itu dalam penelitian yang saya bicarakan. Web dibangun di atas gaya arsitektur yang disebut REST. REST memberikan definisi sumber daya, yang menjadi tujuan hal-hal tersebut.

Istri: Halaman web adalah sumber daya?

Ryan: Agak. Halaman web adalah representasi dari sumber daya. Sumber daya hanyalah konsep. URL - hal-hal yang Anda ketikkan ke browser ...

Istri: Saya tahu apa itu URL ..

Ryan: Oh, benar. Mereka memberi tahu browser bahwa ada konsep di suatu tempat. Browser kemudian dapat meminta representasi spesifik dari konsep tersebut. Secara khusus, browser meminta representasi halaman web dari konsep tersebut.

Istri: Jenis representasi apa lagi yang ada?

Ryan: Sebenarnya, representasi adalah salah satu dari hal-hal ini yang tidak banyak digunakan. Dalam kebanyakan kasus, sumber daya hanya memiliki satu representasi. Tetapi kami berharap bahwa representasi akan digunakan lebih banyak di masa depan karena ada banyak format baru bermunculan di semua tempat.

Istri: Seperti apa?

Ryan: Hmm. Nah, ada konsep ini yang disebut orang dengan Layanan Web. Ini berarti banyak hal berbeda bagi banyak orang, tetapi konsep dasarnya adalah bahwa mesin dapat menggunakan web seperti halnya orang.

Istri: Apakah ini robot lain?

Ryan: Tidak, tidak juga. Saya tidak bermaksud bahwa mesin akan duduk di meja dan menjelajah web. Tetapi komputer dapat menggunakan protokol yang sama untuk saling mengirim pesan satu sama lain. Kami sudah melakukan itu sejak lama, tetapi tidak ada teknik yang kami gunakan saat ini yang berfungsi dengan baik ketika Anda harus dapat berbicara dengan semua mesin di seluruh dunia.

Istri: Kenapa tidak?

Ryan: Karena mereka tidak dirancang untuk digunakan seperti itu. Ketika Fielding dan teman-temannya mulai membangun web, bisa berbicara dengan mesin apa pun di mana pun di dunia adalah perhatian utama. Sebagian besar teknik yang kami gunakan di tempat kerja untuk membuat komputer berbicara satu sama lain tidak memiliki persyaratan tersebut. Anda hanya perlu berbicara dengan sekelompok kecil mesin.

Istri: Dan sekarang Anda perlu berbicara dengan semua mesin?

Ryan: Ya - dan banyak lagi. Kita harus dapat berbicara dengan semua mesin tentang semua hal yang ada di semua mesin lain. Jadi kita perlu beberapa cara agar satu mesin memberi tahu mesin lain tentang sumber daya yang mungkin ada di komputer lain.

Istri: Apa?

Ryan: Katakanlah Anda sedang berbicara dengan kakak Anda dan dia ingin meminjam penyapu atau sesuatu. Tetapi Anda tidak memilikinya - Ibumu memilikinya. Jadi, Anda memberi tahu adikmu untuk mendapatkannya dari ibumu. Ini terjadi setiap saat di kehidupan nyata dan itu terjadi setiap saat ketika mesin mulai berbicara juga.

Istri: Jadi, bagaimana mesin-mesin itu saling memberi tahu di mana letak benda-benda itu?

Ryan: URL, tentu saja. Jika semua yang perlu dibicarakan mesin memiliki URL yang sesuai, Anda telah membuat mesin yang setara dengan kata benda. Bahwa Anda dan saya dan seluruh dunia telah sepakat untuk berbicara tentang kata benda dengan cara tertentu sangat penting, eh?

Istri: Ya.

Ryan: Mesin tidak memiliki kata benda universal - itu sebabnya mereka payah. Setiap bahasa pemrograman, basis data, atau jenis sistem lainnya memiliki cara berbeda untuk berbicara tentang kata benda. Itu sebabnya URL sangat penting. Mari kita semua sistem ini saling bercerita tentang kata benda satu sama lain.

Istri: Tetapi ketika saya melihat halaman web, saya tidak berpikir seperti itu.

Ryan: Tidak ada yang tahu. Kecuali Fielding dan segelintir orang lain. Itu sebabnya mesin masih payah.

Istri: Bagaimana dengan kata kerja dan kata ganti dan kata sifat?

Ryan: Lucu, kamu bertanya karena itu aspek besar lain dari REST. Yah, bagaimanapun juga, kata kerja.

Istri: Saya hanya bercanda.

Ryan: Itu lelucon lucu tapi sebenarnya bukan lelucon sama sekali. Kata kerja itu penting. Ada konsep yang kuat dalam pemrograman dan teori CS yang disebut polimorfisme. Itu cara yang aneh mengatakan bahwa kata benda yang berbeda dapat memiliki kata kerja yang sama diterapkan pada mereka.

Istri: Saya tidak mengerti.

Ryan: Ya .. Lihatlah meja kopinya. Apa kata benda? Piala, nampan, koran, remote. Sekarang, apa beberapa hal yang dapat Anda lakukan untuk semua hal ini?

Istri: Saya tidak mengerti ...

Ryan: Anda bisa mendapatkannya, bukan? Anda bisa mengambilnya. Anda bisa menjatuhkan mereka. Anda bisa membakarnya. Anda bisa menerapkan kata kerja persis yang sama itu ke salah satu objek yang duduk di sana.

Istri: Oke ... jadi?

Ryan: Ya, itu penting. Bagaimana jika alih-alih saya bisa mengatakan kepada Anda, "ambil piala," dan "ambil koran," dan "ambil kendali jarak jauh"; bagaimana jika alih-alih kami perlu menghasilkan kata kerja yang berbeda untuk masing-masing kata benda? Saya tidak bisa menggunakan kata "dapatkan" secara universal, tetapi sebaliknya harus memikirkan kata baru untuk setiap kombinasi kata kerja / kata benda.

Istri: Wow! Itu aneh.

Ryan: Ya, benar. Otak kita entah bagaimana cukup pintar untuk mengetahui bahwa kata kerja yang sama dapat diterapkan pada banyak kata benda yang berbeda. Beberapa kata kerja lebih spesifik daripada yang lain dan hanya berlaku untuk sejumlah kecil kata benda. Misalnya, saya tidak bisa mengendarai cangkir dan saya tidak bisa minum mobil. Tetapi beberapa kata kerja hampir universal seperti GET, PUT, dan DELETE.

Istri: Anda tidak bisa HAPUS cangkir.

Ryan: Yah, oke, tapi kamu bisa membuangnya. Itu lelucon lain, kan?

Istri: Ya.

Ryan: Jadi, HTTP - protokol yang dibuat Fielding dan teman-temannya - adalah tentang menerapkan kata kerja ke kata benda. Misalnya, ketika Anda pergi ke halaman web, browser melakukan HTTP GET pada URL yang Anda ketik dan kembali datang halaman web.

Halaman web biasanya memiliki gambar, bukan? Itu adalah sumber daya yang terpisah. Halaman web hanya menentukan URL untuk gambar dan browser berjalan dan melakukan lebih banyak HTTP GET pada mereka sampai semua sumber daya diperoleh dan halaman web ditampilkan. Tetapi yang penting di sini adalah jenis-jenis kata benda yang sangat berbeda dapat diperlakukan sama. Apakah kata benda itu adalah gambar, teks, video, mp3, tampilan slide, apa pun. Saya bisa MENDAPATKAN semua hal itu dengan cara yang sama dengan memberikan URL.

Istri: Kedengarannya seperti GET adalah kata kerja yang cukup penting.

Ryan: Ya . Terutama saat Anda menggunakan peramban web karena peramban cukup banyak. Mereka tidak melakukan banyak jenis interaksi dengan sumber daya. Ini adalah masalah karena telah membuat banyak orang menganggap bahwa HTTP hanya untuk MENDAPATKAN. Tetapi HTTP sebenarnya adalah protokol tujuan umum untuk menerapkan kata kerja ke kata benda.

Istri: Keren. Tapi saya masih tidak melihat bagaimana ini mengubah apa pun. Apa jenis kata benda dan kata kerja yang Anda inginkan?

Ryan: Ya, kata benda ada di sana tetapi tidak dalam format yang tepat.

Pikirkan ketika Anda menjelajahi amazon.com mencari hal-hal untuk membeli saya untuk Natal. Bayangkan masing-masing produk sebagai kata benda. Sekarang, jika mereka tersedia dalam representasi yang bisa dipahami mesin, Anda bisa melakukan banyak hal yang rapi.

Istri: Mengapa mesin tidak dapat memahami halaman web normal?

Ryan: Karena halaman web dirancang untuk dipahami oleh orang-orang. Mesin tidak peduli dengan tata letak dan gaya. Mesin pada dasarnya hanya membutuhkan data. Idealnya, setiap URL akan memiliki representasi yang dapat dibaca manusia dan mesin yang dapat dibaca. Ketika mesin DAPATKAN sumber daya, itu akan meminta mesin yang dapat dibaca. Ketika browser MENDAPATKAN sumber daya untuk manusia, ia akan meminta yang dapat dibaca manusia.

Istri: Jadi orang harus membuat format mesin untuk semua halaman mereka?

Ryan: Kalau itu berharga.

Dengar, kita sudah membicarakan ini dengan banyak abstraksi. Bagaimana kalau kita ambil contoh nyata. Anda seorang guru - di sekolah saya yakin Anda memiliki sistem komputer yang besar, atau tiga atau empat sistem komputer yang lebih memungkinkan, yang memungkinkan Anda mengelola siswa: kelas apa mereka, nilai apa yang mereka dapatkan, kontak darurat, informasi tentang buku-buku yang Anda ajarkan, dll. Jika sistem berbasis web, maka mungkin ada URL untuk masing-masing kata benda yang terlibat di sini: siswa, guru, kelas, buku, ruang, dll. Saat ini, dapatkan URL melalui browser memberi Anda halaman web. Jika ada representasi yang dapat dibaca mesin untuk setiap URL, maka akan sepele untuk memasang alat baru ke sistem karena semua informasi itu dapat dikonsumsi dengan cara standar. Ini juga akan membuat sedikit lebih mudah bagi masing-masing sistem untuk berbicara satu sama lain. Atau, Anda dapat membangun sistem negara bagian atau negara yang mampu berbicara dengan masing-masing sistem sekolah untuk mengumpulkan nilai ujian. Kemungkinannya tidak terbatas.

Masing-masing sistem akan mendapatkan informasi dari satu sama lain menggunakan HTTP GET sederhana. Jika satu sistem perlu menambahkan sesuatu ke sistem lain, itu akan menggunakan HTTP POST. Jika suatu sistem ingin memperbarui sesuatu di sistem lain, ia menggunakan PUT HTTP. Satu-satunya yang tersisa untuk mencari tahu adalah seperti apa data itu seharusnya.

Istri: Jadi ini yang sedang Anda dan semua orang komputer kerjakan sekarang? Memutuskan seperti apa data itu?

Ryan: Sedih, tidak. Sebaliknya, sebagian besar sibuk menulis lapisan spesifikasi rumit untuk melakukan hal-hal ini dengan cara yang berbeda yang hampir tidak bermanfaat atau fasih. Kata benda tidak universal dan kata kerja bukan polimorfik. Kami membuang puluhan tahun penggunaan lapangan nyata dan teknik yang sudah terbukti dan memulai kembali dengan sesuatu yang sangat mirip dengan sistem lain yang telah gagal di masa lalu. Kami menggunakan HTTP tetapi hanya karena itu membantu kami berbicara dengan jaringan dan petugas keamanan kami lebih sedikit. Kami berdagang kesederhanaan untuk alat dan penyihir mencolok.

Istri: Kenapa?

Ryan: Saya tidak tahu.

Istri: Mengapa kamu tidak mengatakan sesuatu?

Ryan: Mungkin saya akan.

Robert Harvey
sumber
1
Itu bacaan yang bagus. Jadi, http sedang digunakan oleh konvensi karena mudah. Satu-satunya hal yang saya tambahkan adalah sesuatu tentang kendala memori seperti yang Slawek tunjukkan, kami akan segera kehabisan sumber daya untuk situs web yang lebih besar. Mungkin suatu hari ketika sumber daya mesin besar dibandingkan dengan kebutuhan pengguna itu kita bisa memiliki internet stateful.
P.Brian.Mackey
5
Saya tidak akan terlalu takut menjadi kewarganegaraan; itu hanya cara pandang yang berbeda. Seiring waktu, Anda mungkin menemukan bahwa itu sebenarnya cara yang lebih masuk akal, terutama untuk aplikasi yang besar dan dapat diskalakan. Bagaimanapun, Anda selalu dapat menyimpan status dalam basis data Anda, dan mengambil status tersebut pada permintaan halaman berikutnya. Tanpa kewarganegaraan membuat Anda lebih berpikir dalam hal transaksi, daripada memperbarui sedikit keadaan.
Robert Harvey
2
Saya sangat dibutakan oleh pendekatan saya yang kuat untuk pemrograman sehingga saya melewatkan poin mendasar dalam artikel ini. Saya perlu menggedor moto "kewarganegaraan bukan cacat" ke dalam otak saya beberapa ratus kali ... Terima kasih atas komentar dan jawaban yang bagus.
P.Brian.Mackey
Apa referensi paragraf terakhir (5 baris dari akhir)? Saya punya ide, tetapi saya tidak ingin merasa seperti orang bodoh yang membuat anggapan.
Steven
1
@ Seven: Saya percaya paragraf mengacu pada hal-hal seperti SOAP , atau mungkin CORBA (ngeri).
Robert Harvey
6

Menurut Anda bagaimana mungkin untuk menyimpan keadaan miliaran miliar koneksi miliaran? :) Jadi, Anda hanya menyimpan negara di mana diperlukan, dalam sesi.

BTW: HTTP bukan tanpa koneksi.

Slawek
sumber
1
@ P. Sulit meyakinkan ketika referensi yang Anda kutip terbuka dengan: Artikel ini berisi kata-kata musang, frasa samar yang sering menyertai informasi yang bias atau tidak dapat diverifikasi.
chrisaycock
3
HTTP tidak terhubung. Anda mengirim permintaan HTTP, mendapatkan sesuatu kembali, sejauh menyangkut HTTP koneksi berakhir. Adalah mungkin bagi server untuk menghubungkan permintaan yang berbeda untuk membentuk suatu sesi, tetapi itu bukan properti inheren dari HTTP.
David Thornley
2
HTTP menggunakan TCP / IP sebagai transportasi (bukan UDP), tetapi itu adalah lapisan ISO OSI lain, dan Anda dapat memilikinya persistent connections, yang disebut tetap-hidup. Saya bukan ahli jaringan tetapi, Anda memiliki koneksi nyata dalam HTTP sebagian besar waktu :)
Slawek
2
Ok, jadi apa yang saya dapat dari ini adalah bahwa kepercayaan umum bahwa tanpa koneksi dapat disamakan dengan kewarganegaraan adalah salah. Saya pikir kita bisa sepakat bahwa http adalah stateless, atau lihat spesifikasi untuk melihat sendiri w3.org/TR/html401/interact/forms.html (cari stateless). Lihat juga RFC2616 untuk kewarganegaraan http ietf.org/rfc/rfc2616.txt . Ada koneksi, tetapi koneksi itu "relay buta".
P.Brian.Mackey
2
Koneksi virtual di web. Secara teknis, untuk memiliki koneksi yang benar, Anda harus memiliki kabel khusus yang menghubungkan Anda ke sisi lain, seperti kabel telepon (setidaknya di <90-an). Jika satu sisi 'terputus', yang lain tidak akan tahu kecuali ia menerima paket yang mengatakan bahwa pihak lain tidak mendengarkan lagi. Secara teori, paket itu mungkin tidak pernah tiba. Setelah waktu habis, server juga 'terputus'. Namun koneksi selalu virtual karena alasan ini.
Neil
4

Sebagai pengembang desktop, Anda mungkin lebih nyaman dengan pengalaman UI yang kaya. Pindah ke web bisa terasa seperti mengambil langkah mundur. Di dunia web, ada lebih sedikit kebebasan kreativitas dan itu dapat memberi Anda rasa kendala. Jangan biarkan itu membuat Anda kecewa! Ada beberapa hal di luar sana yang dapat membantu Anda melakukan transisi dan berikut adalah daftar singkatnya:

  1. Status dapat dibagikan tetapi sering dipegang di server dan direferensikan menggunakan token seperti id sesi, parameter URL, bidang tersembunyi atau nilai cookie.
  2. Model stateless sangat cocok untuk pemrosesan transaksi. Cobalah untuk membangun model Anda sedemikian rupa sehingga dapat mengurangi jumlah negara yang dibutuhkan. The ACID prinsip-prinsip proses transaksi dapat membantu Anda mencapai hal ini.
  3. Biasakan diri dengan pola MVC (jika Anda belum melakukannya). Ini akan membantu meningkatkan desain Anda dengan mempertahankan pemisahan masalah. Beberapa kerangka kerja populer seperti Struts (Java) dan MVC (.NET) dibangun di sekitar konsep ini.
  4. Pertimbangkan untuk menggunakan plugin seperti Java , Flash atau Silverlight untuk pengalaman UI yang super kaya. Untuk pengalaman semi-kaya, pertimbangkan untuk menggunakan pustaka berbasis java-script populer seperti JQuery atau AJAX .

Selamat pemrograman!

k rey
sumber
1
hanya catatan: hati-hati dengan akronim MVC; ini awalnya didefinisikan sebagai desain OO untuk aplikasi GUI, kemudian disisipkan ke dalam arsitektur lapisan untuk aplikasi web. Ini adalah dua hal yang sangat berbeda.
Javier
Anda menyarankan OP untuk terjun langsung ke teknologi yang memberikan beberapa solusi di web dengan menggunakan stateless daripada mempelajari dasar-dasarnya terlebih dahulu?
Tulains Córdova
3

Karena ada waktu di mana tidak ada jutaan halaman web. Karena ada masa ketika hanya universitas dan fasilitas penelitian yang memiliki beberapa halaman. Ada saat ketika tidak ada broadband, dan http dikomunikasikan dengan 1200 modem baud ditempatkan di atas telepon meja. Ada saat ketika "aplikasi web kaya" akan membutuhkan, dalam pandangan mereka, jumlah bandwidth yang konyol. Dan ingat, TCP / IP dibuat karena internet awal sangat tidak dapat diandalkan.

HTTP 1.0 sekitar awal 1990-an. Pikirkan bagaimana internet saat itu, dan mengapa mereka mendesainnya seperti yang mereka lakukan.

Apa namanya
sumber
Internet "terlambat" masih tidak bisa diandalkan.
Pemdas
@Pemdas - apa maksudmu internet "terlambat"?
P.Brian.Mackey
Hanya nit picking. Transmisi data masih tidak dapat diandalkan tanpa protokol seperti TCP dan bahkan TCP tidak dapat menjelaskan koneksi yang tidak tersedia.
Pemdas
3

Itu semua berevolusi. Internet ada sebelum browser web dan Web. Itu adalah pot bergelembung ftp, telnet, gopher, ping, jari dan beberapa bit dan bobs lainnya. Browser web pertama, Mosaic (? Saya pikir, sudah lama sekali, 1991 saya pikir, saya masih kuliah) bertindak sebagai semacam mishmash antara ftp dan penampil dokumen. Keajaiban terjadi karena Anda dapat memiliki tautan dalam dokumen yang akan menghasilkan dokumen baru.

Semua interaktivitas yang kita miliki sekarang telah berkembang selama 20 tahun berikutnya. Itu juga bukan evolusi yang bahagia. Kami memiliki perang browser, IE dan Netscape berusaha keras untuk mengendalikan standar (Sedikit penyederhanaan;)), dan berbagai pihak ketiga lainnya mulai memperkenalkan plug in untuk memungkinkan konten yang kaya. Java akan menjadi peluru ajaib dan tentu saja Flash. Apakah ada yang ingat dengan plugins VRML yang menjanjikan dunia 3d dan memberikan persis setengah lusin model 3d model Star Wars?

Saya agak terhanyut menjelang akhir, tetapi Anda mendapatkan idenya :)

Ian
sumber
Tidak apa-apa, banyak orang lain ikut terbawa suasana, terutama orang-orang Pemasaran. Di mana kita sekarang kecuali motif laba mentah? Masih beberapa geek "menghubungkan beberapa komputer" saya kira.
3

Alasan utama berkaitan dengan kombinasi asedemia yang meyakini tujuan HTTP adalah, dan untuk alasan skalabilitas. HTML pada awalnya dirancang untuk berbagi informasi atau tesis lintas batas akademik. Itu teks murni bergaya. Tidak sampai browser pertama memungkinkan Anda untuk menyajikan gambar yang orang mulai pikirkan di luar model itu.

Pertimbangan berikut memperkuat keputusan kewarganegaraan:

  • Interaksi tipikal adalah mengunduh cepat, dan membaca. Selama penundaan hingga permintaan berikutnya, soket akan diam.
  • Soket mengambil sumber daya sistem yang berharga. Jika kami tidak harus mempertahankan percakapan seperti yang Anda lakukan dengan SMTP, Anda dapat melakukan banyak hal untuk memiliki satu mesin menangani ribuan klien.
  • Mereka sudah belajar pelajaran berharga dari mengelola akun shell jarak jauh, NFS, SMTP dan protokol koneksi stateful lainnya.

Ketika halaman web menjadi lebih kompleks dan menyertakan banyak grafik dan stylesheet, HTTP diubah dengan bendera "tetap hidup". Itu akan membuat soket tetap hidup dan memungkinkan klien untuk meminta beberapa sumber daya dengan percakapan yang sama.

Mengingat model penggunaan internet saat ini, keputusan awal masih berlaku. Kadang-kadang bisa merepotkan, tetapi beberapa interaksi kecil dan terkuantisasi dengan skala server lebih baik daripada soket idle.

Berin Loritsch
sumber
3

Jika yang Anda maksud adalah browser dua arah.

Alasan keamanan.

Misalnya SPAM !.

Mengambil Komunikasi Dua Arah Di Web Ke Tingkat Selanjutnya

Kalau tidak, internet menjalankan TCP / IP (dua protokol) dan UDP.

Protokol Kontrol Transmisi(TCP) adalah salah satu protokol inti dari Internet Protocol Suite. TCP adalah salah satu dari dua komponen asli suite, yang melengkapi Internet Protocol (IP), dan oleh karena itu seluruh rangkaian tersebut biasa disebut dengan TCP / IP. TCP menyediakan layanan pertukaran data secara langsung antara dua host di jaringan yang sama, sedangkan IP menangani pengalamatan dan perutean pesan di satu atau beberapa jaringan. Secara khusus, TCP menyediakan pengiriman byte yang andal dan teratur dari suatu program di satu komputer ke program lain di komputer lain. TCP adalah protokol yang diandalkan oleh aplikasi Internet utama, aplikasi seperti World Wide Web, e-mail, dan transfer file. Aplikasi lain, yang tidak memerlukan layanan aliran data yang andal,

Protokol Internet(IP) adalah protokol komunikasi utama yang digunakan untuk menyampaikan datagram (paket) di internetwork menggunakan Internet Protocol Suite. Bertanggung jawab untuk merutekan paket melintasi batas-batas jaringan, itu adalah protokol utama yang membangun Internet. IP adalah protokol utama dalam Lapisan Internet dari Internet Protocol Suite dan memiliki tugas untuk mengirimkan datagram dari host sumber ke host tujuan hanya berdasarkan alamat mereka. Untuk tujuan ini, IP mendefinisikan metode dan struktur pengalamatan untuk enkapsulasi datagram. Secara historis, IP adalah layanan datagram tanpa sambungan dalam Program Kontrol Transmisi asli yang diperkenalkan oleh Vint Cerf dan Bob Kahn pada tahun 1974, yang lainnya adalah Transmission Control Protocol (TCP) yang berorientasi koneksi. Internet Protocol Suite sering disebut sebagai TCP / IP.

Amir Rezaei
sumber
3

Dalam aplikasi desktop, pengguna diasumsikan melakukan beberapa tugas, dengan awal dan akhir yang ditentukan. Dalam aplikasi semacam itu, cukup masuk akal (tidak banyak, sebenarnya) bagi pengguna untuk masuk ke server apa pun yang menyediakan data mereka, dan tetap masuk sampai selesai.

Interaksi web tidak (biasanya) mengikuti model yang sama. Di situs eCommerce, misalnya, pengguna dapat tiba di deskripsi produk sebagai hasil pencarian Google, dan segera meninggalkan halaman itu untuk melihat penawaran situs lain dari produk yang sama. Atau dia mungkin memulai proses checkout, kemudian memutuskan bahwa produk itu terlalu mahal, dan meninggalkannya setengah jalan. Ide dasar "hypertext" menyiratkan kemampuan dan harapan untuk melompat dari satu lokasi ke lokasi lain.

Koneksi permanen menghabiskan sumber daya. Mungkin hanya soket jaringan, mungkin kumpulan permintaan basis data yang diuraikan; itu semua tergantung aplikasi. Mengingat pengguna yang dapat menghilang kapan saja, itu tidak masuk akal untuk menjaga sumber daya tersebut dilakukan.

Dalam praktiknya, tidak ada kebutuhan nyata bagi pengguna untuk memiliki koneksi permanen. Aplikasi web memelihara koneksi ke sumber daya apa pun (misalnya, basis data) yang dibutuhkan, dan membagikannya di antara semua permintaan pengguna. Kerangka kerja aplikasi web menyediakan sesi, yang merupakan tempat terbatas waktu untuk menyimpan data per pengguna untuk permintaan yang berbeda. Satu-satunya hal yang tidak dapat Anda lakukan (dengan mudah) adalah memiliki transaksi yang dikendalikan klien yang berjalan lama, tetapi itu adalah ide yang buruk bahkan dalam aplikasi yang mempertahankan koneksi.

Segera
sumber
2

Internet tidak harus tanpa kewarganegaraan - sebenarnya ketika Anda melihat Java EE - mereka memiliki EJB Stateful dan EJB Stateless.

Alasan utama mengapa pengembang merekomendasikan menggunakan arsitektur stateless adalah karena skalabilitas. Bayangkan mencoba mempertahankan status semua pengguna Anda setelah Anda menambah dan menjatuhkan server untuk mendukung lalu lintas Anda.

Sangat sulit untuk mengembangkan arsitektur tanpa kewarganegaraan. Poin utama adalah menjaga status sesedikit mungkin (biasanya id pengguna - lebih disukai dalam cookie) dan mengubah database sesuai kebutuhan.

Brian D.
sumber
1

Saya pikir itu dimulai seperti itu dan terus seperti itu. Sekarang ada begitu banyak infrastruktur yang dibangun di sekitarnya, tidak mungkin untuk mengubahnya.

Mungkin mulai stateless karena koneksi pada awalnya kurang andal, dan juga bandwidth lebih kecil. Jika Anda tidak memiliki banyak koneksi aktif, Anda dapat menangani lebih banyak lalu lintas dengan lebih mudah.

Harap edit atau tinggalkan komentar jika Anda memiliki informasi yang lebih baik, atau lebih baik lagi, kirim jawaban Anda sendiri!

Michael K.
sumber
1

Karena server menyediakan layanan (namanya). Anda membuat permintaan dan menerima jawaban - hanya itu yang ada di sana.

Berkenaan dengan membuat transisi ke pengembangan web saya percaya Formulir Web ASP.NET akan melakukannya dengan cara yang akan lebih dimengerti oleh Anda - tapi itu hanya karena menyembunyikan apa yang sebenarnya terjadi di bawah lapisan abstraksi.

billy.bob
sumber
Saya adalah pengembang WinForms yang pernah mencoba untuk melakukan transisi ke ASP.NET webforms. Pengalaman itu tidak menyenangkan. Saya lebih suka ASP.NET MVC.
Robert Harvey
Ah benar - well saya mulai di PHP lalu pindah. Butuh waktu sekitar 6 bulan untuk berhenti membuat HTML dalam loop
billy.bob
1

Banyak yang bisa dipahami dengan menganalisis nama HTTP (HyperText Transfer Protocol). Itu tidak pernah dirancang untuk menjadi protokol UI yang kaya. Ide awalnya adalah berbagi dokumen dengan tautan di antara mereka. Saya meminta Anda sebuah dokumen, Anda membalas dengan salinan dokumen itu.

Awalnya HTTP hanya memiliki satu kata kerja GET. Dalam hal itu, itu dirancang untuk konten statis. Mengapa Anda perlu menyatakan ketika semua yang Anda lakukan adalah meminta dokumen yang dibagikan seseorang? Dan itulah mengapa HTTP tidak memiliki kewarganegaraan ... karena asalnya.

Michael Brown
sumber