Lompat ke isi

Serialisasi: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Jazle (bicara | kontrib)
pengembangan
InternetArchiveBot (bicara | kontrib)
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.8
 
(10 revisi perantara oleh 9 pengguna tidak ditampilkan)
Baris 1: Baris 1:
Dalam konteks penyimpanan dan transmisi data pada [[ilmu komputer]], '''serialisasi''' adalah proses pengubahan suatu [[obyek (komputer)|obyek]] menjadi urutan [[bit]] agar dapat disimpan pada media penyimpanan (seperti [[berkas komputer]], atau [[penyangga data]]) atau ditransmisikan melalui saluran koneksi [[jaringan (komputer)|jaringan]]. Sewaktu rangkaian bit ini dibaca ulang sesuai dengan format serialisasinya, ia dapat digunakan untuk menciptakan [[klona]] identik [[semantis]] dari obyek asalnya. Bagi banyak obyek kompleks, misalnya obyek yang banyak menggunakan rujukan, proses ini tidak dapat dilakukan begitu saja.
Dalam konteks penyimpanan dan transmisi data pada [[ilmu komputer]], '''serialisasi''' adalah proses pengubahan suatu [[objek (komputer)|objek]] menjadi urutan [[bit]] agar dapat disimpan pada media penyimpanan (seperti [[berkas komputer]], atau pada [[memori]]) atau ditransmisikan melalui saluran koneksi [[jaringan (komputer)|jaringan]].<ref>[http://www.parashift.com/c++-faq-lite/serialization.html What's this "serialization" thing all about?]</ref> Sewaktu rangkaian bit ini dibaca ulang sesuai dengan format serialisasinya, ia dapat digunakan untuk menciptakan [[klon]] identik [[semantis]] dari objek asalnya. Bagi banyak objek kompleks, misalnya objek yang banyak menggunakan rujukan, proses ini tidak dapat dilakukan begitu saja.


Proses serialisasi suatu obyek ini dapat juga disebut pengempisan (''deflating'') atau penyusunan (''marshalling'') obyek. Operasi kebalikannya, pembuatan [[struktur data]] dari rangkaian [[bita]], adalah deserialisasi, atau disebut juga penggembungan (''inflating'') atau pembongkaran (''unmarshalling'') obyek.
Proses serialisasi suatu objek ini dapat juga disebut pengempisan (''deflating'') atau penyusunan (''marshalling'') objek. Operasi kebalikannya, pembuatan [[struktur data]] dari rangkaian [[bita]], adalah deserialisasi, atau disebut juga penggembungan (''inflating'') atau pembongkaran (''unmarshalling'') objek.<ref>[http://support.microsoft.com/kb/301116/en-us How to marshal an object to a remote server by value by using Visual Basic 2005 or Visual Basic .NET]</ref>


==Penggunaan==
== Penggunaan ==
Serialisasi digunakan sebagai:
Serialisasi digunakan sebagai:
* Cara untuk melakukan penyimpanan objek yang lebih mudah dibandingkan menuliskan properti atas objek-objek tersebut ke dalam berkas teks, dan mengembalikannya sebagai objek.
* Cara untuk melakukan penyimpanan objek yang lebih mudah dibandingkan menuliskan properti atas objek-objek tersebut ke dalam berkas teks, dan mengembalikannya sebagai objek.
Baris 10: Baris 10:
* Salah satu cara untuk mendeteksi perubahan data dalam satu periode waktu tertentu.
* Salah satu cara untuk mendeteksi perubahan data dalam satu periode waktu tertentu.


Agar fitur serialisasi ini dapat memberikan manfaat seperti tujuan awalnya, arsitektur perangkat lunak yang berdasar pada ketidakbergantungan harus senantiasa dikelola secara konsisten. Sebagai contoh, untuk mendapatkan kegunaan maksimum saat perangkat lunak didistribusikan, komputer yang berjalan pada arsitektur perangkat keras yang berbeda harus dapat melakukan rekonstruksi data yang telah terserialisasi secara reliabel. Hal ini berarti, prosedur yang sederhana dan berunjuk kerja tinggi yang secara langsung menyalin blok-blok memori komputer tidak akan dapat berjalan secara reliabel pada arsitektur yang lain. Serialisasi struktur data dalam arsitektur yang independen ditujukan untuk memungkinkan data tersebut secara reliabel dibaca, direkonstruksi secara mudah pada platform-platform sistem operasi yang didukung.
Agar fungsi serialisasi dapat memberikan manfaat seperti tujuan awalnya, arsitektur perangkat lunak yang berdasar pada ketidakbergantungan harus senantiasa dikelola secara konsisten. Sebagai contoh, untuk mendapatkan kegunaan maksimum saat perangkat lunak didistribusikan, komputer yang berjalan pada sistem operasi yang berbeda harus dapat pula melakukan rekonstruksi data yang telah terserialisasi tersebut secara reliabel. Serialisasi struktur data dalam arsitektur yang independen ditujukan untuk memungkinkan data tersebut secara reliabel dibaca, direkonstruksi secara mudah pada platform-platform sistem operasi lain. Hal ini berarti data yang berasal dari prosedur konvensional yang sederhana, berunjuk kerja tinggi, yang secara langsung menyalin blok-blok memori komputer biasanya tidak akan dapat digunakan pada arsitektur yang lain.


== Kerugian ==
<!-- next chapter to be translated
Meskipun serialisasi memungkinkan pertukaran data antar platform secara reliabel, namun pada implementasinya serialisasi ini melanggar batasan-batasan tipe data abstrak, sehingga sangat mungkin menyertakan pula tipe-tipe data yang bersifat spesifik. Di sisi lain aspek kerugian ini sering kali dimanfaatkan oleh perusahaan pembuat perangkat lunak untuk melindungi produk perangkat lunak buatan mereka serta menghalangi kompetitor membuat produk sejenis yang kompatibel. Beberapa perusahaan bahkan menambahkan metode pengacakan atau bahkan enkripsi atas hasil data serialisasi ini.
Inherent to any serialization scheme is that, because the encoding of the data is by definition serial, extracting one part of the serialized data structure requires that the entire object be read from start to end, and reconstructed. In many applications this linearity is an asset, because it enables simple, common I/O interfaces to be utilized to hold and pass on the state of an object. In applications where higher performance is an issue, it can make sense to expend more effort to deal with a more complex, non-linear storage organization.


Hanya saja interoperabilitas mensyaratkan semua aplikasi harus bisa melakukan deserialisasi atau sebaliknya melakukan serialisasi dengan dengan menggunakan format yang sama, karenanya arsitektural pemanggilan prosedur jarak jauh (''remote procedure call'') ataupun CORBA secara detail menyertakan spesifikasi atas format yang digunakan.
Even on a single machine, primitive [[Pointer (computing)|pointer]] objects are too fragile to save, because the objects to which they point may be reloaded to a different location in memory. To deal with this, the serialization process includes a step called ''[[unswizzling]]'' or ''pointer unswizzling'' and the deserialization process includes a step called ''[[pointer swizzling]]''.


== Rujukan ==
Since both serializing and deserializing can be driven from common code, (for example, the ''Serialize'' function in [[Microsoft Foundation Classes]]) it is possible for the common code to do both at the same time, and thus 1) detect differences between the objects being serialized and their prior copies, and 2) provide the input for the next such detection. It is not necessary to actually build the prior copy, since differences can be detected "on the fly". This is a way to understand the technique called [[differential execution]]. It is useful in the programming of user interfaces whose contents are time-varying&nbsp;— graphical objects can be created, removed, altered, or made to handle input events without necessarily having to write separate code to do those things.
{{reflist}}
-------------- !>


