Saya tertarik dengan artikel yang memiliki beberapa informasi konkret tentang desain stateless dan stateful dalam pemrograman. Saya tertarik karena saya ingin mempelajarinya lebih lanjut, tetapi saya benar-benar tidak dapat menemukan artikel bagus tentangnya. Saya telah membaca lusinan artikel di web yang secara samar-samar membahas subjek, atau mereka berbicara tentang server dan sesi web - yang juga tentang stateful vs stateless, tetapi saya tertarik dengan desain atribut stateless vs stateful dalam pengkodean . Contoh: Saya pernah mendengar bahwa kelas-BL tidak memiliki kewarganegaraan menurut desain, kelas entitas (atau setidaknya itulah yang saya sebut mereka - seperti Person (id, name, ..)) adalah stateful, dll.
Saya rasa ini penting untuk diketahui, karena saya yakin jika saya dapat memahaminya, saya dapat menulis kode yang lebih baik (mis. Dalam pikiran granularitas).
Bagaimanapun, sangat singkat, inilah yang saya ketahui tentang stateful vs stateless:
Stateful (seperti WinForms): Menyimpan data untuk digunakan lebih lanjut, tetapi membatasi skalabilitas aplikasi, karena dibatasi oleh CPU atau batas memori
Stateless (Seperti ASP.NET - meskipun ASP mencoba menjadi stateful dengan Kondisi Tampilan): Setelah tindakan selesai, data akan ditransfer, dan instance akan dikembalikan ke kumpulan utas (Amorf).
Seperti yang Anda lihat, informasinya cukup kabur dan terbatas (dan cukup fokus pada interaksi server), jadi saya akan sangat berterima kasih jika Anda dapat memberi saya beberapa informasi yang lebih enak :)
sumber
Tanpa kewarganegaraan berarti tidak ada memori masa lalu. Setiap transaksi dilakukan seolah-olah baru pertama kali dilakukan.
Stateful artinya ada memori masa lalu. Transaksi sebelumnya akan diingat dan dapat mempengaruhi transaksi saat ini.
Tanpa kewarganegaraan:
Stateful:
Merujuk dari: /software/101337/whats-the-difference-between-stateful-and-stateless
sumber
Sebuah stateful aplikasi adalah salah satu yang menyimpan informasi tentang apa yang telah terjadi atau berubah sejak mulai berjalan. Setiap info publik tentang "mode" apa itu, atau berapa banyak record yang telah diproses, atau apa pun, membuatnya menjadi stateful.
Aplikasi tanpa negara tidak mengekspos informasi itu. Mereka memberikan respons yang sama ke permintaan, fungsi, atau panggilan metode yang sama, setiap saat. HTTP tidak memiliki kewarganegaraan dalam bentuk aslinya - jika Anda melakukan GET ke URL tertentu, Anda (secara teoritis) mendapatkan respons yang sama setiap saat. Pengecualian tentu saja adalah ketika kita mulai menambahkan statefulness di atas, misalnya dengan aplikasi web ASP.NET :) Tetapi jika Anda memikirkan situs web statis dengan hanya file dan gambar HTML, Anda akan tahu apa yang saya maksud.
sumber
Kata sifat Stateful atau Stateless hanya mengacu pada keadaan percakapan, tidak ada hubungannya dengan konsep fungsi yang memberikan keluaran yang sama untuk masukan yang sama. Jika demikian, aplikasi web dinamis apa pun (dengan database di belakangnya) akan menjadi layanan stateful, yang jelas salah. Dengan pemikiran ini, jika saya mempercayakan tugas untuk menjaga status percakapan dalam teknologi yang mendasarinya (seperti sesi coockie atau http), saya menerapkan layanan stateful, tetapi jika semua informasi yang diperlukan (konteks) diteruskan sebagai parameter saya ' m menerapkan layanan tanpa kewarganegaraan. Perlu diperhatikan bahwa meskipun parameter yang diteruskan adalah "pengenal" dari status percakapan (mis. Tiket atau sessionId) kami masih beroperasi di bawah layanan stateless,
sumber
session identifier
setiap permintaan dapat dianggap tanpa kewarganegaraan. Menurut saya, kasus seperti itu akan dianggap stateful. Namun, jika Anda selalu memberikantoken
untuk pengguna tetapi tidak memiliki status lain apa pun, selain status tanpa kewarganegaraan. Tapi terasa XD stateful. Ini sangat membingungkan.Uang yang ditransfer secara online dari satu rekening ke rekening lain adalah stateful, karena rekening penerima mempunyai informasi tentang pengirim. Menyerahkan uang tunai dari seseorang kepada orang lain, transaksi ini tidak memiliki kewarganegaraan, karena setelah uang tunai diterima, identitas pemberi tidak ada dengan uang tunai tersebut.
sumber
Hanya untuk menambahkan kontribusi orang lain .... Cara lain adalah melihatnya dari server web dan sudut pandang konkurensi ...
HTTP bersifat stateless karena suatu alasan ... Dalam kasus server web, menjadi stateful berarti harus mengingat 'status' pengguna untuk koneksi terakhir mereka, dan / atau menjaga koneksi terbuka ke pemohon. Itu akan sangat mahal dan 'menegangkan' dalam aplikasi dengan ribuan koneksi bersamaan ...
Menjadi stateless dalam hal ini memiliki penggunaan sumber daya yang jelas dan efisien ... yaitu mendukung koneksi dalam satu contoh permintaan dan respons ... Tidak ada overhead untuk menjaga koneksi tetap terbuka dan / atau mengingat apa pun dari permintaan terakhir ...
sumber
Kita membuat Webapps statefull dengan menimpa perilaku stateless HTTP dengan menggunakan objek sesi. Saat kita menggunakan objek sesi, status dijalankan tetapi kita masih menggunakan HTTP saja.
sumber
Saya memiliki keraguan yang sama tentang desain kelas stateless v / s stateful dan melakukan penelitian. Baru saja selesai dan temuan saya telah diposting di blog saya
sumber