... และ unmarshalling / deserializing หรือไม่ คำอธิบายของ Wikipediaทำให้ฉันไม่มีใครฉลาด! ฉันเป็นโปรแกรมเมอร์ Java ในกรณีที่มีการใช้คำศัพท์ต่างกันในภาษาต่างๆ
... และ unmarshalling / deserializing หรือไม่ คำอธิบายของ Wikipediaทำให้ฉันไม่มีใครฉลาด! ฉันเป็นโปรแกรมเมอร์ Java ในกรณีที่มีการใช้คำศัพท์ต่างกันในภาษาต่างๆ
คำตอบ:
ความหมายมีความสำคัญที่นี่:
Marshalling แปลว่าการย้ายข้อมูลไม่ได้แปลความหมายของข้อมูลจากการเป็นตัวแทนหรือการจัดเก็บข้อมูลดั้งเดิม วัตถุ Java สามารถ Marshalled มากกว่าสายในการเป็นตัวแทนของพวกเขา
การทำให้เป็นอนุกรมหมายถึงการแปลงข้อมูลเป็นการนำเสนอกลางที่ไม่ใช่เจ้าของภาษา ตัวอย่างเช่น: การแปลง Java Object เป็น JSON หรือ XML
แน่นอนว่าระบบส่วนใหญ่ที่ข้อมูลของMarshalทำให้เป็นรูปแบบที่ไม่ใช่เจ้าของภาษาก่อนที่จะทำการขนส่ง
คำถามนี้ถูกถามมาก่อน แต่ใน StackOverflow นี่คือลิงค์
ใบเสนอราคาของคำตอบที่ได้รับจากJeffrey Hantin :
การ Marshaling และการทำให้เป็นอนุกรมนั้นมีความหมายเหมือนกันในบริบทของการเรียกขั้นตอนระยะไกล แต่มีความหมายแตกต่างกันไปตามความตั้งใจ
โดยเฉพาะอย่างยิ่ง marshaling เป็นเรื่องเกี่ยวกับการรับพารามิเตอร์จากที่นี่ไปที่นั่นในขณะที่อนุกรมเป็นเรื่องเกี่ยวกับการคัดลอกข้อมูลที่มีโครงสร้างไปยังหรือจากรูปแบบดั้งเดิมเช่นไบต์สตรีม ในแง่นี้การทำให้เป็นอนุกรมเป็นวิธีการหนึ่งในการทำ marshaling ซึ่งโดยทั่วไปจะใช้ความหมายของการส่งต่อค่า
นอกจากนี้ยังเป็นไปได้สำหรับวัตถุที่จะ marshaled โดยการอ้างอิงในกรณีที่ข้อมูล "บนลวด" เป็นเพียงข้อมูลสถานที่สำหรับวัตถุต้นฉบับ อย่างไรก็ตามวัตถุดังกล่าวอาจยังคงคล้อยตามการจัดลำดับค่า
ตามที่ @Bill กล่าวถึงอาจมีข้อมูลเมตาเพิ่มเติมเช่นตำแหน่งฐานรหัสหรือแม้แต่รหัสการนำวัตถุไปใช้
Marshaller ทำทุกสิ่งที่ต้องการเพื่อสร้างโครงสร้างข้อมูลที่จะขนส่งจากที่หนึ่งไปยังอีกที่หนึ่ง เมื่อฉันพูดถึง "โครงสร้างข้อมูล" มันอาจเป็นอะไรก็ได้ จากวัตถุ (สถานะข้อมูล => ค่าฟิลด์) ไปยังการอ้างอิงหน่วยความจำไปยังวัตถุนั้นที่จะจัดการฝั่งไคลเอ็นต์ด้วย "Stub" และบนฝั่งเซิร์ฟเวอร์โดย "พร็อกซี" หมายความว่า Marshaller สามารถใช้ "Serializers" เพื่อแปลงโครงสร้างข้อมูลให้เป็นตัวแทนระดับต่ำเพื่อการขนส่งได้ง่ายกว่ามาก เส้นทางการเปลี่ยนแปลงอาจมีส่วนประกอบอื่นเช่นคอมเพรสเซอร์, คอมไพเลอร์, อะแดปเตอร์และอื่น ๆ สำหรับฉัน Serializer เป็นส่วนหนึ่งของ Marshaller