== Pranala luar ==
{{komputer-stub}}
Untuk platform ASP.NET:
* [http://www.studentacad.com/post/2009/12/31/JSON-Hijacking-and-How-ASPNET-AJAX-10-Avoids-these-Attacks.aspx Serialize Any ASP.NET Object to a JSON String]{{Pranala mati|date=Mei 2021 |bot=InternetArchiveBot |fix-attempted=yes }}
* [http://www.studentacad.com/post/2009/11/26/aspnet-Callback-technique-using-csharp.aspx aspnet Callback technique using csharp] {{Webarchive|url=https://web.archive.org/web/20091206070423/http://studentacad.com/post/2009/11/26/aspnet-Callback-technique-using-csharp.aspx |date=2009-12-06 }}

Bahasa pemrograman Java:
* [http://java.sun.com/j2se/1.4.2/docs/guide/serialization/index.html Java 1.4 Object Serialization documentation].
* [http://beginner-java-tutorial.com/object-serialization.html Java Object Serialization] {{Webarchive|url=https://web.archive.org/web/20071112193550/http://www.beginner-java-tutorial.com/object-serialization.html |date=2007-11-12 }}
* [http://www.macchiato.com/columns/Durable4.html Durable Java: Serialization] {{Webarchive|url=https://web.archive.org/web/20051125013312/http://www.macchiato.com/columns/Durable4.html |date=2005-11-25 }}
* [http://rpbourret.com/xml/XMLDataBinding.htm XML Data Binding Resources]
* [http://joafip.sourceforge.net/ JOAFIP serialization in file and more...]
* [http://dev.simantics.org/index.php/Org.simantics.databoard Databoard]
* [http://code.google.com/p/kryo/ Kryo]

Bahasa pemrograman C:
* [http://s11n.net/c11n/ c11n]
* [http://tpl.sourceforge.net/ tpl] {{Webarchive|url=https://web.archive.org/web/20110724080340/http://tpl.sourceforge.net/ |date=2011-07-24 }}

Bahasa pemrograman C++:
* [http://www.parashift.com/c++-faq-lite/serialization.html Serialization and Unserialization]
* [http://www.boost.org/libs/serialization/doc/index.html Boost Serialization]
* [http://s11n.net/ s11n]
* [http://www.sweetsoftware.co.nz/persist_overview.php Sweet Persist] {{Webarchive|url=https://web.archive.org/web/20110724194412/http://www.sweetsoftware.co.nz/persist_overview.php |date=2011-07-24 }}
* [http://webebenezer.net C++ Middleware Writer]

Bahasa pemrograman PHP:
* [http://www.amcgowan.ca/blog/computer-science/object-serialization-in-php/ Object Serialization in PHP] {{Webarchive|url=https://web.archive.org/web/20100607081311/http://www.amcgowan.ca/blog/computer-science/object-serialization-in-php/ |date=2010-06-07 }}
* [http://www.unserialize.net/ Online serialize & unserialize tool with recovering capacities. Other resources about PHP serialization]
* [http://www.shauninman.com/archive/2008/01/08/recovering_truncated_php_serialized_arrays Recovering Truncated PHP Serialized Arrays]

Sistem serialisasi multi bahasa pemrograman:
* [http://code.google.com/apis/protocolbuffers/docs/overview.html Google Protocol Buffers Developer Guide] (C++, Java, Python)
* [http://avro.apache.org/ Apache Avro]


[[Kategori:Konstruksi pemrograman]]
[[Kategori:Konstruksi pemrograman]]
[[Kategori:Struktur data]]
[[Kategori:Struktur data]]
[[Kategori:Format serialisasi data| ]]
[[Kategori:Format serialisasi data| ]]

[[als:Serialisierung]]
[[ca:Serialització]]
[[cs:Serializace]]
[[de:Serialisierung]]
[[en:Serialization]]
[[es:Serialización]]
[[fr:Sérialisation]]
[[gl:Serialización]]
[[it:Serializzazione]]
[[ja:シリアライズ]]
[[nl:Serialisatie]]
[[pl:Serializacja]]
[[pt:Serialização]]
[[ru:Сериализация]]
[[sk:Marshalling]]
[[uk:Серіалізація]]
[[zh:序列化]]

Revisi terkini sejak 22 Juni 2021 06.26

Dalam konteks penyimpanan dan transmisi data pada ilmu komputer, serialisasi adalah proses pengubahan suatu objek menjadi urutan bit agar dapat disimpan pada media penyimpanan (seperti berkas komputer, atau pada memori) atau ditransmisikan melalui saluran koneksi jaringan.[1] Sewaktu rangkaian bit ini dibaca ulang sesuai dengan format serialisasinya, ia dapat digunakan untuk menciptakan klon identik semantis dari objek asalnya. Bagi banyak objek kompleks, misalnya objek yang banyak menggunakan rujukan, proses ini tidak dapat dilakukan begitu saja.

Proses serialisasi suatu objek ini dapat juga disebut pengempisan (deflating) atau penyusunan (marshalling) objek. Operasi kebalikannya, pembuatan struktur data dari rangkaian bita, adalah deserialisasi, atau disebut juga penggembungan (inflating) atau pembongkaran (unmarshalling) objek.[2]

Penggunaan

[sunting | sunting sumber]

Serialisasi digunakan sebagai:

  • Cara untuk melakukan penyimpanan objek yang lebih mudah dibandingkan menuliskan properti atas objek-objek tersebut ke dalam berkas teks, dan mengembalikannya sebagai objek.
  • Salah satu proses yang dilakukan dalam pemanggilan prosedur jarak jauh (remote procedure call), contoh, SOAP
  • Salah satu cara untuk mendistribusikan objek, khususnya dalam arsitektur berbasis komponen, contoh, COM, CORBA, dan lain-lain.
  • Salah satu cara untuk mendeteksi perubahan data dalam satu periode waktu tertentu.

Agar fungsi serialisasi dapat memberikan manfaat seperti tujuan awalnya, arsitektur perangkat lunak yang berdasar pada ketidakbergantungan harus senantiasa dikelola secara konsisten. Sebagai contoh, untuk mendapatkan kegunaan maksimum saat perangkat lunak didistribusikan, komputer yang berjalan pada sistem operasi yang berbeda harus dapat pula melakukan rekonstruksi data yang telah terserialisasi tersebut secara reliabel. Serialisasi struktur data dalam arsitektur yang independen ditujukan untuk memungkinkan data tersebut secara reliabel dibaca, direkonstruksi secara mudah pada platform-platform sistem operasi lain. Hal ini berarti data yang berasal dari prosedur konvensional yang sederhana, berunjuk kerja tinggi, yang secara langsung menyalin blok-blok memori komputer biasanya tidak akan dapat digunakan pada arsitektur yang lain.

Meskipun serialisasi memungkinkan pertukaran data antar platform secara reliabel, namun pada implementasinya serialisasi ini melanggar batasan-batasan tipe data abstrak, sehingga sangat mungkin menyertakan pula tipe-tipe data yang bersifat spesifik. Di sisi lain aspek kerugian ini sering kali dimanfaatkan oleh perusahaan pembuat perangkat lunak untuk melindungi produk perangkat lunak buatan mereka serta menghalangi kompetitor membuat produk sejenis yang kompatibel. Beberapa perusahaan bahkan menambahkan metode pengacakan atau bahkan enkripsi atas hasil data serialisasi ini.

Hanya saja interoperabilitas mensyaratkan semua aplikasi harus bisa melakukan deserialisasi atau sebaliknya melakukan serialisasi dengan dengan menggunakan format yang sama, karenanya arsitektural pemanggilan prosedur jarak jauh (remote procedure call) ataupun CORBA secara detail menyertakan spesifikasi atas format yang digunakan.

Pranala luar

[sunting | sunting sumber]

Untuk platform ASP.NET:

Bahasa pemrograman Java:

Bahasa pemrograman C:

Bahasa pemrograman C++:

Bahasa pemrograman PHP:

Sistem serialisasi multi bahasa pemrograman: