ฉันเริ่มต้นใช้งานการเขียนโปรแกรมเชิงวัตถุ (OOP) และต้องการทราบว่า: ความหมายของการทำให้เป็นอันดับใน OOP parlance คืออะไร?
ฉันเริ่มต้นใช้งานการเขียนโปรแกรมเชิงวัตถุ (OOP) และต้องการทราบว่า: ความหมายของการทำให้เป็นอันดับใน OOP parlance คืออะไร?
คำตอบ:
การทำให้เป็นอันดับเป็นกระบวนการของการเปลี่ยนวัตถุในหน่วยความจำให้เป็นกระแสข้อมูลของไบต์ดังนั้นคุณสามารถทำสิ่งต่าง ๆ เช่นเก็บไว้ในดิสก์หรือส่งผ่านเครือข่าย
Deserialization เป็นกระบวนการย้อนกลับ: เปลี่ยนกระแสของไบต์เป็นวัตถุในหน่วยความจำ
Marshal
และUnmarshal
มีความเหมือนและSerialize
Deserialize
abc
จะถูกทำให้เป็นอนุกรมเป็น0x61 0x62 0x63
(ASCII) หรือ0x00 0x61 0x00 0x62 0x00 0x63
(UTF16) - โดยมีหรือไม่มีสิ่งต่าง ๆ เช่นเทอร์มินัล NUL หรือความยาวที่เข้ารหัส
การพูดซีเรียลไลซ์เซชั่นเป็นกระบวนการของการแปลงออบเจกต์เป็นสตรีมของไบต์เพื่อให้สามารถถ่ายโอนผ่านเครือข่ายหรือเก็บไว้ในที่จัดเก็บข้อมูลถาวร
ซีเรียลไลซ์เป็นตรงข้ามแน่นอน - Fetch กระแสของไบต์จากเครือข่ายหรือการเก็บรักษาการติดตาและแปลงกลับเป็นวัตถุที่มีสภาพเดียวกัน
สิ่งที่ต้องเข้าใจคือการตีความหรือจัดการกระแสข้อมูลของไบต์เหล่านั้นเพื่อให้เราได้รับวัตถุ / สถานะเดียวกันที่แน่นอน มีหลายวิธีที่จะทำให้สำเร็จ บางส่วนของพวกเขาคือ -
Serializable interface
และเขียนไปยัง Object StreamJSON
นี้ได้หรือไม่เพราะฉันไม่รู้อะไรเกี่ยวกับมัน
สมมติว่าฉันกำลังคุยกับเพื่อนทางโทรศัพท์และฉันบอกเขาเกี่ยวกับลูกสุนัขตัวใหม่ของฉัน
นี่คือปัญหาของฉัน: ลูกสุนัขเป็นสิ่งมีชีวิตหายใจของสัตว์เลี้ยงลูกด้วยนม ฉันตั้งใจจะถ่ายทอดลูกสุนัขผ่านสายโทรศัพท์ได้อย่างไร? ฉันไม่สามารถวางลูกสุนัขของฉันลงในตัวรับโทรศัพท์ของฉัน
ดังนั้นฉันจะต้องถ่ายทอดการเป็นตัวแทนของลูกสุนัขทางโทรศัพท์ กล่าวอีกนัยหนึ่งฉันก็ทำให้สุนัขเร็กซ์ของฉันเป็นอนุกรมแล้วส่งรุ่น Rex ที่เป็นอนุกรมของเขาผ่านสายโทรศัพท์:
{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }
มันเป็นตัวแทนที่สมบูรณ์แบบ - สุนัขของฉันเป็นอนุกรม
การทำให้เป็นอนุกรมโดยทั่วไปหมายถึงการเปลี่ยนสุนัขเร็กซ์ของฉันให้เป็นอย่างอื่น - วัตถุ JSON - ซึ่งสามารถส่งผ่านสายโทรศัพท์เป็นซีรีย์ 1 และ 0 เพื่อนของฉันในนิวยอร์คสามารถแปล 1s และ 0s เหล่านั้นกลับไปเป็นวัตถุ JSON เพื่อที่เขาจะได้เป็นตัวแทนสุนัขเร็กซ์ที่สมบูรณ์แบบของฉัน
ลองดูนี่จะให้คำอธิบายที่ดี:
http://en.wikipedia.org/wiki/Serialization
ฉันคิดว่าการใช้คำว่าซีเรียลไลเซชั่นโดยทั่วไปนั้นเกี่ยวข้องกับการแปลงออบเจ็กต์ไบนารี่เป็นเอ็กเอ็มแอล (หรือสตริงอื่น ๆ ) เพื่อที่จะสามารถเก็บไว้ในฐานข้อมูล / ไฟล์หรือส่งข้ามเครือข่าย Deserialization เป็นกระบวนการย้อนกลับ - การแปลง XML / สตริงกลับไปเป็นวัตถุ
แก้ไข: คำอื่นที่คุณอาจเจอคือการเรียงลำดับคำสั่ง / unmarshalling มาร์แชลนิ่งเป็นแนวคิดเดียวกับการทำให้เป็นอนุกรมและการแยกส่วนจะเหมือนกันกับ
การทำให้เป็นอันดับเป็นกระบวนการของการแปลงวัตถุเป็นกระแสข้อมูลไบต์เพื่อเก็บวัตถุหรือส่งไปยังหน่วยความจำฐานข้อมูลหรือไฟล์ วัตถุประสงค์หลักคือเพื่อบันทึกสถานะของวัตถุเพื่อให้สามารถสร้างใหม่ได้เมื่อต้องการ กระบวนการย้อนกลับเรียกว่า
...
ภาพประกอบนี้แสดงกระบวนการโดยรวมของการทำให้เป็นอนุกรม
...
ผู้พัฒนาสามารถดำเนินการต่าง ๆ เช่นการส่งวัตถุไปยังแอปพลิเคชันระยะไกลผ่านบริการเว็บผ่านวัตถุจากโดเมนหนึ่งไปยังอีกโดเมนหนึ่งผ่านวัตถุผ่านไฟร์วอลล์เป็นสตริง XML หรือรักษาความปลอดภัยหรือเฉพาะผู้ใช้ ข้อมูลข้ามแอปพลิเคชัน
จากhttps://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/
(เน้นที่เหมือง)
การทำให้เป็นอันดับเป็นกระบวนการของการแปลงข้อมูลที่ไม่เรียงลำดับ (เช่นวัตถุ) เป็นชุดของโทเค็นซึ่งสามารถนำมาใช้ในภายหลังเพื่อสร้างข้อมูลต้นฉบับใหม่ แบบฟอร์มต่อเนื่องมักเป็นชุดของข้อความ แต่ไม่จำเป็นต้องเป็น
การทำให้เป็นอันดับคือการแปลงวัตถุเป็นลำดับบิตที่จัดเก็บได้
เพื่อให้คุณสามารถบันทึกลำดับนี้ไปยังไฟล์ db หรือส่งผ่านเครือข่าย
ในภายหลังคุณสามารถยกเลิกการทำให้เป็นวัตถุจริงและนำมาใช้ซ้ำได้ทุกเมื่อที่คุณต้องการ
บริการบนเว็บและAJAXเป็นตัวอย่างที่พบบ่อยที่สุดของการทำให้เป็นอนุกรม วัตถุเป็นอันดับก่อนที่จะส่งการตอบสนองไปยังลูกค้า
การทำให้เป็นอนุกรมคืออะไร แต่การถ่ายโอนออบเจ็กต์ที่รองรับจาวาไปยังไฟล์ที่รองรับ
(OR)
การแปลงจาวาที่รองรับฟอร์มไปยังเครือข่ายที่รองรับ .. ขอบเขตหลักของการทำให้เป็นอนุกรมคืออะไรนอกจากการถ่ายโอนข้อมูลจากชั้นหนึ่งไปยังอีกชั้นหนึ่ง ... เฉพาะวัตถุที่ต่อเนื่องกันเท่านั้นที่เราสามารถส่งผ่านเครือข่าย ..
การทำให้เป็นอันดับเป็นกระบวนการของการแปลงวัตถุที่รองรับ Java, C # หรืออื่น ๆ (ภาษา OOP) เป็นรูปแบบการขนส่ง วิธีนี้จะถูกส่งผ่านเครือข่ายหรือเก็บไว้ในดิสก์ สำหรับคลาสที่ต้องเป็นแบบอนุกรมมันต้องใช้อินเตอร์เฟสแบบอนุกรมได้
การทำให้เป็นอนุกรมกำลังเปลี่ยนข้อมูลให้เป็น "สตริง" เชิงเส้นของไบต์
บางคนบอกว่าเหมือนกันมากกว่าหรือน้อยกว่า แต่ฉันเน้นว่าแบบจำลองคอมพิวเตอร์ต้องการข้อมูลที่เหมาะสมกับ RAM ที่ระบุในมิติเดียวหรือที่เก็บข้อมูลถาวร
สิ่งต่าง ๆ ส่วนใหญ่ที่เป็น "ข้อมูล" นั้นสามารถจัดลำดับได้โดยเนื้อแท้ (แม้ว่าคุณจะต้องลดรูปแบบนามธรรมให้เป็นแบบเชิงเส้น) ไม่ใช่ serializable กล่าวว่าการเชื่อมต่อเครือข่ายหรือเครื่องรัฐตามซับซ้อนเช่น parser
การทำให้เป็นอนุกรมเกี่ยวข้องกับการแปลงวัตถุไบนารีให้เป็นตัวแทน XML (หรือสตริงอื่น ๆ ) เพื่อให้สามารถเก็บไว้ในฐานข้อมูล / ไฟล์หรือส่งข้ามเครือข่ายในการเรียกใช้บริการเว็บ Deserialization เป็นกระบวนการย้อนกลับ - การแปลง XML / สตริงกลับไปเป็นวัตถุ
เมื่อ instantiating (สร้าง) วัตถุจริง (สิ่ง) จากคลาส (พิมพ์เขียว) มีความจำเป็นต้องบันทึกวัตถุ (สิ่ง) โดย serializing มัน (ทำลายมันลงไปที่โครงสร้างอะตอมพื้นฐาน) ไปยังพื้นที่ในหน่วยความจำ (ชนิดของผู้ขนส่ง Star Treks เหมือน) คุณแบ่งสิ่งต่าง ๆ ลงในนั้นสตรีมข้อมูลที่สามารถขนส่งไปที่ไหนสักแห่งและเก็บไว้ จากนั้นเมื่อคุณต้องการสร้างสิ่งที่คุณเพิ่งดึงอินสแตนซ์ที่เก็บอะตอมกลับเข้าไปในวัตถุ แตกต่างจากการติดตั้ง
การทำให้เป็นอันดับเป็นกระบวนการของการแปลงวัตถุเป็นสตรีมข้อมูลแบบไบนารีเพื่อให้สามารถเก็บไว้ในไฟล์หรือส่งผ่านเครือข่ายที่สามารถคืนค่ากลับเป็นวัตถุเดียวกัน
เอกสารนี้จะช่วยให้คุณเข้าใจรายละเอียดเกี่ยวกับการทำให้เป็นอันดับของ Java
การทำให้เป็นอันดับคือเมื่อวัตถุ (กลุ่มของหน่วยความจำ) แปลในรูปแบบเมื่อสถานะของวัตถุสามารถบันทึกในไฟล์ (เป็นตัวอย่าง)
เพียงแค่ถือว่ามันเป็นการทำคุกกี้ - วัตถุคือแป้งคุกกี้ - เป็นแป้งที่ต่อเนื่องกัน
ดังนั้นโดย "serializing" คุณสามารถส่งคุกกี้ให้เพื่อนของคุณ
อะไรแบบนั้น :-)