เว็บแอปพลิเคชันควรไร้สัญชาติ
เรื่องไร้สาระ คำขอของเว็บควรไร้สัญชาติ หรืออย่างถูกต้องมากขึ้นคำขอของเว็บนั้นไร้สัญชาติ
แต่การบอกว่าการสมัครทั้งหมดควรไร้สัญชาตินั้นไร้สาระสมบูรณ์
คำขอแต่ละครั้งจะถือเป็นธุรกรรมที่เป็นอิสระ
ใช่ว่า หรือถูกต้องมากขึ้นใช่จำเป็น ผ่าน HTTP แต่ละคำร้องขอไม่ขึ้นอยู่กับคำร้องขออื่นทั้งหมด การเพิ่ม "statefulness" ลงใน HTTP ต้องให้คุณระบุจัดเก็บและดึงข้อมูล "state" สำหรับแต่ละคำขอ "stateful" อย่างชัดเจน และนั่นต้องใช้ความพยายามลดประสิทธิภาพและเพิ่มความซับซ้อน
และสำหรับเหตุผลดังกล่าวขอให้แต่ละคนสามารถเป็นคนไร้สัญชาติ "ควร" จะไร้สัญชาติ
ดังนั้นควรหลีกเลี่ยงเซสชันและคุกกี้ (เนื่องจากทั้งคู่มีสถานะเป็นของรัฐ) วิธีที่ดีกว่าคือใช้โทเค็น
บางสิ่ง: โทเค็นสามารถเชื่อมโยงกับที่เก็บข้อมูลเซสชันได้เช่นกัน คุกกี้ไม่จำเป็นต้องเชื่อมโยงกับที่เก็บข้อมูลเซสชัน สัญญาณมักจะถูกเก็บไว้ในคุกกี้ และบางครั้งเซสชั่นก็เป็นเครื่องมือที่เหมาะสมสำหรับงาน
นั่นหมายความว่าอย่างน้อยบางครั้งเซสชันและคุกกี้ก็เหมือนกับ "ดีกว่า" เหมือนกับโทเค็น!
[โทเค็น] ไร้สัญชาติเนื่องจากไม่มีสิ่งใดถูกเก็บไว้บนเซิร์ฟเวอร์
ก็แค่นั้นแหละ นั่นคือสิ่งที่เป็น "ความไร้สัญชาติ" ความเชื่อเป็นจริงเกี่ยวกับ แม้ว่าจะชัดเจนแล้วมันไม่เกี่ยวกับการจัดเก็บ "ไม่มีอะไร" บนเซิร์ฟเวอร์ แต่เกี่ยวกับการไม่เก็บสถานะเซสชันไว้บนเซิร์ฟเวอร์
ตัวอย่างกล่องจดหมาย Gmail ของฉันอยู่ในสถานะใช้งาน และมันน่ากลัวดีกว่าจะถูกเก็บไว้บนเซิร์ฟเวอร์! แต่ไม่ใช่สถานะเซสชัน
ดังนั้นแทนที่จะมีเซิร์ฟเวอร์ที่สามารถใช้ตัวระบุขนาดเล็กและคิดออกว่าคุณเป็นใครและอื่น ๆ แอปพลิเคชันไร้สัญชาติต้องการได้รับการเตือนว่าคุณเป็นใครและสิ่งที่คุณทำกับคำขอเลือดทุกครั้ง สถานะแอปพลิเคชันยังคงมีอยู่ไคลเอนต์มีหน้าที่รับผิดชอบในการระงับ
ทีนี้ถ้าสถานะนั้นมีขนาดเล็กอาจเป็นไปได้ ในบางกรณีมันดีมาก
และแน่นอนว่ามีบางสิ่งที่เราคาดหวังว่าจะเป็นของรัฐ ...
เว็บแอพพลิเคชั่นจะไร้สัญชาติได้อย่างไรเมื่อมีข้อมูลที่ถูกเก็บไว้สำหรับเซสชันของฉัน (เช่นรายการในตะกร้าสินค้า) จริง ๆ แล้วสิ่งเหล่านี้ถูกจัดเก็บในฐานข้อมูลที่ไหนสักแห่งแล้วถูกกำจัดเป็นระยะ ๆ ?
สองตัวเลือก ไม่ว่าคุณจะมีเซสชันหรือไม่ก็ปฏิเสธ!
... แต่อย่างจริงจัง ปกติคุณจะไม่เก็บรถเข็นไว้ในคุกกี้ บางอย่างเช่นตะกร้าสินค้าอาจถูกจัดเก็บในเซสชัน "ดั้งเดิม" หรือจะถูกเก็บไว้เป็นCart
วัตถุโดยมี ID บางประเภทที่เซิร์ฟเวอร์ใช้เพื่อดึงลงในคำขอที่ตามมา เป็นเช่น .. เอ่อ ... ... เอ่อ ... เซสชั่น
สำหรับการใช้งานจริงอย่างจริงจัง: มีระดับใหญ่ที่ "statefulness" เป็นเพียงสิ่งที่เราเรียกว่าเมื่อตัวแทนการสื่อสารสองคนสามารถบริบทข้อความในการสนทนา และเซสชั่นตามธรรมเนียมเข้าใจเป็นเพียงสิ่งที่เรามักจะเรียกกลไกที่เกิดขึ้น
ฉันขอยืนยันว่าไม่ว่าคุณจะใช้โทเค็นหรือ "เซสชัน" สำหรับการร้องขอเซิร์ฟเวอร์ของคุณแต่ละครั้งคุณต้องบริบทการร้องขอนั้นเพื่อตอบสนองหรือไม่ หากไม่จำเป็นต้องใช้บริบทอย่าดึงข้อมูลมา หากบริบทเป็นสิ่งจำเป็นคุณควรอยู่ใกล้ ๆ
และจากคำถามที่เกี่ยวข้องเว็บไซต์หลัก (Amazon, Google, Facebook, Twitter และอื่น ๆ ) ไร้สัญชาติจริงๆหรือ? พวกเขาใช้โทเค็นหรือคุกกี้ (หรือทั้งสองอย่าง)?
อาจเป็นได้ทั้ง แต่โดยทั่วไปแล้วพวกเขาทำสิ่งที่คุณทำ: พวกเขาตั้งค่าคุกกี้เพื่อระบุ "สถานะ" บันทึกในฐานข้อมูล "เซสชั่น" ขนาดใหญ่
เมื่อเป็นไปได้ฉันสงสัยว่าพวกเขาดันการอ้างตัวตนพื้นฐานใน "โทเค็น" ระยะสั้นเพื่อหลีกเลี่ยงความขัดแย้งที่ไม่จำเป็นในการจัดเก็บแบบรวมศูนย์ แต่ความจริงที่ว่าบริการเหล่านี้จำนวนมากอนุญาตให้ฉัน "ออกจากระบบของสถานที่อื่น ๆ ทั้งหมด" เป็นตัวบ่งชี้ที่ดีว่าหากพวกเขากำลังใช้โทเค็นเลยอย่างน้อยพวกเขาก็ "สนับสนุน" อย่างน้อยด้วยรูปแบบเซสชันกึ่งดั้งเดิม .