ฉันเปลี่ยนจากการเป็นผู้พัฒนาเดสก์ท็อปไปเป็นนักพัฒนาเว็บและฉันมีปัญหาในการทำความเข้าใจว่าทำไม HTTP จึงไร้สัญชาติ อะไรคือสาเหตุของมัน? มีวิธีใดบ้างที่นักพัฒนาเดสก์ท็อปอย่างฉันสามารถเปลี่ยนแปลงสภาพแวดล้อมการพัฒนาแบบไร้รัฐได้?
ฉันเปลี่ยนจากการเป็นผู้พัฒนาเดสก์ท็อปไปเป็นนักพัฒนาเว็บและฉันมีปัญหาในการทำความเข้าใจว่าทำไม HTTP จึงไร้สัญชาติ อะไรคือสาเหตุของมัน? มีวิธีใดบ้างที่นักพัฒนาเดสก์ท็อปอย่างฉันสามารถเปลี่ยนแปลงสภาพแวดล้อมการพัฒนาแบบไร้รัฐได้?
คำตอบ:
นี่คือคำอธิบายที่ดีที่สุดของอินเทอร์เน็ตไร้สัญชาติที่ฉันได้เห็น:
ฉันอธิบายREST to My Wife
http://www.looah.com/source/view/2284
ภรรยา:ใครคือรอยฟีลดิง?
Ryan:ผู้ชายบางคน เขาฉลาด
ภรรยา:โอ้ เขาทำอะไร?
Ryan:เขาช่วยเขียนเว็บเซิร์ฟเวอร์เครื่องแรกจากนั้นทำการค้นคว้าหลายครั้งเพื่ออธิบายว่าทำไมเว็บจึงใช้งานได้ดี ชื่อของเขาอยู่ในข้อกำหนดสำหรับโปรโตคอลที่ใช้ในการรับหน้าจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์ของคุณ
ภรรยา:มันทำงานยังไง?
Ryan:เว็บเหรอ?
ภรรยา:ใช่แล้ว
Ryan:อืม มันน่าทึ่งมากจริงๆ และสิ่งที่ตลกก็คือมันไม่คุ้มค่ามากนัก โพรโทคอลที่ฉันกำลังพูดถึง HTTP นั้นสามารถใช้กับทุกสิ่งที่เป็นระเบียบที่ผู้คนไม่สนใจด้วยเหตุผลบางอย่าง
ภรรยา:คุณหมายถึง http เหมือนจุดเริ่มต้นของสิ่งที่ฉันพิมพ์ลงในเบราว์เซอร์?
Ryan:ใช่แล้ว ส่วนแรกนั้นบอกเบราว์เซอร์ว่าจะใช้โปรโตคอลใด สิ่งที่คุณพิมพ์เข้าไปนั้นเป็นหนึ่งในนวัตกรรมที่สำคัญที่สุดในประวัติศาสตร์ของการคำนวณ
ภรรยา:ทำไม
ไรอัน:เพราะมันสามารถอธิบายตำแหน่งของบางสิ่งบางอย่างในโลกจากที่ใดก็ได้ในโลก มันเป็นรากฐานของเว็บ คุณสามารถคิดได้ว่ามันเหมือนกับพิกัด GPS สำหรับความรู้และข้อมูล
ภรรยา:สำหรับหน้าเว็บเหรอ?
Ryan:เพื่ออะไรจริงๆ ชายคนนั้นชื่อ Roy Fielding เขาพูดถึงสิ่งต่าง ๆ มากมายที่ชี้ไปในการวิจัยที่ฉันกำลังพูดถึง เว็บถูกสร้างในสไตล์สถาปัตยกรรมที่เรียกว่า REST REST ให้คำจำกัดความของทรัพยากรซึ่งเป็นสิ่งที่สิ่งเหล่านั้นชี้ไป
ภรรยา:หน้าเว็บเป็นแหล่งข้อมูลใช่ไหม
ไรอัน:ชนิดของ หน้าเว็บเป็นตัวแทนของทรัพยากร ทรัพยากรเป็นเพียงแนวคิด URL - สิ่งที่คุณพิมพ์ลงในเบราว์เซอร์ ...
ภรรยา:ฉันรู้ว่า URL คืออะไร ..
Ryan:โอ้ใช่แล้ว พวกนั้นบอกเบราว์เซอร์ว่ามีแนวคิดอยู่ที่ไหนซักแห่ง เบราว์เซอร์สามารถไปขอการแสดงแนวคิดที่เฉพาะเจาะจง เบราว์เซอร์จะถามถึงการแสดงแนวคิดของเว็บเพจ
ภรรยา:มีตัวแทนประเภทอื่นอีกไหม?
Ryan:จริงๆแล้วการเป็นตัวแทนเป็นหนึ่งในสิ่งเหล่านี้ที่ไม่ได้ใช้บ่อยนัก ในกรณีส่วนใหญ่ทรัพยากรมีเพียงตัวแทนเดียว แต่เราหวังว่าการเป็นตัวแทนจะถูกนำมาใช้มากขึ้นในอนาคตเพราะมีรูปแบบใหม่ ๆ มากมายโผล่ขึ้นมาทั่วสถานที่
ภรรยา:อะไรนะ?
Ryan:อืม มีแนวคิดนี้ที่ผู้คนกำลังเรียกบริการเว็บ มันหมายถึงสิ่งต่าง ๆ มากมายสำหรับผู้คนมากมาย แต่แนวคิดพื้นฐานคือเครื่องสามารถใช้เว็บได้เหมือนที่คนทำ
ภรรยา:นี่เป็นอีกเรื่องของหุ่นยนต์หรือไม่
Ryan:ไม่ไม่ได้จริงๆ ฉันไม่ได้หมายความว่าเครื่องจะนั่งลงที่โต๊ะทำงานและท่องเว็บ แต่คอมพิวเตอร์สามารถใช้โปรโตคอลเดียวกันนี้เพื่อส่งข้อความไปมาระหว่างกันได้ เราทำมานานแล้ว แต่ไม่มีเทคนิคใดที่เราใช้ในปัจจุบันทำงานได้ดีเมื่อคุณต้องการพูดคุยกับเครื่องจักรทั้งหมดในโลกนี้
ภรรยา:ทำไมล่ะ
Ryan:เพราะพวกมันไม่ได้ถูกออกแบบมาให้ใช้แบบนั้น เมื่อฟีลดิงและเพื่อนของเขาเริ่มสร้างเว็บความสามารถในการพูดคุยกับเครื่องใดก็ได้ในโลกเป็นปัญหาหลัก เทคนิคส่วนใหญ่ที่เราใช้ในที่ทำงานเพื่อให้คอมพิวเตอร์พูดคุยกันไม่มีข้อกำหนดเหล่านั้น คุณแค่ต้องคุยกับเครื่องจักรกลุ่มเล็ก ๆ
ภรรยา:และตอนนี้คุณต้องคุยกับเครื่องจักรทั้งหมดเหรอ?
ไรอัน:ใช่ - และอีกมาก เราต้องสามารถพูดคุยกับเครื่องจักรทั้งหมดเกี่ยวกับสิ่งที่อยู่ในเครื่องอื่น ๆ ทั้งหมด ดังนั้นเราจึงต้องการวิธีการให้เครื่องหนึ่งบอกเครื่องอื่นเกี่ยวกับทรัพยากรที่อาจอยู่ในเครื่องอื่น
ภรรยา:อะไรนะ?
Ryan:สมมติว่าคุณกำลังพูดกับน้องสาวของคุณและเธอต้องการยืมคนกวาดหรือสิ่งอื่น แต่คุณไม่มีมัน - แม่ของคุณมีมัน ดังนั้นคุณบอกให้พี่สาวของคุณได้รับจากแม่ของคุณแทน สิ่งนี้เกิดขึ้นตลอดเวลาในชีวิตจริงและเกิดขึ้นตลอดเวลาที่เครื่องจักรเริ่มพูดคุยด้วย
ภรรยา:แล้วเครื่องจักรจะบอกกันว่าอะไรอยู่ที่ไหน
Ryan: URL แน่นอน หากทุกสิ่งที่เครื่องจำเป็นต้องพูดถึงมี URL ที่สอดคล้องกันคุณได้สร้างคำนามเทียบเท่ากับเครื่อง ที่คุณและฉันและส่วนที่เหลือของโลกได้ตกลงที่จะพูดคุยเกี่ยวกับคำนามในบางวิธีเป็นสิ่งสำคัญสวยใช่มั้ย?
ภรรยา:ใช่แล้ว
Ryan:เครื่องจักรไม่ได้มีคำนามสากล - นั่นเป็นเหตุผลที่พวกเขาดูด ภาษาการเขียนโปรแกรมฐานข้อมูลหรือระบบอื่น ๆ ทุกชนิดมีวิธีพูดคุยเกี่ยวกับคำนามที่แตกต่างกัน นั่นเป็นเหตุผลว่าทำไม URL จึงมีความสำคัญ มันทำให้ระบบทั้งหมดเหล่านี้บอกกันและกันเกี่ยวกับคำนามของกันและกัน
ภรรยา:แต่เมื่อฉันดูหน้าเว็บฉันไม่คิดอย่างนั้น
Ryan:ไม่มีใครทำ ยกเว้น Fielding และหยิบของคนอื่น นั่นเป็นเหตุผลที่เครื่องยังคงดูด
ภรรยา:แล้วคำกริยาคำสรรพนามและคำคุณศัพท์ล่ะ?
Ryan:ตลกที่คุณถามเพราะนั่นเป็นอีกแง่มุมหนึ่งของ REST คำกริยาก็ดีอยู่ดี
ภรรยา:ฉันแค่ล้อเล่น
Ryan:มันเป็นเรื่องตลก แต่จริง ๆ แล้วมันไม่ใช่เรื่องตลกเลย คำกริยามีความสำคัญ มีแนวคิดที่ทรงพลังในการเขียนโปรแกรมและทฤษฎี CS ที่เรียกว่า polymorphism นั่นเป็นวิธีที่เกินบรรยายว่าคำนามต่าง ๆ สามารถใช้คำกริยาเดียวกันกับพวกเขาได้
ภรรยา:ฉันไม่เข้าใจ
Ryan:อืม .. ดูที่โต๊ะกาแฟ คำนามคืออะไร? ถ้วยถาดหนังสือพิมพ์รีโมท ทีนี้คุณสามารถทำอะไรกับทุกสิ่งเหล่านี้บ้าง
ภรรยา:ฉันไม่เข้าใจ ...
ไรอัน:คุณสามารถหามาได้ใช่ไหม คุณสามารถรับพวกเขา คุณสามารถเคาะพวกเขา คุณสามารถเผาไหม้พวกเขา คุณสามารถใช้คำกริยาที่แน่นอนเหล่านั้นกับวัตถุใด ๆ ที่อยู่ที่นั่น
ภรรยา:โอเค ... งั้นเหรอ?
Ryan:ก็สำคัญนะ ถ้าหากฉันสามารถพูดกับคุณได้ว่า "หยิบถ้วย" และ "หยิบหนังสือพิมพ์" และ "เรียกใช้รีโมท" ถ้าหากเราต้องการคำกริยาที่แตกต่างกันสำหรับคำนามแต่ละคำ ฉันไม่สามารถใช้คำว่า "รับ" ได้ในระดับสากล แต่ต้องคิดคำใหม่สำหรับการรวมคำกริยา / คำนาม
ภรรยา:ว้าว! แปลก.
Ryan:ใช่แล้วมันคือ สมองของเราฉลาดพอที่จะรู้ว่าสามารถใช้คำกริยาเดียวกันกับคำนามที่แตกต่างกัน คำกริยาบางคำมีความเฉพาะเจาะจงมากกว่าคำอื่น ๆ และใช้กับคำนามชุดเล็กเท่านั้น ตัวอย่างเช่นฉันขับรถไม่ได้และฉันไม่สามารถดื่มรถยนต์ได้ แต่คำกริยาบางคำเกือบเป็นสากลเช่น GET, PUT และ DELETE
ภรรยา:คุณไม่สามารถลบถ้วยได้
Ryan:ก็โอเค แต่คุณสามารถทิ้งมันไปได้ นั่นเป็นเรื่องตลกอีกใช่มั้ย
ภรรยา:ใช่แล้ว
Ryan:ดังนั้น HTTP - โปรโตคอลนี้ Fielding และเพื่อนของเขาสร้างขึ้น - ทั้งหมดเกี่ยวกับการใช้คำกริยากับคำนาม ตัวอย่างเช่นเมื่อคุณไปที่หน้าเว็บเบราว์เซอร์จะใช้ HTTP GET บน URL ที่คุณพิมพ์เข้าและกลับมาเป็นหน้าเว็บ
หน้าเว็บมักจะมีภาพใช่มั้ย เหล่านี้เป็นทรัพยากรที่แยกจากกัน เว็บเพจระบุ URL ไปยังรูปภาพและเบราว์เซอร์จะดำเนินการและทำ HTTP GETs เพิ่มเติมจนกว่าจะได้รับทรัพยากรทั้งหมดและแสดงหน้าเว็บ แต่สิ่งสำคัญที่นี่คือคำนามชนิดต่าง ๆ สามารถได้รับการปฏิบัติเหมือนกัน คำนามไม่ว่าจะเป็นรูปภาพ, ข้อความ, วิดีโอ, mp3, สไลด์โชว์หรืออะไรก็ตาม ฉันสามารถรับทุกสิ่งเหล่านี้ด้วยวิธีเดียวกันกับที่ได้รับ URL
ภรรยา:ฟังดูเหมือน GET เป็นคำกริยาที่สำคัญมาก
Ryan:มันคือ โดยเฉพาะอย่างยิ่งเมื่อคุณใช้งานเว็บเบราว์เซอร์เพราะเบราว์เซอร์เพิ่งรับของ ๆ พวกเขาไม่ได้มีปฏิสัมพันธ์กับทรัพยากรประเภทอื่นอีกมาก นี่เป็นปัญหาเนื่องจากมีคนจำนวนมากคิดว่า HTTP เป็นเพียงการรับ แต่ HTTP เป็นโปรโตคอลวัตถุประสงค์ทั่วไปสำหรับการใช้คำกริยากับคำนาม
ภรรยา:เท่ห์ แต่ฉันก็ยังไม่เห็นว่ามันจะเปลี่ยนแปลงอะไร คุณต้องการคำนามและคำกริยาในรูปแบบใด?
Ryan:คำนามก็อยู่ที่นั่น แต่ไม่ใช่ในรูปแบบที่ถูกต้อง
ลองนึกถึงเมื่อคุณท่องไปรอบ ๆ amazon.com กำลังมองหาสิ่งที่จะซื้อฉันสำหรับคริสต์มาส ลองนึกภาพแต่ละผลิตภัณฑ์ว่าเป็นคำนาม ตอนนี้ถ้าพวกเขามีตัวแทนที่เครื่องเข้าใจคุณสามารถทำสิ่งต่าง ๆ ได้อย่างเรียบร้อย
ภรรยา:ทำไมเครื่องไม่เข้าใจหน้าเว็บปกติ
Ryan:เพราะหน้าเว็บได้รับการออกแบบให้คนเข้าใจ เครื่องไม่สนใจเกี่ยวกับเค้าโครงและสไตล์ เครื่องจักรโดยทั่วไปต้องการเพียงแค่ข้อมูล ตามหลักการแล้ว URL ทุกอันจะมีมนุษย์ที่อ่านได้และเครื่องที่อ่านได้ เมื่อเครื่องได้รับทรัพยากรเครื่องจะถามหาเครื่องที่อ่านได้ เมื่อเบราว์เซอร์ได้รับทรัพยากรสำหรับมนุษย์มันจะถามหามนุษย์ที่สามารถอ่านได้
ภรรยา:ดังนั้นผู้คนจะต้องสร้างรูปแบบเครื่องจักรสำหรับทุกหน้าของพวกเขา?
Ryan:ถ้ามันมีค่า
ดูสิเราได้พูดถึงสิ่งนี้ด้วยสิ่งที่เป็นนามธรรมมากมาย วิธีการเกี่ยวกับเรานำตัวอย่างจริง คุณเป็นครู - ที่โรงเรียนฉันคิดว่าคุณมีระบบคอมพิวเตอร์ขนาดใหญ่หรือระบบคอมพิวเตอร์สามหรือสี่ที่มีโอกาสมากขึ้นที่ช่วยให้คุณจัดการนักเรียน: สิ่งที่พวกเขาอยู่ในชั้นเรียนสิ่งที่พวกเขาได้รับเกรดติดต่อที่ติดต่อฉุกเฉินข้อมูล เกี่ยวกับหนังสือที่คุณสอนเป็นต้นหากระบบเป็นแบบเว็บอาจมี URL สำหรับคำนามแต่ละคำที่เกี่ยวข้องที่นี่: นักเรียนครูชั้นเรียนหนังสือห้อง ฯลฯ ตอนนี้รับ URL ผ่าน เบราว์เซอร์จะช่วยให้คุณหน้าเว็บ หากมีการแสดงเครื่องที่สามารถอ่านได้สำหรับแต่ละ URL ก็จะเป็นเรื่องเล็กน้อยที่จะสลักเครื่องมือใหม่เข้าสู่ระบบเพราะข้อมูลทั้งหมดนั้นจะสิ้นเปลืองในแบบมาตรฐาน มันจะทำให้ง่ายขึ้นสำหรับแต่ละระบบที่จะพูดคุยกัน หรือคุณสามารถสร้างระบบรัฐหรือประเทศที่สามารถพูดคุยกับแต่ละระบบโรงเรียนเพื่อรวบรวมคะแนนการทดสอบ ความเป็นไปได้ไม่มีที่สิ้นสุด
แต่ละระบบจะรับข้อมูลจากกันและกันโดยใช้ HTTP GET อย่างง่าย หากระบบหนึ่งต้องการเพิ่มบางสิ่งในระบบอื่นระบบจะใช้ HTTP POST หากระบบต้องการอัปเดตบางอย่างในระบบอื่นระบบจะใช้ HTTP PUT สิ่งเดียวที่เหลือก็คือว่าข้อมูลควรมีลักษณะอย่างไร
ภรรยา:นี่คือสิ่งที่คุณและคอมพิวเตอร์ทุกคนทำงานกันอยู่ตอนนี้? การตัดสินใจว่าข้อมูลควรมีลักษณะอย่างไร
ไรอัน:น่าเสียดายที่ไม่ แต่คนส่วนใหญ่ส่วนใหญ่กำลังเขียนเลเยอร์ข้อมูลจำเพาะที่ซับซ้อนสำหรับทำสิ่งนี้ในลักษณะที่แตกต่างกันซึ่งไม่ได้มีประโยชน์หรือมีคารมคมคาย คำนามไม่ใช่คำกริยาสากลและคำกริยาไม่ได้เป็นแบบ polymorphic เรากำลังทิ้งการใช้งานจริงมาหลายทศวรรษและเทคนิคที่ผ่านการพิสูจน์แล้วและเริ่มต้นใหม่กับสิ่งที่ดูเหมือนระบบอื่น ๆ ที่ล้มเหลวในอดีต เรากำลังใช้ HTTP แต่เพียงเพราะมันช่วยให้เราสามารถพูดคุยกับเครือข่ายและผู้คนด้านความปลอดภัยน้อย เราแลกเปลี่ยนความเรียบง่ายสำหรับเครื่องมือและพ่อมดที่ฉูดฉาด
ภรรยา:ทำไม
ไรอัน:ฉันไม่รู้
ภรรยา:ทำไมคุณไม่พูดอะไร
Ryan:บางทีฉันจะ
คุณคิดว่าจะเป็นไปได้อย่างไรที่จะจัดเก็บสถานะการเชื่อมต่อพันล้านพันล้านพันล้าน :) ดังนั้นคุณเก็บสถานะที่ต้องการในเซสชั่นเท่านั้น
BTW: HTTP ไม่ได้เชื่อมต่อ
persistent connections
ซึ่งเรียกว่า Keep-alive ฉันไม่ผู้เชี่ยวชาญเครือข่าย แต่คุณมีการเชื่อมต่อที่แท้จริงใน HTTP มากที่สุดของเวลา :)
ในฐานะนักพัฒนาเดสก์ท็อปคุณอาจคุ้นเคยกับประสบการณ์การใช้ UI ที่หลากหลาย การย้ายไปที่เว็บสามารถรู้สึกเหมือนได้ย้อนกลับไป ในโลกของเว็บนั้นมีอิสระในการสร้างสรรค์น้อยกว่าและสามารถทำให้คุณมีข้อ จำกัด อย่าปล่อยให้มันทำให้คุณผิดหวัง! มีหลายสิ่งที่สามารถช่วยให้คุณทำการเปลี่ยนแปลงได้และนี่คือรายการสั้น ๆ ของพวกเขา:
มีความสุขในการเขียนโปรแกรม!
เพราะมีเวลาที่ไม่ได้นับล้านต่อหน้าเว็บนับล้าน เพราะมีเวลาที่มหาวิทยาลัยเท่านั้นและสิ่งอำนวยความสะดวกการวิจัยมีสองหน้า มีเวลาที่ไม่มีบรอดแบนด์และ http ได้สื่อสารกับโมเด็ม 1200 baud ที่วางอยู่ด้านบนของโทรศัพท์ตั้งโต๊ะ มีบางครั้งที่ "แอปพลิเคชันเว็บที่สมบูรณ์" จะต้องใช้แบนด์วิดท์ที่ไร้สาระในมุมมองของพวกเขา และจำไว้ว่า TCP / IP ถูกสร้างขึ้นเพราะอินเทอร์เน็ตในยุคแรกนั้นไม่น่าเชื่อถือมาก
HTTP 1.0 นั้นอยู่ในช่วงต้นทศวรรษ 1990 ลองคิดดูว่าอินเทอร์เน็ตในยุคนั้นเป็นอย่างไรและทำไมพวกเขาจึงออกแบบในแบบที่เป็น
มันวิวัฒนาการมาทั้งหมด อินเทอร์เน็ตมีอยู่ก่อนเว็บเบราว์เซอร์และเว็บ มันเป็นหม้อฟองของ ftp, telnet, gopher, ping, finger และบิตและบ็อบอีกสองสามตัว เว็บเบราว์เซอร์แรก Mosaic (? ฉันคิดว่าเมื่อนานมาแล้วปี 1991 ฉันคิดว่าฉันอยู่ที่วิทยาลัย) ทำหน้าที่เหมือนเป็นการยั่วเย้าระหว่าง ftp และโปรแกรมดูเอกสาร ความมหัศจรรย์เกิดขึ้นเพราะคุณสามารถมีลิงค์ในเอกสารซึ่งจะทำให้เอกสารใหม่เพิ่มขึ้น
การโต้ตอบทั้งหมดที่เราได้พัฒนาในช่วง 20 ปีข้างหน้า มันไม่ใช่วิวัฒนาการที่มีความสุขเช่นกัน เรามีสงครามเบราว์เซอร์, IE และ Netscape duked มันออกมาเพื่อควบคุมมาตรฐาน (บิตของการทำให้เข้าใจง่าย;)), และบุคคลที่สามอื่น ๆ อีกมากมายเริ่มแนะนำปลั๊กอินอินเพื่ออนุญาตให้มีเนื้อหาที่หลากหลาย Java เป็นไปได้ที่จะเป็นเวทย์มนตร์และแน่นอนว่าแฟลช ไม่มีใครจำปลั๊กอิน VRML ที่สัญญากับโลก 3 มิติและส่งมอบโมเดลสตาร์วอร์สครึ่งโหลได้ครึ่งโหล?
ฉันถูกพาไปที่จุดสิ้นสุด แต่คุณเข้าใจแล้ว :)
สาเหตุหลักเกี่ยวข้องกับการรวมกันของสิ่งที่ acedemia เชื่อว่าจุดประสงค์ของ HTTP คือและเหตุผลของการขยายขีดความสามารถ เดิมที HTML ได้รับการออกแบบมาเพื่อใช้ข้อมูลร่วมกันหรือเป็นไปตามขอบเขตทางวิชาการ มันเป็นข้อความที่เท่อย่างหมดจด มันไม่ได้จนกว่าเบราว์เซอร์แรกที่อนุญาตให้คุณแสดงรูปภาพที่ผู้คนเริ่มคิดนอกแบบจำลองนั้น
ข้อควรพิจารณาต่อไปนี้เสริมสร้างการตัดสินใจไร้สัญชาติ:
เมื่อหน้าเว็บมีความซับซ้อนมากขึ้นและมีกราฟิกและสไตล์ชีทมากมาย HTTP จึงถูกใช้เป็นธง "Keep-alive" นั่นจะทำให้ซ็อกเก็ตยังคงอยู่และอนุญาตให้ไคลเอนต์ร้องขอทรัพยากรต่าง ๆ ด้วยการสนทนาเดียวกัน
เมื่อพิจารณาถึงรูปแบบการใช้งานในปัจจุบันของอินเทอร์เน็ตการตัดสินใจเดิมยังคงใช้ได้ อาจไม่สะดวกในบางครั้ง แต่การโต้ตอบเชิงปริมาณขนาดเล็กจำนวนมากกับเซิร์ฟเวอร์จะปรับขนาดได้ดีกว่าซ็อกเก็ตที่ไม่ได้ใช้งาน
ถ้าคุณหมายถึงเบราว์เซอร์สองทิศทาง
เหตุผลด้านความปลอดภัย
ตัวอย่างเช่นสแปม!
การสื่อสารแบบสองทิศทางบนเว็บไปอีกระดับ
มิฉะนั้นอินเทอร์เน็ตจะเรียกใช้ TCP / IP (สองโปรโตคอล) และ UDP
โปรโตคอลควบคุมการส่ง(TCP) เป็นหนึ่งในโปรโตคอลหลักของ Internet Protocol Suite TCP เป็นหนึ่งในสองคอมโพเนนต์ดั้งเดิมของชุดประกอบ Internet Protocol (IP) ดังนั้นชุดทั้งหมดจึงถูกเรียกว่า TCP / IP TCP ให้บริการการแลกเปลี่ยนข้อมูลโดยตรงระหว่างสองโฮสต์บนเครือข่ายเดียวกันในขณะที่ IP จัดการกับการกำหนดแอดเดรสและการกำหนดเส้นทางข้อความในเครือข่ายหนึ่งเครือข่ายหรือมากกว่า โดยเฉพาะอย่างยิ่ง TCP ให้การส่งกระแสข้อมูลที่เชื่อถือได้และเป็นคำสั่งของไบต์จากโปรแกรมบนคอมพิวเตอร์เครื่องหนึ่งไปยังโปรแกรมอื่นบนคอมพิวเตอร์เครื่องอื่น TCP คือโพรโทคอลที่แอปพลิเคชันอินเทอร์เน็ตที่สำคัญต้องพึ่งพาแอปพลิเคชันเช่นเวิลด์ไวด์เว็บอีเมลและการถ่ายโอนไฟล์ แอปพลิเคชั่นอื่นซึ่งไม่ต้องการบริการสตรีมข้อมูลที่เชื่อถือได้
อินเทอร์เน็ตโปรโตคอล(IP) เป็นโปรโตคอลการสื่อสารหลักที่ใช้สำหรับการส่งดาตาแกรม (แพ็คเก็ต) ข้ามเครือข่ายโดยใช้ Internet Protocol Suite รับผิดชอบการกำหนดเส้นทางแพ็คเก็ตข้ามขอบเขตเครือข่ายเป็นโปรโตคอลหลักที่สร้างอินเทอร์เน็ต IP เป็นโปรโตคอลหลักใน Internet Layer ของ Internet Protocol Suite และมีหน้าที่ในการส่งดาตาแกรมจากโฮสต์ต้นทางไปยังโฮสต์ปลายทางตามที่อยู่ของพวกเขา แต่เพียงผู้เดียว เพื่อจุดประสงค์นี้ IP จะกำหนดวิธีการและที่อยู่สำหรับการห่อหุ้มดาตาแกรม ในอดีต IP เป็นบริการดาต้าแกรมที่ไร้การเชื่อมต่อในโปรแกรมควบคุมการส่งสัญญาณดั้งเดิมที่นำเสนอโดย Vint Cerf และ Bob Kahn ในปี 1974 และอีกอันคือการเชื่อมต่อที่มุ่งเน้นการควบคุมการส่งผ่านโปรโตคอล (TCP) ชุดโปรโตคอลอินเทอร์เน็ตจึงมักจะเรียกว่า TCP / IP
ในแอปพลิเคชันเดสก์ท็อปผู้ใช้จะถือว่าทำงานบางอย่างด้วยการเริ่มต้นและสิ้นสุดที่กำหนดไว้ ในแอปพลิเคชั่นดังกล่าวทำให้ผู้ใช้สามารถเข้าสู่เซิร์ฟเวอร์ใดก็ตามที่ให้ข้อมูลและยังคงเข้าสู่ระบบจนกว่าจะเสร็จสิ้น
การโต้ตอบผ่านเว็บจะไม่เป็นไปตามรูปแบบเดียวกัน ตัวอย่างเช่นในไซต์อีคอมเมิร์ซผู้ใช้อาจมาถึงรายละเอียดผลิตภัณฑ์เนื่องจากการค้นหาโดย Google และออกจากหน้านั้นทันทีเพื่อดูข้อเสนอของผลิตภัณฑ์อื่นในไซต์เดียวกัน หรืออาจเริ่มกระบวนการเช็คเอาต์จากนั้นตัดสินใจว่าผลิตภัณฑ์มีราคาแพงเกินไปและทิ้งไว้ครึ่งทาง แนวคิดพื้นฐานของ "ไฮเปอร์เท็กซ์" แสดงถึงความสามารถและความคาดหวังในการข้ามจากที่หนึ่งไปอีกที่หนึ่ง
การเชื่อมต่อแบบถาวรใช้ทรัพยากร บางทีอาจเป็นเพียงซ็อกเก็ตเครือข่ายบางทีกลุ่มของการสืบค้นฐานข้อมูลที่แยกวิเคราะห์ ทุกอย่างขึ้นอยู่กับแอปพลิเคชัน เมื่อพิจารณาจากผู้ใช้ที่อาจหายไปได้ตลอดเวลาจึงไม่มีเหตุผลที่จะใช้ทรัพยากรเหล่านั้น
ในทางปฏิบัติผู้ใช้ไม่จำเป็นต้องมีการเชื่อมต่อแบบถาวร เว็บแอปพลิเคชั่นรักษาการเชื่อมต่อกับทรัพยากรใด ๆ (เช่นฐานข้อมูล) ที่ต้องการและแบ่งปันระหว่างการร้องขอของผู้ใช้ทั้งหมด เฟรมเวิร์กแอปพลิเคชันมีเซสชันซึ่งเป็นสถานที่ที่ จำกัด เวลาในการจัดเก็บข้อมูลต่อผู้ใช้สำหรับคำขอที่แตกต่างกัน สิ่งเดียวที่คุณไม่สามารถทำได้ (ง่าย) คือธุรกรรมที่ควบคุมโดยลูกค้าเป็นเวลานาน แต่เป็นความคิดที่ไม่ดีแม้แต่ในแอพที่ดูแลการเชื่อมต่อ
อินเทอร์เน็ตไม่จำเป็นต้องไร้สัญชาติ - อันที่จริงแล้วเมื่อคุณดูที่ Java EE - พวกเขามี EJB ที่ไร้รัฐและ EJB ที่ไร้รัฐ
เหตุผลหลักที่ผู้พัฒนาแนะนำให้ใช้สถาปัตยกรรมไร้สัญชาติเนื่องจากความสามารถในการปรับขยายได้ ลองนึกภาพพยายามรักษาสถานะของผู้ใช้ทั้งหมดของคุณเมื่อคุณเพิ่มและวางเซิร์ฟเวอร์เพื่อรองรับการรับส่งข้อมูลของคุณ
ไม่ยากเลยที่จะพัฒนาสถาปัตยกรรมไร้สัญชาติ จุดหลักคือการรักษาสถานะน้อยที่สุด (ปกติ id ผู้ใช้ - โดยเฉพาะอย่างยิ่งในคุกกี้) และการเปลี่ยนแปลงฐานข้อมูลตามที่ต้องการ
ฉันคิดว่ามันเริ่มต้นอย่างนั้นและก็จะเป็นอย่างนั้นต่อไป ตอนนี้มีโครงสร้างพื้นฐานจำนวนมากที่สร้างขึ้นรอบตัวมันเป็นไปไม่ได้ที่จะเปลี่ยนแปลง
อาจเริ่มไร้สัญชาติเนื่องจากการเชื่อมต่อมีความน่าเชื่อถือน้อยกว่าในตอนแรกและแบนด์วิดท์ก็เล็กลง หากคุณไม่มีการเชื่อมต่อที่ใช้งานอยู่คุณสามารถจัดการทราฟฟิกได้ง่ายขึ้น
กรุณาแก้ไขหรือแสดงความคิดเห็นหากคุณมีข้อมูลที่ดีขึ้นหรือดีกว่ายังโพสต์คำตอบของคุณเอง!
มันเป็นเพราะเซิร์ฟเวอร์ให้บริการ (ในชื่อ) คุณทำการร้องขอและรับคำตอบนั่นคือทั้งหมดที่มี
เมื่อพิจารณาถึงการเปลี่ยนไปสู่การพัฒนาเว็บผมเชื่อว่า ASP.NET Web Forms จะทำให้คุณเข้าใจได้ง่ายขึ้น - แต่นั่นเป็นเพียงเพราะซ่อนสิ่งที่เกิดขึ้นจริงภายใต้เลเยอร์นามธรรม
สามารถเข้าใจได้เป็นอย่างมากโดยการวิเคราะห์ชื่อของ HTTP (HyperText Transfer Protocol) ไม่เคยออกแบบมาให้เป็นโปรโตคอล UI ที่สมบูรณ์ แนวคิดดั้งเดิมคือการแบ่งปันเอกสารด้วยลิงก์ระหว่างกัน ฉันขอเอกสารให้คุณตอบกลับพร้อมสำเนาของเอกสารนั้น
HTTP เดิมมีกริยา GET เพียงตัวเดียว ในเรื่องนั้นมันถูกออกแบบมาสำหรับเนื้อหาคงที่ ทำไมคุณถึงต้องการสถานะเมื่อสิ่งที่คุณทำทั้งหมดกำลังร้องขอเอกสารที่มีคนแชร์? และนั่นคือสาเหตุที่ HTTP นั้นไร้สัญชาติ ... เนื่องจากต้นกำเนิดของมัน